对于这个特殊的任务,你只需要改变数据库连接,从而亚当指出的那样,你可以这样做:
namespace :db do
namespace :test do
task :reset do
ActiveRecord::Base.establish_connection('test')
Rake::Task['db:drop'].invoke
Rake::Task['db:create'].invoke
Rake::Task['db:migrate'].invoke
ActiveRecord::Base.establish_connection(ENV['RAILS_ENV']) #Make sure you don't have side-effects!
end
end
end
如果你的任务更加复杂,你需要ENV的其他方面,你是最安全产生一个新的耙过程:
namespace :db do
namespace :test do
task :reset do
system("rake db:drop RAILS_ENV=test")
system("rake db:create RAILS_ENV=test")
system("rake db:migrate RAILS_ENV=test")
end
end
end
或
namespace :db do
namespace :test do
task :reset do
if (ENV['RAILS_ENV'] == "test")
Rake::Task['db:drop'].invoke
Rake::Task['db:create'].invoke
Rake::Task['db:migrate'].invoke
else
system("rake db:test:reset RAILS_ENV=test")
end
end
end
end
您可能只能够`需要environment'`的“配置/重装代替它。 – ealdent 2009-07-07 03:13:22
什么黑客,像冠军一样工作。 – 2009-07-07 03:15:32
它似乎是没有要求或负载耙任务... – 2009-07-07 03:17:35