2011-10-16 17 views
25

Sto tentando di precompilare le risorse per la distribuzione della mia app su Heroku, ma devo seguire l'errore.Rails rake assets: precompilare per la produzione

Quando si esegue:

RAILS_ENV=production bundle exec rake assets:precompile 

Errore:

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

Perché io uso in SQLite sviluppo e nella produzione di Postgresql seguente 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 

Ho provato un sacco, ma puo' Questo funziona.

Non so se questo è importante, ma il mio database.yml assomiglia:

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

Hai provato questo su una pila di cedro? 'heroku create --stack cedar' – daniel

risposta

54

Vecchio domanda, ma la risposta accettata in realtà non rispondere alla domanda - e ho appena trovato questo in una ricerca quindi immagino sia pertinente.

Il motivo dell'errore è che gem 'pg' si trova nel gruppo gemma di produzione.
Quando si esegue rake assets:precompile, si accede all'ambiente di produzione. Quindi sta provando a caricare l'ambiente di produzione ma non hai tutte le dipendenze installate.

L'esecuzione di RAILS_ENV=production bundle exec rails server probabilmente causerà un errore simile.

Mi vengono in mente due soluzioni diverse

1) Guardare per vedere se si dispone di un file .bundle/config nella radice della tua app. Se lo fai, controlla se dice WITHOUT :production o simili. Rimuovere la riga o l'intera directory .bundle ed eseguire di nuovo bundle.

2) in Gemfile

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

durante la rimozione del gruppo :production
corsa bundle nuovo

dispiace per far apparire roba vecchia ...

+4

Mi spiace di averti svalutato per errore ma ora non posso annullarlo :(- In realtà ho trovato utile la tua risposta –

+0

@SherwinYu Fai semplicemente clic sull'icona a discesa e il tuo downvote verrà annullato. –

+0

@DavidTuite purtroppo non puoi farlo se è passato un po 'di tempo - il tuo downvote si blocca a meno che la risposta non sia modificata. –

Problemi correlati