当在开发模式下运行的Rails服务器上触发对method_missing的调用时,它会以StackOverflowError
消亡。这是JRuby环境中的Rails5。我们这里没有使用多线程。
行为可归纳如下:
def method_missing
并从那里开始产生正确的行为(例如fail 'oh noes.'
将打印预期的错误。)method_missing
中调用super(* args)将再次产生StackOverflowError
。debugger
正上方拨打super
,点击next
即可显示以下呼叫:
gems/actionpack-5.0.1.rc2/lib/action_controller/metal/rescue.rb:22
request.env['action_dispatch.show_detailed_exceptions'] ||= show_detailed_exceptions?
gems/actionpack-5.0.1.rc2/lib/action_controller/metal/rescue.rb:23
rescue_with_handler(exception) || raise
backtrace
或info stack
获取跟踪的尝试都将导致StackOverflow。我们看到this commit中的Rails中删除了一些代码。实际上,将删除的代码放回(仅用于测试目的)可以解决问题。
你认为这是一个铁轨错误吗?