2015-05-25 104 views
0

我做了很多空間查詢,每次運行查詢時都會以日誌形式轉儲大量文本。這極大地減慢了我的節目。現在ActiveRecord :: Base.silence {}消失了,我該如何恢復該功能?

我被迫從'4.0.0'更新到'4.1.2',並且ActiveRecord::Base.silence已被完全棄用,因爲它不起作用。下面是用來工作

ActiveRecord::Base.silence do 
    noisy_query 
end 

當我嘗試這個現在,我得到這個錯誤....

ArgumentError: wrong number of arguments (0 for 1) 
from /Users/davidddouglas/.rvm/gems/ruby-1.9.3-p551/gems/activesupport-4.1.2/lib/active_support/core_ext/kernel/reporting.rb:82:in `capture' 

在4.0.0它發出棄用警告,現在的腳本只是沒有按」工作。奇怪的是,該函數仍然聲明,它只是不工作了,並期望某種參數。我試圖傳遞nil和得到這個錯誤:

NoMethodError: undefined method `reopen' for nil:NilClass 

我正在尋找一種方式來猴補丁的舊功能回到我的計劃,讓我的腳本重新工作。不要太擔心最佳實踐,因爲這是一個內部使用的應用程序,只有很少到沒有前端和0個用戶,而不是我自己。

感謝

回答

1

silence移動到core extension on logger

從他們的榜樣,

logger = Logger.new("log/development.log") 
logger.silence(Logger::INFO) do 
    logger.debug("In space, no one can hear you scream.") 
    logger.info("Scream all you want, small mailman!") 
end 
+0

不,我真的不在乎這一點,因爲我從來沒有分析我的日誌,但將'Logger.new(「日誌/ development.log」)'抹去我的以前的日誌文件? –

+0

不,它只是實例化一個新的'Logger'對象來追加到你指定的文件。如果出現混淆,那'new'只能這樣運行。您可能想要使用在引導時配置的'Rails.logger'。 –

+0

沒有爲我工作,出現錯誤:'NoMethodError:未定義的方法'重新打開爲零:NilClass' –

相關問題