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目录中的fixture,并应用于测试环境。
它不起作用。有谁看到我哪里出错了?谢谢!
答案 0 :(得分:3)
您需要重新连接到数据库。像
这样的东西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