Je suis en train d'écrire un projet en Ruby qui utilise la gemme ActiveRecord pour l'interaction de base de données et j'essaye de consigner toute l'activité de base de données en utilisant l'attribut ActiveRecord::Base.logger
avec le code suivantRuby Daemons causant ActiveRecord logger IOError
ActiveRecord::Base.logger = Logger.new(File.open('logs/database.log', 'a'))
Cela fonctionne bien pour les migrations etc (qui, pour une raison quelconque, semblent exiger que l'exploitation soit activée, car cela donne une erreur NilClass quand il est désactivé) mais lorsque je tente d'exécuter le projet qui comprend un démon fileté appelant le ActiveRecord objet le script échoue avec l'erreur suivante
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/logger.rb:504:in `write': closed stream (IOError)
Des idées sur la façon de résoudre ce problème seraient grandement appréciées. Pour le moment, j'ai commencé à regarder à travers un autre code pour voir si les gens ont d'autres moyens de mise en œuvre de l'exploitation forestière ActiveRecord dans un plus thread-safe mode
Merci
Patrick
Est-ce que la tige de problème de synchronisation? Pourriez-vous utiliser BufferedLogger de Rails à la place, et voir si cela a résolu le problème? –
Nous avons fini par écrire une simple application de journalisation pour nos besoins en utilisant DRB qui traitait les erreurs pour tous nos threads –