【发布时间】:2014-10-03 16:58:56
【问题描述】:
我有一个 JRuby/Rails 应用程序,它包含一个用于处理 HTTP 请求的 Web 服务器、一个 MySQL 数据库和一个用于处理排队作业的 Resque worker。当我处于开发模式并且 Web 应用程序中的某些内容引发异常时,我在浏览器中得到了很好的跟踪,显示了引发的异常、引发异常的行、相关数据和堆栈回溯。
但是,当抛出异常的代码在 Resque 工作程序中执行时,我什么也得不到,即使我知道代码抛出了异常。我可以调试的唯一方法是抛出打印语句并找出在 Resque 工作人员抛出异常并崩溃之前调用最后一个打印语句的位置。
有没有办法让 Resque 工作人员吐出一个异常日志并将堆栈回溯到日志文件中(在它崩溃之前),这样我就可以看到发生了什么?
编辑-(感谢@Viren 的想法)-我不想在我的应用程序代码中乱扔开始/救援块。我将把开始/救援代码放在某个地方,以确保记录异常回溯,但我不知道把它放在哪里。
【问题讨论】:
-
为什么不为 Resque 添加单独的记录器并使用
begin rescue块捕获错误希望有所帮助 -
我不想在代码中乱扔寻找异常的开始/救援块。是否有一个中心位置,我可以将其放入一次并覆盖整个区域?
-
据我所知,你应该有一个失败的工作,也应该有一个有效的堆栈跟踪。你确定这与 jruby 无关吗?
标签: ruby-on-rails-3 debugging resque jrubyonrails