tasks rails generators generate example commands ruby-on-rails rake-task

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.