ruby on rails - rails - Tarea Rake Rake-Acceso a la clase de modelo
rake task rails (1)
Me gustaría definir una tarea de rake Ruby (1.9.2) -on-Rails (3.0.5) que agrega un usuario a la tabla de Usuario. El archivo se ve así:
#lib/tasks/defaultuser.rake
require ''rake''
namespace :defaultuser do
task :adduser do
u=User.new
u.email="[email protected]"
u.password="password"
u.save
u.errors.each{|e| p e}
end
end
Entonces invocaría la tarea como
> rake defaultuser:adduser
Probé el código en la tarea: adduser en la consola de Rails, y funciona bien. Probé la tarea de rake, ejecutando solo
print "defaultuser:adduser"
en el cuerpo de la tarea, y funcionó bien.
Sin embargo, cuando los combiné, se quejó, diciendo
rake aborted!
uninitialized constant User
Intenté
require File.expand_path(''../../../app/models/user.rb'', __FILE__)
en la parte superior de la definición de espacio de nombres en el archivo de rake, pero eso no funcionó. tengo
rake aborted!
ActiveRecord::ConnectionNotEstablished
¿Qué debo hacer para tener el mismo acceso a la clase de modelo de usuario en la tarea de Rake que tengo en la consola de Rails?
Estás cerca :)
#lib/tasks/defaultuser.rake
require ''rake''
namespace :defaultuser do
task :adduser => :environment do
...
end
Tenga en cuenta el uso de: environment, que configura el entorno Rails necesario antes de llamar a la tarea de rake. Después de eso, su objeto Usuario estará dentro del alcance.