rakeタスク

Railsで定期的に実行したい処理は、lib/tasksにrakeタスクを作って実行することが多い。定期的なメンテナンスやCSVファイルをインポートする際にアプリケーションを起動せず、ターミナルなどのコマンドプロンプトで処理を実行できる。

 

1、rakeタスクファイルをつくる

$ rails g task task_sample

  lib/tasksにrakeタスクにtask_sample.rakeができる。これに処理内容を記述していく

 

2、処理の記入 

 namespace :task_sample do
desc "ユーザーのゴミ箱をリセットする(処理内容の説明)"
task :reset_dust_box: :enviroment do   #タスク名
User.update_all(dust_box: false)  #Userテーブルのdust_boxカラムをfalseにする
end
end

 これで処理の記入は完了。例としてゴミ箱を空にする機能にしてみる

 あとはターミナルで処理を実行する。

 

3、ターミナルで実行

 

$ rake -T     #タスクの存在を確認
$ rake task_sample: reset_dust_box #タスクの表示
$ rake task_sample: reset_dust_box   #実際にタスクの実行

 

ターミナル上からタスクの実行ができる。わざわざアプリを起動せずにタスクが実行できるのが利点である。

現場ではよくCSVファイルの読み込みに使うとのことなので、大事だなぁとおもいました。

 

参考URL

https://qiita.com/yoshito410kam/items/26c3c6e519d4990ed739

https://qiita.com/suzuki_koya/items/787b5562d2ae1a215d94

 勉強になりました。ありがとうございました。