On dirait que la réponse peut être trouvée ici: http://handyrailstips.com/tips/4-loading-observers-automatically-from-their-own-folder.
Contenu Copié à partir web.archive.org, archivé sur 2009-05-25 19:36:17
Observateurs Chargement automatique de leur propre dossier
par gavin
Observateurs sont un excellent moyen de nettoyer et de sécher vos modèles. Je les utilise beaucoup pour traiter l'envoi de mails, la consignation de messages et tout ce qui n'est pas strictement la responsabilité du modèle.
Une chose qui m'embête depuis que j'ai découvert les observateurs, c'est qu'ils ne sont pas invoqués par défaut. Au lieu de cela, vous devez indiquer explicitement quels observateurs doivent être chargés (généralement dans environment.rb)
Si vous prévoyez de charger tous vos observateurs depuis l'environnement lorsque votre application est démarrée (ce qui est probable), vous pouvez ajouter les éléments suivants à votre fichier environment.rb pour les charger automatiquement lorsque vous démarrez votre application:
# config/environment.rb
Dir.chdir("#{Rails.root}/app/models") do
config.active_record.observers = Dir["*_observer.rb"].collect {|ob_name| ob_name.split(".").first}
end
Cela semble un peu compliqué, mais tout ce que vous faites ici est simplement de trouver les noms de tous les fichiers d'observateurs dans le dossier modèles et configurer votre application pour charger chacun d'entre eux avec
config.active_record.observers =
Une autre chose qui me dérange à propos des observateurs c'est qu'ils sont stockés dans le dossier models par défaut. Si vous construisez une grande application avec plusieurs modèles et plusieurs observateurs, cela peut devenir assez encombré et déroutant. Pour contourner cela, je crée généralement un nouveau dossier dans l'app/appelé 'observateurs'. Je déplace ensuite tous les observateurs que je crée dans ce dossier.
Pour vous assurer que ce dossier est chargé au démarrage ajouter ce qui suit à environment.rb
config.load_paths += "#{Rails.root}/app/observers"
simple!
Si vous décidez d'utiliser ce ainsi que la pointe précédente sur le chargement des observateurs automatiquement, vous devrez changer le nom du répertoire que vous êtes à la recherche depuis modèles à observateurs:
# config/environment.rb
Dir.chdir("#{Rails.root}/app/observers") do
config.active_record.observers = Dir["*_observer.rb"].collect {|ob_name| ob_name.split(".").first}
end
Rappelez-vous de redémarrer votre application après avoir créé un nouvel observateur ou d'apporter des modifications à environment.rb
Pouvez-vous poster la réponse ici sur le SO? La page que vous liez n'est plus là ... –
http://web.archive.org/web/20090525193617/http://handyrailstips.com/tips/4-loading-observers-automatically-from-their- propre dossier – batkuip