2011-02-16 17 views
16

Estoy intentando implementar una aplicación de rails 3 en heroku por primera vez. Parece empujar hacia arriba bien, pero cuando trato de ejecutarheroku rake db: migrate> no se carga ese archivo - faker

heroku rake db:migrate 

me sale el siguiente error:

rake aborted! 
no such file to load -- faker 
/app/98c71cc3-375f-4397-9de3-034dd7268be3/home/Rakefile:7 
(See full trace by running task with --trace) 
(in /app/98c71cc3-375f-4397-9de3-034dd7268be3/home) 

Aquí está mi Rakefile (línea 7 es la última):

require File.expand_path('../config/application', __FILE__) 
require 'rake' 

SampleApp::Application.load_tasks 

Ahora tengo una tarea llamada sample_data.rake que usa la gema faker para llenar la base de datos de desarrollo con datos de muestra y esa tarea tiene la línea:

require 'faker' 

en la parte superior, que debe ser lo que está causando el problema.

¿Cómo puedo solucionar este error o puedo hacer que heroku ignore este archivo de tareas? No voy a querer poblar la versión de producción con datos de muestra sin sentido de todos modos.

Por cierto, falsificador sólo se activa en el entorno de desarrollo en mi gemsfile:

# gemfiles for the rspec testing environment 
group :development do 
    gem 'rspec-rails', '2.5.0' 
    gem 'annotate-models', '1.0.4' 
    gem 'faker', '0.3.1' 
end 

Respuesta

21

Mover la declaración requiere en la tarea. Por ejemplo

# sample_data.rake 
require 'faker' 

task :sample_data => :environment do 
# ... 
end 

a

# sample_data.rake 
task :sample_data => :environment do 
    require 'faker' 

# ... 
end 

De esta manera, se requerirá la biblioteca sólo cuando se invoca la tarea.

La otra alternativa es no requerir Faker en su archivo de rake. De hecho, ya está cargado por Bundler cuando el paquete se ejecuta en desarrollo.

Si no desea Bündler para cargar la gema, utilice

gem 'faker', '0.3.1', :require => false 
+0

La primera solución no funcionó para mí, pero al agregar ': require => false' se trabajó –

+0

primera solución. ¡Rock! – Jashwant

1

para mí, primera aproximación de Simone no funcionaba, pero el segundo lo hizo: require 'faker' se pueden borrar desde el archivo de rastrillo.

1

yo también comentada requieren 'impostor' en el archivo de tareas sample_data.rake lib// y (Después de cometer este cambio a través de GIT) empujó a los archivos heroku, lo que permitió $heroku rake db:migrate --app <my app name> para ejecutar con éxito, y ergo el sitio heorku comenzó a trabajar de nuevo.

Gracias!

Cuestiones relacionadas