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


120

カスタムレーキタスク」によると:

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

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

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


新しい構文を確認してください。stackoverflow.com/ questions / 12493337 /…
Jahan

回答:


120

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

カスタムRakeタスク」を参照してください。


4
ソースのどこに定義されていますか?Rakeタスクの場所を見つけ、 'app:environment'に依存する空のタスク定義を見つけましたが、app:environmentタスクの定義を見つけることができません。 github.com/rails/rails/blob/master/railties/lib/rails/tasks/...
odigity


41

Rails環境に読み込まれるので、実際にモデルを使用したり、使用しないこともできます。そうでなければ、それはそれらのことについて何も知りません。

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


35

インクルード=> :environmentすると、Rakeにアプリケーション環境全体をロードするように指示し、関連するタスクにクラス、ヘルパーなどに:environmentアクセスできるようになります。がないと、これらの追加機能にアクセスできません。

また、=> :environmentそれ自体は例えば、どのような環境関連の変数利用できるようにしていないenvironment@environmentRAILS_ENV、など


タスクのドキュメントの方法が単純すぎて理解できません。
Albert.Qing 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.