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 に答える