更改rake任务以在测试环境中工作

时间:2012-11-02 12:17:54

标签: ruby-on-rails testing rake fixtures

  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,并应用于测试环境。

它不起作用。有谁看到我哪里出错了?谢谢!

1 个答案:

答案 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