如何讓 whenever 排程執行的程式,噴錯時寫到 Rollbar
- Backend
- 31 Oct, 2020
串接 Rollbar 的好處是可以方便監控伺服器噴錯。但是在使用 whenever 排程時執行程式時,有辦法在噴錯時也寫到 Rollbar 嗎?
如果是使用 sidekiq,無論是使用 include Sidekiq::Worker 產生的 worker,或是使用 sidekiq 當成 queue_adapter 的 ActiveJob,Rollbar 都有串接。另外像是 rake 也是有串接的。詳細可以參考 plugins 原始碼以及文件。
config/schedule.rb 寫起來會像是這樣,這三種都是噴錯時會寫到 Rollbar 的:
every 1.day, at: '2:00 am' do
rake 'my:rake:task'
runner 'MyWorker.perform_async'
runner 'MyJob.perform_later'
end
但如果只是 Model 內的 class method,也可以在 whenever 串接 Rollbar 嗎?
可以的,Rollbar 提供了一個 rollbar-rails-runner 可以用,如果要寫進 config/schedule.rb 看起來會長這樣,需要自己定義 job_type:
job_type :rollbar_runner, "cd :path && :environment_variable=:environment bundle exec rollbar-rails-runner ':task' :output"
every 1.day, at: '2:00 am' do
rollbar_runner 'MyModel.task_to_run'
end