我正在将应用程序从 Ruby 1.9.2 上的 Rails 3.1 升级到 Ruby 1.9.3 上的 Rails 3.2。当我逐步浏览正在开发的应用程序时,一切似乎都很好。我对 rake test:units 没有任何问题。
但是当我运行 rake test:functionals 时,我的一个控制器中出现“堆栈级别太深错误”。
只为那个控制器运行测试,一切都很好:
ruby -Itest test/functional/administrators_controller_test.rb
这是完整的错误文本(我已经安装了稍微漂亮的输出):
ERROR (0:00:00.012) comes first
stack level too deep
@ /usr/local/rvm/gems/ruby-1.9.3-p194@rails-3.2/gems/actionpack-3.2.8/lib/abstract_controller/layouts.rb:358
我确定我只是个白痴,但我对如何从框架内部获取堆栈跟踪一无所知。运行 rake test:functionals --trace 会产生相同的错误和相同的输出。我还将 config.log_level 更改为 :debug,并且取消了 Rails.backtrace_cleaner.remove_silencers 的注释!在 config/initializers/backtrace_silencers.rb 中。
我可以运行其他 rake 任务,并且 rake test:units 通过了所有测试。
有人有线索吗?我可以用一个。