web-dev-qa-db-fra.com

Rails rake assets: précompiler pour la production

J'essaie de précompiler les actifs pour que mon application se déploie sur Heroku, mais je dois suivre l'erreur.

Lors de l'exécution:

Rails_ENV=production bundle exec rake assets:precompile

Erreur:

/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.)

Parce que j'utilise en développement SQLite et en production Postgresql le Gemfile suivant

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

J'ai beaucoup essayé mais je n'arrive pas à faire fonctionner ça.

Je ne sais pas si c'est important mais mon database.yml ressemble à:

production:
  adapter: postgresql
  Host: localhost
  database: db
  encoding: unicode
  username: user
  password: ''
25
Kieran Klaassen

Ancienne question, mais la réponse acceptée ne répond pas vraiment à la question - et je viens de trouver cela dans une recherche, donc je suppose que c'est pertinent.

La raison de l'erreur est que gem 'pg' fait partie du groupe des gemmes de production.
Lorsque vous exécutez rake assets:precompile l'environnement de production est accessible. Il essaie donc de charger l'environnement de production mais vous n'avez pas toutes les dépendances installées.

Fonctionnement Rails_ENV=production bundle exec Rails server vous donnerait probablement une erreur similaire.

Je peux penser à deux solutions différentes

1) Regardez si vous avez un .bundle/config fichier à la racine de votre application. Si c'est le cas, vérifiez si elle indique WITHOUT :production ou similaire. Supprimez cette ligne ou l'ensemble .bundle répertoire et réexécutez bundle.

2) dans Gemfile

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

tout en supprimant le :production groupe
réexécutez bundle

Désolé de revenir sur de vieux trucs ...

54
mraaroncruz