Я пишу проект в настоящий момент в Ruby, который использует камень ActiveRecord для взаимодействия с базой данных, и я пытаюсь зарегистрировать всю активность базы данных с помощью атрибута ActiveRecord::Base.logger
со следующим кодомRuby Daemons, вызывающие LogRecord Logger IOError
ActiveRecord::Base.logger = Logger.new(File.open('logs/database.log', 'a'))
Это прекрасно работает для миграции и т.д. (которые по какой-то причине, как представляются, требуют, чтобы протоколирования быть включены, поскольку это дает ошибку NilClass, когда он отключен), но когда я пытаюсь запустить проект, который включает в себя резьбовой демон, призывающий к ActiveRecord объект сценарий не работает со следующей ошибкой
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/logger.rb:504:in `write': closed stream (IOError)
Любые идеи о том, как решить эту проблему, будут очень признательны. На данный момент я начал смотреть через другой код, чтобы увидеть, если у людей есть другие способы реализации ActiveRecord рубок в более потокобезопасного образе
Thanks
Патрика
Будет ли проблема проистекает из синхронизации? Не могли бы вы использовать Rails BufferedLogger и посмотреть, устранила ли это проблему? –
Мы закончили тем, что написали простое приложение регистрации для наших нужд, используя DRB, который обрабатывал ошибки для всех наших потоков. –