0
我想從rake任務中刪除位於mongoid.yml中的所有數據庫會話。我正在使用rails4和mongoid4。這裏是我的mongoid.yml:如何從rake任務中刪除位於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
或耙db:mongoid:drop
命令他們只刪除缺省數據庫。所以我已經找到了它,並找到一個完美的軌道控制檯上運行的解決方案。
在執行rails console
之後,我只需將下面的代碼放在控制檯上並按下回車鍵即可。
::Mongoid::Threaded.sessions.values.each do |session|
p session.drop
end
正如我所說,這就像一個軌道控制檯上的魅力。但是當我將這段代碼注入任何rake任務時,它不起作用。
namespace :human do
desc 'Resets databases'
task :reset => :environment do
::Mongoid::Threaded.sessions.values.each do |session|
p session.drop
end
end
讓代碼適用於任何rake任務的正確方法是什麼?
定義*不起作用*。 –
我不明白你說什麼。 – zeitnot
*你在rake任務中不能工作*是什麼意思?什麼不行?它怎麼不工作?然後會發生什麼? –