Je sais que vous pouvez faire quelque chose comme ceci pour charger l'environnement rails:Les tâches ActiveRecord Migration & Rake ne chargeant pas les modèles?
task :my_task => :environment do
MyModel.find(1)
end
Mais il semble que le code dans les modèles ne sont pas exécutés. J'utilise acts_as_audited, et il y a une belle fonction de classe qui récupère tous les modèles qui sont audités. L'appel ressemble à:
Audit.audited_classes
Et pour spécifier un modèle comme auditable, vous ajoutez simplement cette ligne à vos modèles:
acts_as_audited
Lorsque audited_classes est exécuté dans la console, je reçois un tableau de toutes mes classes auditées; Cependant, lorsque je l'exécute à partir d'une tâche de rake (ou de migration), j'obtiens un tableau vide.
[EDIT]
Après avoir joué un peu plus, je remarque que si les modèles ne sont pas réellement chargés jusqu'à ce qu'ils soient référencés (à savoir le chargement paresseux). Je pensais que mettre les cache_classes à true dans la config réglerait cela, mais ils semblent toujours être paresseux chargés.
Une solution possible serait de faire défiler tous les modèles (comme expliqué dans cet article: Is there a way to get a collection of all the Models in your Rails app?), mais cela semble un peu hacky, et j'espérais qu'il y aurait une manière plus propre.
Des idées?
Merci
Oui ... Je faisais déjà, mais son hack ... j'ai déposé un billet ici: https://github.com/rails/rails/issues/5148 – gmoniey
cela ne fonctionne pas avec les modèles à aires de noms, je ne pense pas. avez-vous déjà couru dans un usecase namespaced? – jay