namespace :fixtures do
namespace :load do
task :prepare => :environment do
ENV['FIXTURES_PATH'] = "spec/fixtures"
ENV['RAILS_ENV'] ||= "test"
puts ENV.inspect
Rake::Task["db:fixtures:load"].invoke
end
end
end
我已将此添加到./lib/tasks中的special.rake文件中,以使rake db:fixtures:load命令应用于spec / fixtures目录中的夹具,并应用于测试环境。
没用有人看到我哪里出问题了吗?谢谢!
最佳答案
您需要重新连接到数据库。就像是
ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations["test"])
在已经加载环境之后更改ENV ['RAILS_ENV']不会执行任何操作。
如果您在更改ENV之后加载环境任务,也可能会起作用,但是对此不确定:
task :prepare do
ENV['RAILS_ENV'] ||= "test"
Rake::Task["environment"].invoke
Rake::Task["db:fixtures:load"].invoke
end
关于ruby-on-rails - 更改rake任务以在测试环境上工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13195097/