2010-06-11 56 views
1

我想安裝一個記錄器,以便我可以轉儲所有已執行的SQL應用程序。問題是,這種記錄器與在測試模式下很快初始化的AbstractAdapter相關聯,因此不能由我的初始化代碼設置。 我試圖把將單元測試中的Rails應用程序記錄到日誌中

ActiveRecord::Base.logger = MyCustomLogger.new(STDOUT) 

environment.rb像有人建議的結束,但在控制檯環境(由script/console踢)正在運行時,當沒有在測試模式下運行它僅適用。 我不知道是否有任何方式來配置這樣的記錄器,所以我一定會在任何環境下(測試,開發,生產,控制檯)調用

回答

0

就我所能找到的最好的方法是把這樣的代碼放在initializers文件夾中。這樣,無論運行環境如何,記錄器總是正確安裝。不,在我的Mac OS X Rails 2.3.2上的紅寶石1.8.7,如果我把ActiveRecord::Base.logger=...裏面的environment.rb然後記錄器沒有正確安裝,因爲記錄器,Sql連接用於轉儲SQL安裝和緩存之前。

2

創建記錄器config/environment.rb應該工作。我得到在標準輸出SQL日誌記錄,當我運行單元測試,如果我把下面的行要麼config/environment.rbconfig/environments/test.rb

ActiveRecord::Base.logger = Logger.new(STDOUT) 

MyCustomLogger類做什麼特別的事情,導致它在測試失敗?如果您改用Logger.new(STDOUT),它會更好嗎?

0

在測試/ test_helper.rb中,裝車配置/ environment.rb中之前,添加:

RAILS_DEFAULT_LOGGER = MyCustomLogger.new(STDOUT) 

相關的代碼在railties 2.3 railties/lib/initializer.rb#L35。不確定如何使用Rails 3.0來完成它。它看起來像你需要調用Rails#logger =,但我還找不到一個好地方。

相關問題