結論
environmentタスク
→ xxxタスク(実行する処理)
の順に処理が実行される。
task xxx: :environment do
実行する処理
end
仕組み
- taskの引数にはハッシュが渡っており、key-value相当(
{ xxx: environment }
)の関係にある。 - rakeが提供する
Prerequisites
機能によって、valueのタスクを事前に実行できる。 - Hashリテラルのため、以下のように書いても動作する。
task :xxx => :environment do
実行する処理
end
task xxx: [:environment] do
実行する処理
end
environmentタスク呼び出しの流れ
railties/lib/rails/application.rb
run_tasks_blocks 呼び出し
↓
task :environment を実行
↓
require_environment! 呼び出し
↓
config/environment.rb をrequire
↓
config/environment.rb
config/application.rb をrequire
↓
config/application.rb
ENVで環境に応じた変数等を展開する(*)
(*)の内容はプロジェクトに依存するが、
上記の場合、実行環境(prd, stage, dev, test等)ごとの値を展開してからメインタスクを実行させることが可能になる。