2011-11-10 11 views
5

Estoy intentando utilizar Factory Girl en una tarea rastrillo de la siguiente manera:factory_girl dentro de una tarea rake - conseguir sin inicializar constantes

require 'factory_girl' 
require File.expand_path("spec/factories.rb") 

namespace :users do 

    desc "Create sample users for use in development" 
    task :create_sample_users => :environment do 
    Factory(:user, :email => "[email protected]") 
    Factory(:approved_user, :email => "[email protected]") 
    end 

end 

Sin embargo cuando corro rake users:create_sample_users me sale el error uninitialized constant Entry (entrada es el nombre de una de las clases de mi aplicación).

¿Alguien puede decirme cómo hacer que Factory girl vea mis clases? Funciona bien en mis pruebas, solo falla en mis tareas de rake.

Respuesta

10

Supongo que Rails no ha cargado sus modelos en el punto en que necesita las fábricas. Prueba esto:

require 'factory_girl' 

namespace :users do 

    desc "Create sample users for use in development" 
    task :create_sample_users => :environment do 
    require File.expand_path("spec/factories.rb") 
    Factory(:user, :email => "[email protected]") 
    Factory(:approved_user, :email => "[email protected]") 
    end 

end 
+1

¡Gracias - eso lo ha ordenado! Como extra, ¿sabes dónde podría poner 'require File.expand_path (" spec/factories.rb ")' para que no tenga que incluirlo en todas las tareas? Gracias de nuevo. – Mike

0

@ respuesta de dmcnally no funcionó para mí, ya que estaba recibiendo errores impares de las constantes que no se encuentran. En cambio, lo resolví desembarcando en el corredor de rieles:

sh "rails runner 'FactoryGirl.create :user'" 
Cuestiones relacionadas