为什么在Rails 5.1.4中Ruby 2.5.0没有显示堆栈跟踪?

13

以下是我在仅更改 Ruby 版本时遇到的错误的 Rails 服务器日志的两个示例。

Ruby 2.4.2,Rails 5.1.4,Puma 3.11.0:

NoMethodError - undefined method `recent' for #<Event:0x00007f08507bf8b8>:
  path/to/show.html.haml:50:in `block in _path_to_show_html_haml___4224769623360811234_28796540'
  path/to/show.html.haml:30:in `_path_to_show_html_haml___4224769623360811234_28796540'

Ruby 2.5.0Rails 5.1.4Puma 3.11.0:

NoMethodError - undefined method `recent' for #<Event:0x00007f8ccc1b9508>:

我该如何重新启用Rails日志中的堆栈跟踪?看起来没有办法查看要查看的文件/行号。

为了协助调查,我将以下内容添加到我的ApplicationController

rescue_from Exception do |exception|
  byebug
  1+1
end

Ruby 2.4.2

(byebug) exception.backtrace
# A very large array of paths appears

Ruby 2.5.0

(byebug) exception.backtrace
nil

1
Ruby 2.5的回溯风格可能会让回溯显示方法感到困惑。backtrace方法的输出是否有任何更改? - tadman
1
很好,exception.backtrace 显示为空。我会更新我的问题以反映这一点。 - ardavis
这个方法进行了一些更改,所以也许与此有关? - tadman
1个回答

25

binding_of_caller gem 在 Gemfile 中已经过时。我将它从 0.7.3 升级到了 0.8.0 版本,问题解决了。


谢谢你,我已经寻找原因很长时间了。 - phyzalis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接