rakeタスクとは
ファイルに記述した処理をコマンドラインから実行する機能です。
ユーザーの属性に応じてステータスを変更する、CSVデータをインポートする、任意のタイミングでユーザーにメールを送る、などなど様々な用途で使われます。
基本的な使い方
タスクファイルを生成
$ rails g task qiita_task
実行したい処理を記述
namespace :qiita_task do
desc 'hello worldします'
task :hw do
puts 'Hello World'
end
end
実行
$ rake qiita_task:hw
その他
タスクの中にDBに接続する処理が含まれる場合
DBに接続する場合、以下のようにenvironment
と記述する
namespace :qiita_task do
desc '最近登録したユーザーにメールを送信'
task send_email_to_recent_users: :environment do
recent_users = User.where('updated_at <= ?', Time.zone.parse('2020/09/08 15:50:00'))
recent_users.each do |ru|
ru.send_email
end
end
end
本番環境で実行する
プロジェクトのルートディレクトリ(Gemfileとかがあるとこ)で、RAILS_ENV=production
をつけて実行。
$ rake qiita_task:hw RAILS_ENV=production
タスク一覧を表示
デフォルトで定義されているタスクと、自分が作成したタスクがずらっと表示されます。
$ rake -T