2

我在迁移 rails 2.x -> 3.2.13 时遇到问题 在某些时候,在修复了一些东西之后,我Completed 500 Internal Server Error in 76ms没有任何回溯。

发展.rb

config.consider_all_requests_local       = true
config.action_controller.perform_caching = false

为什么没有回溯以及如何解决这个问题?

4

1 回答 1

4

你可能解决了它,但我想分享我关于这个问题的几个小时调试,因为它可能非常烦人。简而言之,我遇到了同样的问题 - 500 内部服务器错误,没有任何抛出异常的日志。它只发生在动作视图模板中抛出的异常 - 任何ActionView::Template::Error异常。例如,缺少部分无效路线。

我的具体问题是使用这个 ruby​​ 统计模块:

http://derrick.pallas.us/ruby-stats/

直接在初始化器目录中,这在 rails 2.x 中效果很好。它定义Array.sum了已经在 rails 3 下定义的方法Enumerable.sum。重新定义的问题在于它Array.sum不再适用于字符串数组,这是 rails 试图用ActionView::Template::Error.source_extract方法做的事情 - 当试图提取模板中的错误源时,它使用了Enumerable.sum以错误方式重新定义的方法。因此,发生TypeError: cannot convert String into Fixnum了另一个异常,并且没有记录原始异常,也没有记录新异常。我不得不进行回溯并通过许多内部调用来查看问题出在哪里。

因此,对于没有看到 ActionView 模板中抛出的实际异常的每个人,请检查您是否没有重新定义在 rails 内部使用的 rails 方法。

于 2013-07-01T10:18:05.203 回答