我在Heroku Cedar堆棧中運行rails 3.2應用程序。Heroku上的Rails rake任務:禁用在屏幕上顯示SQL日誌
當我在本地執行涉及查詢數據庫的rake任務時,屏幕日誌不會顯示SQL查詢的詳細信息。
另一方面,當我在Heroku部署的應用程序(heroku run rake ...)上運行相同的任務時,rake任務執行的每個查詢都有詳細的輸出。我想禁用顯示在屏幕上的這樣的細節。可能嗎?
謝謝你的幫助!
我在Heroku Cedar堆棧中運行rails 3.2應用程序。Heroku上的Rails rake任務:禁用在屏幕上顯示SQL日誌
當我在本地執行涉及查詢數據庫的rake任務時,屏幕日誌不會顯示SQL查詢的詳細信息。
另一方面,當我在Heroku部署的應用程序(heroku run rake ...)上運行相同的任務時,rake任務執行的每個查詢都有詳細的輸出。我想禁用顯示在屏幕上的這樣的細節。可能嗎?
謝謝你的幫助!
我建議在detached
模式下運行這些任務。這將阻止您的終端輸出,但仍然有輸出(任何寫入STDOUT
或STDERR
)到Heroku日誌文件。
這將通過運行:
heroku run:detached rake ...
有good documentation這個也爲您排憂解難。希望這是你要找的。
,如果你在你的rake任務把這個代碼可以禁用日誌:
dev_null = Logger.new("/dev/null")
Rails.logger = dev_null
ActiveRecord::Base.logger = dev_null
您可以在Rails.logger.silence
塊包裝代碼:
task thing_doer: :environment do
Rails.logger.silence { ThingDoer.call }
end
謝謝@CDub。問題是我們需要在屏幕上顯示特定的輸出。更確切地說,它是我們在部署之前運行的一個腳本,我們檢查數據庫的某些項是否具有某些狀態,並計數多少。這就像我們需要看到這個結果:「XX(計數)過程仍然打開」。但並非所有的查詢執行變得太冗長...... – idejuan
另一種方法是在運行該rake任務時對日誌進行尾部處理。您可以通過過濾「運行」任務來限制您在日誌中查找的內容。只要你寫了你想要標準輸出的結果,那應該就是你所看到的。 – CDub