2012-06-04 9 views
9

Nach 24 Stunden versuchen, das Problem mit meiner App zu finden. Schließlich fand ich das Problem.Bündel exec Rake Vermögen: precompile - Datenbankkonfiguration nicht Adapter spezifiziert

lief ich

rake assets:precompile RAILS_ENV=production 

und ich hielt auf diesen Fehler.

/Users/vezu/.rvm/rubies/ruby-1.9.3-p194/bin/ruby /Users/vezu/.rvm/gems/[email protected]/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets 
rake aborted! 
database configuration does not specify adapter 

Tasks: TOP => environment 
(See full trace by running task with --trace) 
rake aborted! 
Command failed with status (1): [/Users/vezu/.rvm/rubies/ruby-1.9.3-p194/bi...] 

Meine database.yml Datei sieht wie folgt aus

development: 
    adapter: postgresql 
    host: localhost 
    encoding: unicode 
    database: ndoda_development 
    pool: 5 
    username: 
    password: 

test: 
    adapter: postgresql 
    encoding: unicode 
    database: ndoda_test 
    pool: 5 
+0

M8 wo ist Ihre Produktion db Konfiguration?)) –

+0

Sie brauchen es nicht auf Heroku. Heroku übernimmt das für Sie. Leider habe ich vergessen zu erwähnen, dass ich Heroku benutze. – Benjamin

Antwort

29

Die einfache Lösung, die eine einfache Linie meiner application.rb

config.assets.initialize_on_precompile = false 

Und alles funktioniert hinzuzufügen war.

+2

Nur eine Anmerkung: Stellen Sie sicher, dass Sie die obige Zeile zu Ihrer config/application.rb hinzufügen. Ich habe es versehentlich in die config/environments/production.rb eingefügt, was NICHT funktioniert. – ChrisBurgess

+2

PSA in Rails 4.x Diese Option wurde entfernt – steakchaser

10

Dies sollte funktionieren: Rake Vermögen: precompile RAILS_ENV = Entwicklung

Es wird versucht, die Produktionsumgebung zu laden, wenn Ihr database.yml es nicht enthalten.

+0

Ein Hinweis für jeden, der Asset Sync verwendet. Wenn Sie RAILS_ENV auf Entwicklung setzen, wird Asset Sync nach der Kompilierung nicht synchronisiert. – Undistraction

7

Tun Sie dies:

development: 
    adapter: postgresql 
    host: localhost 
    encoding: unicode 
    database: ndoda_development 
    pool: 5 
    username: 
    password: 

test: 
    adapter: postgresql 
    encoding: unicode 
    database: ndoda_test 
    pool: 5 

# Add the below... 

production: 
    adapter: postgresql 
    host: localhost 
    encoding: unicode 
    database: ndoda_production 
    pool: 5 
    username: 
    password: 

Heroku Ihre database.yml mit seiner eigenen Version überschrieben wird, und zwar unabhängig von dem, was du da drin stecken. jedoch, Ihre Rake Aufgabe in der Produktionsumgebung ausgeführt wird, benötigt eine Variable, so dass es eine Attrappe eines geben.

Wie oben erwähnt, können Sie auch hinzufügen 'config.assets.initialize_on_precompile = false' auf Ihrem production.rb. Wenn gesetzt, erfordert Heroku es auf ‚false‘ gesetzt werden.

+0

Es ist erwähnenswert, dass Heroku jetzt mit Rails 4 nicht mehr Ihre Datenbank.yml überschreibt –

-1

Anruf rake assets:precompile:all

1

Was für mich gearbeitet, war dies:

rake assets:precompile RAILS_ENV=production

Zugriff auf Ihre Server über ssh und Typ, der in gebieten, sollte es den Trick.

1

Stellen Sie sicher, Sie haben einige Dummyproduction Eintrag in Ihrem lokalen config/database.yml Datei

production: 
    <<: *default 
    database: your_local_database_name 

Ich habe den gleichen Fehler in 2016 mit Rails 4.2.6 und Capistrano 3.4 gefunden. Wir waren Vorkompilieren die Vermögenswerte während des deploy Skript kurz bevor sie zusammen mit dem Code hochladen, aber Vermögenswerte Rake: precompile einige Produktions Eintrag muss, auch wenn es nur ein Dummy ein.Quelle: https://github.com/TalkingQuickly/capistrano-3-rails-template/issues/12

Verwandte Themen