ruby-on-rails 不带中间件的Rails异常通知

qyzbxkaa  于 2023-05-02  发布在  Ruby
关注(0)|答案(2)|浏览(192)

我有一个Rails 4应用程序,它完全由whenever gem生成的cron上的rails运行程序组成。
如果在运行期间发生任何异常,我希望得到通知。exception_notification gem只作为rack中间件运行(仅限web请求),所以它不处理rails runner。
有什么想法吗?我希望通过电子邮件或slack得到通知。

jvlzgdj9

jvlzgdj91#

您可以在救援块中使用ExceptionNotifier.notify_exception发送通知。
例如:

def rescue_exception(data)
  yield
rescue => e
  ExceptionNotifier.notify_exception(e, data: data)
end

every :hour do
  rescue_exception(runner: 'SomeModel.some_method') do
    runner "SomeModel.some_method"
  end
end

请参阅 www.example.com 。使用data散列传递有关上下文的其他信息。

44u64gxh

44u64gxh2#

你确定这有用吗?
当我输入这段代码,然后让bundle exec whenever预览生成的crontab时,我有以下代码:

0 * * * * /bin/bash -l -c 'cd /myproject && source $HOME/.bash_profile && script/rails runner -e production '\''SomeModel.some_method'\'' >> log/whenever.log 2>> log/whenever_error.log'

我认为runner方法只是生成crontab语法,所以在代码执行期间不会调用rescue_exception方法,而只是在生成crontab时调用。
有没有人有其他的解决方案,请?Thank you:)

相关问题