2011-08-22 61 views
4

由於sql注入漏洞,我已更新到3.0.10。在我更新之後,我運行了測試,並且所有人都開始將以上錯誤與以下幾行一起拋出。無法從backtrace RSPEC與rails找到匹配行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

您使用的是什麼版本的rspec?你在使用數據庫事務回滾嗎? –

+0

rspec和rspec rails都是2.6.0。我剛剛發現問題出在了factory_girl身上。當我創建工廠時,出現堆棧級別太深的錯誤 – Part

+0

您可以嘗試設置'config.use_transactional_fixtures = false'它應該在您的spec_helper.rb中。 database_statements.rb的第153行處理事務,這可能是問題。 –

回答

1

,同時運行黃瓜功能從Rails的升級我的項目2.3.83.2.2時,我已經經歷了類似的錯誤。我幾乎沒有辦法知道你可以找出這個錯誤的堆棧跟蹤。

在我的情況下,真正的問題是將一個名爲rest-client的庫雙重包含在一個插件中,一次作爲寶石。它在我的Gemfile中,以及在我的供應商/插件目錄中。也許你可以快速檢查一下,如果你的項目有這樣的事情。

我通過在我的代碼的幾個地方使用'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 

這對我來說至少工作,希望它可以幫助你。

相關問題