Tengo una aplicación Rails con algunos modelos básicos. El sitio web muestra datos recuperados de otras fuentes. Entonces necesito escribir un script de Ruby que cree nuevas instancias en mi base de datos. Sé que puedo hacer eso con los ganchos de prueba, pero no estoy seguro de que tenga sentido aquí.¿Cómo ejecuto las tareas de Ruby que usan mis modelos de Rails?
No estoy seguro de cómo debería ser esta tarea, cómo puedo invocarla o a dónde debería ir en mi árbol de fuentes (lib \ tasks?).
Por ejemplo, aquí es mi primer intento:
require 'active_record'
require '../app/models/mymodel.rb'
test = MyModel.new
test.name = 'test'
test.save
Esto falla porque no puede obtener una conexión a la base de datos. Esto tiene sentido de una manera vaga para mi cerebro novato, ya que presumiblemente Rails está haciendo todo el trabajo de magia detrás de escena para preparar todo eso. Entonces, ¿cómo configuro mi pequeño script?
¿Se da cuenta de que RAILS_ROOT no está definido hasta que environment.rb ya se haya cargado? :-) –
Orion es muy correcto. Así que edité lo anterior para buscar la variable de entorno. También podría proporcionar una ruta completa o usar una relativa a su secuencia de comandos con "# {File.dirname (__ FILE __)}/path/to/env" – csexton