Estoy tratando de crear una tarea de rastrillo personalizada, pero parece que no tengo acceso a mis modelos. Pensé que esto era algo implícitamente incluido con la tarea de rieles.
Tengo el siguiente código en lib / task / test.rake:
namespace :test do
task :new_task do
puts Parent.all.inspect
end
end
Y así es como se ve mi modelo principal:
class Parent < ActiveRecord::Base
has_many :children
end
Es un ejemplo bastante simple, pero me sale el siguiente error:
/> rake test:new_task
(in /Users/arash/Documents/dev/soft_deletes)
rake aborted!
uninitialized constant Parent
(See full trace by running task with --trace)
¿Algunas ideas? Gracias
ruby-on-rails
activerecord
rake
task
gmoniey
fuente
fuente
new_task
al entorno actual? ¿Cuál es el valor actual de:environment
? Google no está ayudando.new_task
, cargue el entorno (cargue sus modelos) primero y luego ejecute new_task.es posible que deba requerir su configuración (que debe especificar todos sus modelos requeridos, etc.)
p.ej:
alternativamente, solo puede requerir cada uno por separado, pero puede tener problemas de entorno AR no configurado, etc.)
fuente
Cuando comienzas a escribir tu rastrillo tareas de , use un generador para apagarlas por usted.
Por ejemplo:
Obtendrá un código auxiliar creado en lib / tareas llamado
my_tasks.rake
(obviamente use su propio espacio de nombres). Que se verá así:Todos sus modelos de rieles, etc. estarán disponibles para el entorno actual dentro de cada bloque de tareas, a menos que esté utilizando el entorno de producción , en cuyo caso necesitará los modelos específicos que desea utilizar. Haga esto dentro del cuerpo de la tarea. (IIRC esto varía entre las diferentes versiones de Rails).
fuente
environment
se requiere como una dependencia y luego decir la sintaxis en lugar de alentar al OP a confiar en utilidades "mágicas" que ni siquiera usan magia?Con la nueva sintaxis de ruby hash (Ruby 1.9), el entorno se agregará así a la tarea de rastrillo:
fuente
El: la dependencia del entorno se llama correctamente, pero rake todavía puede no conocer otras gemas de las que dependen sus modelos, en un caso mío, 'protected_attributes'.
La respuesta es correr:
Esto garantiza que el entorno incluye las gemas especificadas en su Gemfile.
fuente
Genere la tarea usando el siguiente comando (espacio de nombres con el nombre de la tarea):
Use la siguiente sintaxis para agregar lógica:
Ejecute la tarea anterior con el comando siguiente:
o
fuente