2
  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 目录中的夹具,并应用于测试环境。

它不工作。我哪里出错了?

4

1 回答 1

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
于 2012-11-02T12:21:44.223 回答