「 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
が見つかりませんでした。
タスクを環境タスクに依存させることで、モデル、そして実際には環境全体にアクセスできます。これにより、run rake Rails_ENV=staging db:migrate
。
「 Custom Rake Tasks 」を参照してください。
Rails環境でロードするので、実際にモデルを使用することができます。そうでない場合は、これらのことについてはわかりません。
したがって、_puts "HI!"
_を実行したタスクを作成した場合、_:environment
_タスクを依存関係に追加する必要はありません。しかし、User.find(1)
のようなことをしたい場合は、それが必要になります。
_=> :environment
_を含めると、Rakeがアプリケーション環境を完全にロードするようになり、クラス、ヘルパーなどにアクセスできるようになります。_:environment
_がなければ、これらの追加機能にアクセスできません。
また、_=> :environment
_自体は、環境関連の変数を使用可能にしません。 environment
、_@environment
_、_Rails_ENV
_など.