我有一个简单的rails应用程序,带有一些控制器和一些rake任务。一些任务由配置了whenever gem的cron执行。Rake任务中的Rails异常通知器
我的一个任务,每天执行,有时它抛出一个异常,默认情况下,我收到由cron这个警告
rake aborted!
undefined method `parameterize' for nil:NilClass
Tasks: TOP => mailboxes:clean_processed
(See full trace by running task with --trace)
我想调试所发生的事情,为此我刚刚安装了此exception notification创业板这条线在我Gemfile
gem "exception_notification", "~> 2.4.1", :require => 'exception_notifier'
与
配置它在我的application.rb
文件
由于这个gem是一个机架中间件,它只适用于web请求而不适用于rake任务。我想启用它也用于耙子任务,我发现this gist哪些工作。
它的工作原理,但它不会干,我需要重复该方法的宝石配置,我也需要改变我所有的耙任务附上自己的块中的语句作为
exception_notify { actual_task_code }
有什么解决这个问题的更好方法?
P.S.如果我需要更改通知宝石将不会是一个问题,因为我只添加了几行代码到我的项目中。
P.P.S.我知道我也可以更改crontab中的耙线以添加--trace
选项,但我不喜欢该解决方案,导致异常通知程序imho是一个更好的解决方案,它也可以在Web代码中提供帮助。
更新我刚发现这个相关的问题:exception_notification for delayed_job但这两个答案都使用类似的技巧。
我要去尝试与像减速板(原名黾)或特殊的在线服务,但他们两人都是有偿服务......
更新2:我试过Airbrake App,很不错的应用程序,但它遭受同样的问题,我仍然需要破解Rakefile来通知rake任务的异常。然而,黑客是少干,因为你只需要验证码:
# notify exceptions
def exception_notify
yield
rescue Exception => exception
HoptoadNotifier.notify exception
raise exception
end
没有必要重复任何配置参数。我认为我不能做得比这更好,以获得有关rake任务异常的通知。
要启用记录Rake错误,您需要将'''config.rescue_rake_exceptions = true''行添加到''''conifg/initializers/airbrake.rb'''。 – KurtPreston