由于sql注入漏洞,我已更新到3.0.10。在我更新之后,我运行了测试,所有这些测试都开始抛出上述错误以及以下几行。
Failure/Error: Unable to find matching line from backtrace
SystemStackError:
stack level too deep
# /home/part/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.10/lib/active_record/connection_adapters/abstract/database_statements.rb:153
答案 0 :(得分:1)
在将项目从Rails 2.3.8
升级到3.2.2
时,我在运行Cucumber功能时遇到了类似的错误。我几乎没有办法知道你可以找到这个错误的堆栈跟踪。
在我的例子中,真正的问题是双重包含一个名为rest-client的库,一次作为插件,一次作为gem。它在我的Gemfile中,以及我的vendor / plugins目录中。也许你可以快速检查你的项目是否有类似的东西。
我通过在代码的几个地方使用'raise'的繁琐过程发现了这一点。在导致此错误的rspec语句的执行路径中,将raise方法调用放在不同的位置,例如
raise StandardError, 'code did reach here'
通过一些二进制搜索逻辑,可以让您接近罪魁祸首代码。一旦你在那里,使用以下构造来获得堆栈跟踪。
begin
# culprit code is here
rescue Exception => e
puts e.message
puts e.backtrace.inspect
end
至少对我有用,希望它对你有帮助。