2012-06-04 5 views
9

Po 24 godzinach próby znalezienia problemu z moją aplikacją. W końcu znalazłem problem.Pakiety remake pakietu bund: prekompilacja - konfiguracja bazy danych nie określa adaptera

Pobiegłem

rake assets:precompile RAILS_ENV=production 

i ciągle na uzyskiwanie ten błąd.

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

Mój plik database.yml wygląda to

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 gdzie jest konfiguracja db produkcyjna?)) –

+0

Nie potrzebujesz tego na Heroku. Heroku sobie z tym poradzi. Przepraszam, zapomniałem wspomnieć, że używam heroku. – Benjamin

Odpowiedz

29

Prostym rozwiązaniem było dodanie jednej prostej linii do mojego environment.rb

config.assets.initialize_on_precompile = false 

i wszystko działa.

+2

Tylko uwaga: upewnij się, że dodajesz powyższą linię do pliku config/application.rb. Dodałem go przez pomyłkę do config/environments/production.rb, który NIE zadziała – ChrisBurgess

+2

PSA w Railsach 4.x ta opcja została usunięta – steakchaser

10

To powinno działać: aktywa Zgrabiarka: prekompilacji RAILS_ENV = rozwojowe

Próbuje załadować środowiska produkcyjnego, gdy database.yml nie obejmuje go.

+0

Uwaga dla każdego, kto używa Asset Sync. Ustawienie RAILS_ENV do rozwoju zapobiegnie synchronizacji synchronizacji zasobów po kompilacji. – Undistraction

7

Wykonaj:

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 nadpisze database.yml z własnej wersji, niezależnie od tego, co można umieścić w środku. Jednak z poziomu Twojego zadania rake uruchomionego w środowisku produkcyjnym, wymagana jest zmienna, więc nadaj mu sztuczny.

Jak wspomniano powyżej, można również dodać "config.assets.initialize_on_precompile = false" do pliku production.rb. Jeśli zostanie ustawione, Heroku wymaga, aby było ustawione na "fałsz".

+0

Warto zauważyć, że począwszy od Rails 4 Heroku nie jest już nadpisywany plik database.yml –

1

Co pracował dla mnie było to:

rake assets:precompile RAILS_ENV=production

dostęp do serwera przez ssh i rodzaju, że polecenie w, powinno załatwić sprawę.

1

upewnij się, że masz jakieś atrapęproduction wpis w lokalnej config/database.yml pliku

production: 
    <<: *default 
    database: your_local_database_name 

Ten sam błąd wystąpił w 2016 roku z Railsami 4.2.6 i Capistrano 3.4. Wstępnie kompilowaliśmy zasoby podczas skryptu wdrażania tuż przed ich przesłaniem wraz z kodem, ale aktywa rake: prekompilacja wymaga jakiegoś zapisu produkcyjnego, nawet jeśli jest to tylko fikcyjny.Źródło: https://github.com/TalkingQuickly/capistrano-3-rails-template/issues/12

Powiązane problemy