Ruby守护程序导致ActiveRecord记录器IOError

Pat*_*rty 5 ruby activerecord daemons ioerror

我正在Ruby中编写一个项目,它利用ActiveRecord gem进行数据库交互,我试图使用ActiveRecord::Base.logger以下代码使用该属性记录所有数据库活动

ActiveRecord::Base.logger = Logger.new(File.open('logs/database.log', 'a'))
Run Code Online (Sandbox Code Playgroud)

这适用于迁移等(由于某种原因似乎需要启用日志记录,因为它在禁用时会出现NilClass错误)但是当我尝试运行包含调用ActiveRecord对象的线程守护程序的项目时,脚本会失败并且跟随错误

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/logger.rb:504:in `write': closed stream (IOError)
Run Code Online (Sandbox Code Playgroud)

任何关于如何解决这个问题的想法将不胜感激.目前我已经开始查看其他代码,看看人们是否有其他方式以更加线程安全的方式实现ActiveRecord日志记录

谢谢

帕特里克

Pat*_*rty 2

事实证明,要使迁移起作用,ActiveRecord::Base.logger变量不能为零,这解释了问题的前半部分。尽管当使用文件而不是 STDERR 时,我还无法修复 IOError。