Entorno RoR en script independiente Ruby
-
22-07-2019 - |
Pregunta
Quiero ejecutar un script ruby ??independiente en el que necesito usar mi entorno RoR. Específicamente, necesito que mis modelos extiendan ActionMailer y ActiveRecord. También necesito leer la configuración de la base de datos desde mi database.yml. ¿Cómo lo hago?
Solución
La forma más fácil es cambiar el shebang de su script de:
#!/usr/bin/ruby
a
#!/path/to/your/rails/script/runner
Et voilà, su script se ejecutará con el entorno de rieles completo cargado. También puede ejecutar su script como ./my_script -e production
para que se ejecute con la base de datos de producción.
Otros consejos
Mira este hilo: ¿Cómo ejecuto las tareas de Ruby que usan mis rieles? modelos?
Esencialmente se reduce a:
require "#{ENV['RAILS_ROOT']}/config/environment.rb"
¡Diviértete!
Creo que la mejor manera de hacer esto es hacerlo una tarea de rastrillo.
# lib/tasks/mystuff.rake
desc 'do my stuff'
task :my_stuff => [:environment] do
# do my stuff
end
La estrofa [: environment] carga el entorno de los rieles.