我想从 rake 任务中删除位于 mongoid.yml 中的所有数据库会话。我正在使用 rails4 和 mongoid4。这是我的 mongoid.yml:
development:
sessions:
default:
database: cp1_dev
hosts:
- localhost:27017
affiliate:
database: cp2_dev
hosts:
- localhost:27017
shortener:
database: cp3_dev
hosts:
- localhost:27017
test:
sessions:
default:
database: lion_test
hosts:
- localhost:27017
options:
read: primary
max_retries: 1
retry_interval: 0
affiliate:
database: cp_test
hosts:
- localhost:27017
shortener:
database: cp1_test
hosts:
- localhost:27017
当我执行rake db:drop
或 rakedb:mongoid:drop
命令时,它们只会删除默认数据库。所以我搜索了它并找到了一个在 rails 控制台上完美运行的解决方案。
执行后,rails console
我只需将以下代码放在控制台上并按回车键。
::Mongoid::Threaded.sessions.values.each do |session|
p session.drop
end
正如我所说,这就像在 Rails 控制台上的魅力一样。但是当我将此代码注入任何 rake 任务时,它不起作用。
namespace :human do
desc 'Resets databases'
task :reset => :environment do
::Mongoid::Threaded.sessions.values.each do |session|
p session.drop
end
end
让该代码适用于任何 rake 任务的正确方法是什么?