📘
Railsで定期処理を簡単にやりたい時はcloudflare workersでcron回すと楽
小ネタ
知ってる人にとっては当たり前だと思いますが、意外と当たり前すぎて逆に思い浮かばかった人に最近出会ったのでメモしておきます
定期的に処理したい
Railsで定期処理する場合はOS側のcronを回したり何らかのgemを使ったりすると思うのですが、
別プロセスを建てるかAPPサーバーに同居するか、どちらの場合でも手間が増えるので個人が趣味でサクッとやるには重いですよね
そこで自分がよくやるのがcloudflare workersで一定時間ごとにRailsの特定URLにPOSTを行う手法です
ざっくりイメージはこんな感じ
UUID(API KEYのようなもの)を持たせてPOSTする事でRails側で正規のPOSTかをチェックしています
あとはRails側で定期実行したい処理を書くだけです
調整が楽
こんな感じで実行結果も見れますし
何分毎とかON/OFFの切り替えもWeb上からサクッと変更できます
もう少ししっかりやるなら実行ログをRailsからSlackに投げれば監視体制もバッチリです
cloudflare workersが落ちたりすると定期実行されなくなるので厳密に必ず定期実行したいみたいなものには使えないですが、概ね動けばOK~くらいの気持ちで使うにはとても良いと思います
定期実行をサクッと出来るとデータを更新して表示する系のサービスをサクッと作れるようになるので引き出しが増えます
定期実行するのハードル高いなーと思ってた人は試してみてください
Discussion