對於這個特殊的任務,你只需要改變數據庫連接,從而亞當指出的那樣,你可以這樣做:
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