Rakeタスクについて調べてた

Railsアプリケーションでお世話になるRakeタスク、自分でも書ける。

タスクの実行

rails [task]
昔はbundle exec rake [task]とかやってた気がする。
Rails 5からrailsコマンドでタスクを実行できるようになった。

実行できるタスクの確認

rails --tasks
railsコマンドを含めたタスクコマンドを一覧で確認できる。

タスクを作る

新規に作る

rails generate task [task_name]

lib/tasks/[task_name].rakeが作成される。

タスクを書く

desc "タスクの詳細"
task :task_sample do
  puts "タスクサンプル"
end

descを書いておくと、rails --tasksコマンドでコマンドと一緒に表示される。

namespace

namespace :sample1 do
  desc "タスク1"
  task :task_sample do
    puts "sample1"
  end
end

namespace :sample2 do
  desc "タスク2"
  task :task_sample  do
    puts "sample2"
  end
end

namespaceを指定するとタスク名のグループ化が可能

$rails --tasks
...
rails sample1:task_sample                     # タスク1
rails sample2:task_sample                     # タスク2
...