herokuのschedulerを使って何らかのコントローラのアクションを実行する
毎日実行する定期処理はschedulerが便利。
Railsプロジェクト内にファイルを作って、herokuで指定してあげれば、あら簡単、あなたの寝ている間にサーバーが働いてくれます。
lib/tasksにupdate.rakeを作成(ファイル名は例です)
下記の例は、ユーザーを全部取得して、UserControllerの中の何らかのアクションを実行して、その返り値を含むメールをユーザーに配信する、みたいな流れを想定しています。
ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
task update_rss: :environment do
#ユーザーを取得
users = User.all
users.each do |user|
# UserControllerを使う
users_controller = UsersController.new
# 何らかの値を返す
return_value = users_controller.your_action
# 何らかの情報をメールに渡す
info = {}
info["name"] = user.user_name
info["val"] = return_value
# メールを送る
UserMailer.rss_update(info, user).deliver
end
end
end
task update_rss: :environment do でしていしているタスク名がrakeで実行する時に使う名前になります。
herokuのschedulerの設定はこんな感じ。
あとは時間を指定してあげれば、定期処理が動きます。
最短は10分なので、テストにちょっと時間がかかりますね。