2013-11-27 63 views
3

我在Heroku Cedar堆棧中運行rails 3.2應用程序。Heroku上的Rails rake任務:禁用在屏幕上顯示SQL日誌

當我在本地執行涉及查詢數據庫的rake任務時,屏幕日誌不會顯示SQL查詢的詳細信息。

另一方面,當我在Heroku部署的應用程序(heroku run rake ...)上運行相同的任務時,ra​​ke任務執行的每個查詢都有詳細的輸出。我想禁用顯示在屏幕上的這樣的細節。可能嗎?

謝謝你的幫助!

回答

1

我建議在detached模式下運行這些任務。這將阻止您的終端輸出,但仍然有輸出(任何寫入STDOUTSTDERR)到Heroku日誌文件。

這將通過運行:

heroku run:detached rake ...

good documentation這個也爲您排憂解難。希望這是你要找的。

+0

謝謝@CDub。問題是我們需要在屏幕上顯示特定的輸出。更確切地說,它是我們在部署之前運行的一個腳本,我們檢查數據庫的某些項是否具有某些狀態,並計數多少。這就像我們需要看到這個結果:「XX(計數)過程仍然打開」。但並非所有的查詢執行變得太冗長...... – idejuan

+0

另一種方法是在運行該rake任務時對日誌進行尾部處理。您可以通過過濾「運行」任務來限制您在日誌中查找的內容。只要你寫了你想要標準輸出的結果,那應該就是你所看到的。 – CDub

1

,如果你在你的rake任務把這個代碼可以禁用日誌:

dev_null = Logger.new("/dev/null") 
Rails.logger = dev_null 
ActiveRecord::Base.logger = dev_null 
0

您可以在Rails.logger.silence塊包裝代碼:

task thing_doer: :environment do 
    Rails.logger.silence { ThingDoer.call } 
end