我正在經歷一些奇怪的問題,其中我的delayed_jobs在生產中失敗。最後我把它縮小到記錄器。如果我註釋掉我的日誌函數調用,一切正常。但是,如果我嘗試登錄,我得到這個在delayed_job的處理程序:日誌在延遲作業的生產中不起作用
--- !ruby/struct:Delayed::PerformableMethod
object: AR:User:1
method: :load_and_update_without_send_later
args: []
| closed stream
/opt/ruby/lib/ruby/1.8/logger.rb:504:in `write'
/opt/ruby/lib/ruby/1.8/logger.rb:504:in `write'
/opt/ruby/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/opt/ruby/lib/ruby/1.8/logger.rb:496:in `write'
/opt/ruby/lib/ruby/1.8/logger.rb:326:in `add'
/opt/ruby/lib/ruby/1.8/logger.rb:374:in `info'
/home/rails/myapp.com/releases/20100203203031/app/models/gmail.rb:35:in `log'
我的記錄是這樣的:
@@error_log_file = File.open("#{RAILS_ROOT}/log/error.log", 'a')
@@error_log_file.sync = true
def log(msg)
msg.each do |line|
line = "#{Time.now.strftime('%H:%M:%S')} #{line}"
@@error_log_file.info(line) # this is line 35 where it's failing
puts line
end
end
如果我註釋掉行「@@ error_log_file.sync =真」 ,它也可以。
這是一個延遲的工作問題,或者它可能與我的日誌目錄是一個符號鏈接(由標準capistrano部署設置)有關嗎?
也沒有什麼被寫入我的error.log文件,沒有什麼被寫入delayed_job.log。完全難倒...
因此,在做了更多的測試後,它看起來像「config.cache_classes = true」是導致這些錯誤發生的生產環境設置。這是否給任何人新鮮的想法,爲什麼發生?即使使用config.cache_classes = false,delayed_job也不會寫入生產環境中的log/delayed_job.log。 – 2010-02-04 01:29:20