2011-10-16 15 views
25

Estoy intentando precompilar los recursos para que mi aplicación se implemente en Heroku pero tiene que seguir un error.Rails rake assets: precompilación para la producción

Cuando se ejecuta:

RAILS_ENV=production bundle exec rake assets:precompile 

error:

/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets 
rake aborted! 
Please install the postgresql adapter: `gem install activerecord-postgresql-adapter` (pg is not part of the bundle. Add it to Gemfile.) 

Debido a que utilizo en SQLite desarrollo y en la producción de Postgresql la siguiente Gemfile

gem "rails", "~> 3.1.0" 

group :production do 
    gem 'pg' 
end 

group :development, :test do 
    gem 'sqlite3' 
end 

gem 'sass-rails', "~> 3.1.0" 

group :assets do 
    gem 'coffee-rails', "~> 3.1.0" 
    gem 'uglifier' 
    gem 'compass', '~> 0.12.alpha.0' 
    gem 'html5-boilerplate' 
end 

traté mucho, pero puede' para que esto funcione

No sé si esto es importante, pero mi database.yml parece:

production: 
    adapter: postgresql 
    host: localhost 
    database: db 
    encoding: unicode 
    username: user 
    password: '' 
+1

¿Has probado esto en una pila de cedro? 'heroku create --stack cedro' – daniel

Respuesta

54

vieja pregunta, pero la respuesta aceptada en realidad no contesta la pregunta - y acabo de encontrar esto en una búsqueda así que supongo que es relevante.

El motivo del error es que gem 'pg' se encuentra en el grupo de gemas de producción.
Cuando ejecuta rake assets:precompile, se accede al entorno de producción. Por lo tanto, está intentando cargar el entorno de producción pero no tiene todas las dependencias instaladas.

Correr RAILS_ENV=production bundle exec rails server probablemente le dará un error similar.

me ocurren dos soluciones diferentes

1) Mira a ver si tiene un archivo de .bundle/config en la raíz de su aplicación. Si lo hace, verifique si dice WITHOUT :production o similar. Elimine esa línea o el directorio completo .bundle y ejecute bundle nuevamente.

2) en Gemfile

gem :development, :production do 
    gem 'pg' 
end 

mientras se quita la :production grupo
plazo bundle nuevo

este momento para que aparezca cosas viejas ...

+4

Lamento haberlo degradado accidentalmente, pero ahora no puedo deshacerlo :(- De hecho encontré tu respuesta útil –

+0

@SherwinYu Simplemente haz clic en el ícono downvote nuevamente y tu voto negativo se cancelará. –

+0

@DavidTuite lamentablemente , no se puede si ha pasado un tiempo - tu voto negativo se bloquea a menos que se edite la respuesta. –

Cuestiones relacionadas