Environnement RoR en script autonome Ruby
-
22-07-2019 - |
Question
Je souhaite exécuter un script Ruby autonome dans lequel j'ai besoin de mon environnement RoR. Plus précisément, j'ai besoin que mes modèles étendent ActionMailer et ActiveRecord. J'ai également besoin de lire la configuration de la base de données à partir de mon database.yml. Comment puis-je m'y prendre?
La solution
Le moyen le plus simple est de changer le shebang de votre script en:
#!/usr/bin/ruby
à
#!/path/to/your/rails/script/runner
Et voilà, votre script sera exécuté avec l’environnement complet de rails chargé. Vous pouvez également exécuter votre script en tant que ./ my_script -e production
pour l'exécuter avec la base de données de production.
Autres conseils
Découvrez ce sujet: Comment puis-je exécuter des tâches Ruby qui utilisent mes Rails modèles?
En gros, cela revient à:
require "#{ENV['RAILS_ROOT']}/config/environment.rb"
Amusez-vous!
Je pense que le meilleur moyen de le faire est d'en faire une tâche de commission.
# lib/tasks/mystuff.rake
desc 'do my stuff'
task :my_stuff => [:environment] do
# do my stuff
end
La strophe [: environment] charge l'environnement des rails.