前回までのあらすじ
・Railsでイベントの通知をモデリングする
・通知モデルのユニットテストを実装する
・モデル更新のブロードキャストを確認する
・開発環境でSolid Queue/Cableを使う
Solid QueueのRecurringを使って定期的なタスクを実装します。
通知モデル(Notification)の先頭の処理済み(processed)を毎秒変更する。
通知更新ジョブ(UpdateJob)を生成する。
bin/rails generate job update
処理済み(processed)変更する。
app/jobs/update_job.rb
def perform(*args)
Notification.first.update! processed: !Notification.first.processed
end
毎秒、UpdateJobを実行する。
config/recurring.yml
development:
periodic_update:
class: UpdateJob
schedule: every second
アプリサーバーを起動する。
SOLID_QUEUE_IN_PUMA=1 bin/rails server
毎秒、処理済み(processed)が更新されることを確認する。
同じ要領で10分毎(”*/10 * * * *”)に通知するジョブを実装する。
bin/rails generate job notification
app/jobs/notification_job.rb
def perform(*args)
Notification.notify
end
config/recurring.yml
development:
periodic_notification:
class: NotificationJob
schedule: "*/10 * * * *"
アプリを動かしているOSのタイムゾーンは Asia/Tokyo です。
画面で登録する時に時差を考えなくて良いように、アプリのタイムゾーンをUTCから日本時間に変更します。
config/application.rb
config.time_zone = "Tokyo"
config.active_record.default_timezone = :local
以上です。
▼この記事がいいね!と思ったらブックマークお願いします
