如何在一个rake任务中删除测试和开发数据库?

Zab*_*bba 4 ruby-on-rails ruby-on-rails-3.1

我试图从一个rake任务中删除测试和开发数据库,​​如下所示:

task :regenerate do
  Rails.env = "test"
  Rake::Task["db:drop"].invoke
  Rails.env = "development"
  Rake::Task["db:drop"].invoke
end
Run Code Online (Sandbox Code Playgroud)

测试数据库已成功删除.但是开发数据库没有被删除.

关于如何使这项工作的任何想法?

注意:这是在Rails 3.2.3上

更新:

非常奇怪,但逆转顺序有效:

task :regenerate do
  Rails.env = "development"
  Rake::Task["db:drop"].invoke
  Rails.env = "test"
  Rake::Task["db:drop"].invoke
end
Run Code Online (Sandbox Code Playgroud)

到底是怎么回事?!

zol*_*ter 5

你可以像这样写:

namespace :db do
  desc "Database custom drop"
  task :mydrop do
    system("rake db:drop RAILS_ENV=test")
    system("rake db:drop RAILS_ENV=development")
  end
end
Run Code Online (Sandbox Code Playgroud)