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/

10-12 15:51