LoginSignup
5
1

More than 1 year has passed since last update.

【Rails】Rakeタスク「task xxx: :environment do」の意味

Posted at

結論

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等)ごとの値を展開してからメインタスクを実行させることが可能になる。

参考

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1