簡體   English   中英

更改 rake 任務以在測試環境中工作

[英]Changing a rake task to work on test environment

  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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM