web-dev-qa-db-ja.com

Rakeの「環境」タスクとは何ですか?

Custom Rake Tasks 」によると:

desc "Pick a random user as the winner"
task :winner => :environment do
  puts "Winner: #{pick(User).name}"
end

私の知る限り、:winner => :environmentは、「environmentの前にwinnerを行う」ことを意味します。しかし、environmentとは何ですか?いつ使用すべきですか?

私は試した rake -Tが、リストにenvironmentが見つかりませんでした。

111
Lai Yu-Hsuan

タスクを環境タスクに依存させることで、モデル、そして実際には環境全体にアクセスできます。これにより、run rake Rails_ENV=staging db:migrate

Custom Rake Tasks 」を参照してください。

112
Sameer C

Rails環境でロードするので、実際にモデルを使用することができます。そうでない場合は、これらのことについてはわかりません。

したがって、_puts "HI!"_を実行したタスクを作成した場合、_:environment_タスクを依存関係に追加する必要はありません。しかし、User.find(1)のようなことをしたい場合は、それが必要になります。

39
MrDanA

_=> :environment_を含めると、Rakeがアプリケーション環境を完全にロードするようになり、クラス、ヘルパーなどにアクセスできるようになります。_:environment_がなければ、これらの追加機能にアクセスできません。

また、_=> :environment_自体は、環境関連の変数を使用可能にしません。 environment、_@environment_、_Rails_ENV_など.

31
Lars Levie