2014-07-10 60 views
9


我通過引入請求和響應模型來完成掛在控制器後面的一些邏輯,從而對我的控制器進行了重構,結果如下presentation。我用模塊響應和請求分別包裝所有響應和請求模型。應用程序運行完美,但是當我運行測試時,出現下面的錯誤。RuntimeError:在自動加載常量時檢測到循環依賴關係

Failure/Error: Unable to find matching line from backtrace 
RuntimeError: 
Circular dependency detected while autoloading constant Responses::FolderContentResponse 

我的目錄結構如下:
  - 應用程序/
    - 型號/
        - 反應/

注:我已經看到了問題與這個問題有關,但是,他們的問題似乎與我的相似。在我的情況下,它是隨機發生的,只有在運行測試(RAILS TEST ENV)時,應用程序才能完美運行。

module Responses 
    class ContentResponse 
    include ActiveAttr::Model 
    #some attributes 
    #some methods 
    end 
end 

module Responses 
class FolderContentResponse < ContentResponse 
end 
end 

的FolderContent響應類從ContentResponse其具有FolderContent其他內容響應使用更通用的方法繼承。

+0

你能提供一個最小的例子(如您的folder_content_response.rb文件,與不影響刪除錯誤的一切)? –

+0

@Fredrich folder_content_response.rb只是一個古老的ruby類 其中有幾個方法。我不認爲這個類的實現與爲什麼不自動加載有什麼關係。只有在運行測試時才更是如此。 我已經編輯了一些代碼離子類的問題 –

+0

Howabout content_response.rb?是否有任何代碼不在方法定義中(即在類加載時運行)? –

回答

13

這聽起來很像Xavier Noria最近發現的issue。概括地說,水豚靴子你在多線程模式的應用程序進行測試,即使設置加載所有的應用程序代碼前期沒有被激活(必須的,因爲require和朋友們不是線程)

它已經固定導軌4.2,在早期版本

config.allow_concurrency = false 

在test.rb應該做的伎倆

相關問題