※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。
Rakeタスクとは
アプリケーションを起動せず、コマンドラインから実行できるようにするためのもの
rake -T
で登録されているタスクを確認できる
下にもっとたくさん並んでいる
Rakeタスクはいつ使う?
- 定期的に実行したい処理があるとき
- 1日に1回、ユーザーの登録状況をSlackに通知する など
- 運営者がアプリの機能を利用したい場合
- メールのお知らせ機能を運営者が利用する など
Rakeタスクを作成する
利用者にメールを送信するRakeタスクを登録してみる
app/lib/tasks/notification.rakeを作成する
今回はわかりやすく「puts 'はじめての Rake task'
」を入れてみる
namespace :notification do
desc '利用者にメールを送付する'
task send_emails_from_admin: :environment do
puts 'はじめての Rake task'
end
end
この状態でrake -Tを実行してみる
登録できている!
コード | 説明 |
---|---|
namespace | 「rake ●●」に入る |
task | 「rake notification:●●」に入る |
namespace
があると、なにをどうするのかがわかりやすくなる
コードを実行してみると、「puts 'はじめての Rake task'
」が動く
rails notification:send_emails_from_admin
コマンドラインからコードが実行できるようになった
※「puts 'はじめての Rake task'
」は不要なので削除しておく
↓のjobを実行できるようにする
メールが非同期処理で送付されるように定義する
namespace :notification do
desc '利用者にメールを送付する'
task send_emails_from_admin: :environment do
NotificationFromAdminJob.perform_later('rake task test')
end
end
redis、sidekiqが起動していることを確認する
先ほどと同じように実行する
rails notification:send_emails_from_admin
foremanのログを見ると、workerが働いたことがわかる
Letter_openerを見ると、「rake task test」のメールが全ユーザー(4名)に送られている
Rakeタスクに引数を使う
#DAY11