2011-12-28 14 views
7

EDYCJA: Ogólna rada polega na użyciu stosu CEDAR.Heroku on Rails - Nieprawidłowy DATABASE_URL

Dość nowe dla RoR, klejnotów, Heroku i Gita. Samouczku: http://ruby.railstutorial.org/book/ruby-on-rails-tutorial

Działa płynnie na localhost, po wdrożeniu do Heroku dostał błąd ConnectionNotEstablished, który został rozwiązany tutaj: https://stackoverflow.com/questions/7542745/heroku-error-activerecordconnectionnotestablished(BTW: po samym tutorialu) Po zmianie produkcyjnej bazy danych PostgreSQL (gem „pg „) generuje kolejny błąd:

odwiedza witrynę,

An error occurred in the application and your page could not be served. Please try again in a few moments.

If you are the application owner, check your logs for details.

Tried to - Heroku app crashed, receiving "Invalid DATABASE URL" when attempting heroku rake db:migrate - Heroku rake db: migrować

rake aborted! 
Invalid DATABASE_URL 

Tasks: TOP => db:migrate => db:load_config 
(See full trace by running task with --trace) 

konsola Heroku

Internal server error 

gemfile

source 'http://rubygems.org' 

gem 'rails', '3.1.1' 

group :development do 
    gem 'rspec-rails', '2.6.1' 
    gem 'annotate', '~> 2.4.1.beta' 
    gem 'sqlite3' 
end 

group :test do 
    gem 'rspec-rails', '2.6.1' 
    gem 'webrat', '0.7.1' 
    gem 'sqlite3' 
end 

group :production do 
    gem 'pg' 
end 

group :assets do 
    gem 'sass-rails', '~> 3.1.4' 
    gem 'coffee-rails', '~> 3.1.1' 
    gem 'uglifier', '>= 1.0.3' 
end 

kłody Heroku

9:02+00:00 app[web.1]: from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/thin-1.2.6/lib/thin/runner.rb:143:in `run!' 
9:02+00:00 app[web.1]: from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/thin-1.2.6/bin/thin:6:in `<top (required)>' 
9:02+00:00 app[web.1]: from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/thin-1.2.6/lib/thin/runner.rb:177:in `run_command' 
9:02+00:00 app[web.1]: from /home/heroku_rack/heroku.ru:18:in `block (2 levels) in <main>' 
9:02+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/rack-1.3.6/lib/rack/builder.rb:51:in `initialize' 
9:02+00:00 app[web.1]: from /usr/ruby1.9.2/bin/thin:19:in `<main>' 
9:02+00:00 app[web.1]: from /usr/ruby1.9.2/bin/thin:19:in `load' 
9:03+00:00 heroku[web.1]: State changed from starting to crashed 
9:04+00:00 heroku[web.1]: Process exited 
1:58+00:00 heroku[slugc]: Slug compilation started 
3:09+00:00 heroku[api]: Deploy 3dea426 by [email protected] 
3:09+00:00 heroku[api]: Release v7 created by [email protected] 
3:09+00:00 heroku[web.1]: State changed from crashed to created 
3:09+00:00 heroku[web.1]: State changed from created to starting 
3:10+00:00 heroku[slugc]: Slug compilation finished 
3:12+00:00 heroku[web.1]: Starting process with command `thin -p 44881 -e production -R /home/heroku_rack/heroku.ru start` 
3:15+00:00 app[web.1]: (erb):9:in `rescue in <main>': Invalid DATABASE_URL (RuntimeError) 
3:15+00:00 app[web.1]: from (erb):6:in `<main>' 
3:15+00:00 app[web.1]: from /usr/ruby1.9.2/lib/ruby/1.9.1/erb.rb:753:in `eval' 
3:15+00:00 app[web.1]: from /usr/ruby1.9.2/lib/ruby/1.9.1/erb.rb:753:in `result' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/railties-3.1.1/lib/rails/application/configuration.rb:106:in `database_configuration' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activerecord-3.1.1/lib/active_record/railtie.rb:68:in `block (2 levels) in <class:Railtie>' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/lazy_load_hooks.rb:43:in `block in run_load_hooks' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/lazy_load_hooks.rb:42:in `each' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/lazy_load_hooks.rb:42:in `run_load_hooks' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activerecord-3.1.1/lib/active_record/base.rb:2190:in `<top (required)>' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:240:in `require' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:240:in `block in require' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:225:in `load_dependency' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:240:in `require' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:489:in `load_missing_constant' 
3:15+00:00 app[web.1]: from /app/app/models/user.rb:12:in `<top (required)>' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:179:in `each' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:179:in `const_missing' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/inflector/methods.rb:124:in `block in constantize' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/inflector/methods.rb:123:in `each' 
3:15+00:00 a 
from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/inflector/methods.rb:123:in `constantize' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/core_ext/string/inflections.rb:43:in `constantize' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:348:in `require_or_load' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:181:in `block in const_missing' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/actionpack-3.1.1/lib/action_controller/metal/params_wrapper.rb:148:in `_default_wrap_model' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/actionpack-3.1.1/lib/action_controller/metal/params_wrapper.rb:167:in `_set_wrapper_defaults' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/actionpack-3.1.1/lib/action_controller/metal/params_wrapper.rb:128:in `inherited' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/actionpack-3.1.1/lib/abstract_controller/railties/routes_helpers.rb:7:in `block (2 levels) in wi 

3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/actionpack-3.1.1/lib/action_controller/railties/paths.rb:7:in `block (2 levels) in with' 
3:15+00:00 app[web.1]: from /app/app/controllers/users_controller.rb:1:in `<top (required)>' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:240:in `block in require' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:225:in `load_dependency' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:240:in `require' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:240:in `require' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:348:in `require_or_load' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:302:in `depend_on' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:214:in `require_dependency' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/railties-3.1.1/lib/rails/engine.rb:417:in `block (2 levels) in eager_load!' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/railties-3.1.1/lib/rails/engine.rb:416:in `each' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/railties-3.1.1/lib/rails/engine.rb:416:in `block in eager_load!' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/railties-3.1.1/lib/rails/engine.rb:414:in `each' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/railties-3.1.1/lib/rails/engine.rb:414:in `eager_load!' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/railties-3.1.1/lib/rails/application/finisher.rb:51:in `block in <module:Finisher>' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/railties-3.1.1/lib/rails/initializable.rb:30:in `instance_exec' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/railties-3.1.1/lib/rails/initializable.rb:30:in `run' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/railties-3.1.1/lib/rails/initializable.rb:55:in `block in run_initializers' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/railties-3.1.1/lib/rails/initializable.rb:54:in `each' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/railties-3.1.1/lib/rails/initializable.rb:54:in `run_initializers' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/railties-3.1.1/lib/rails/application.rb:96:in `initialize!' 
3:15+00:00 app[web.1]: from /app/config/environment.rb:5:in `<top (required)>' 
3:15+00:00 app[web.1]: from <internal:lib/rubygems/custom_require>:29:in `require' 
3:15+00:00 app[web.1]: from <internal:lib/rubygems/custom_require>:29:in `require' 
3:15+00:00 app[web.1]: from config.ru:3:in `block (3 levels) in <main>' 
3:15+00:00 app[web.1]: from /home/heroku_rack/heroku.ru:23:in `eval' 
3:15+00:00 app[web.1]: from /home/heroku_rack/heroku.ru:23:in `block (3 levels) in <main>' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/railties-3.1.1/lib/rails/railtie/configurable.rb:30:in `method_missing' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/rack-1.3.6/lib/rack/builder.rb:120:in `new' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/rack-1.3.6/lib/rack/builder.rb:120:in `map' 
3:15+00:00 app[web.1]: from /home/heroku_rack/heroku.ru:18:in `block (2 levels) in <main>' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/rack-1.3.6/lib/rack/builder.rb:51:in `instance_eval' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/rack-1.3.6/lib/rack/builder.rb:51:in `initialize' 
3:15+00:00 app[web.1]: from /home/heroku_rack/heroku.ru:11:in `new' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/rack-1.3.6/lib/rack/builder.rb:51:in `instance_eval' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/rack-1.3.6/lib/rack/builder.rb:51:in `initialize' 
3:15+00:00 app[web.1]: from /home/heroku_rack/heroku.ru:11:in `block in <main>' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/rack-1.3.6/lib/rack/builder.rb:51:in `instance_eval' 
3:15+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.9.1/gems/rack-1.3.6/lib/rack/builder.rb:51:in `initialize' 
3:15+00:00 app[web.1]: from /home/heroku_rack/heroku.ru:1:in `new' 
3:15+00:00 app[web.1]: from /home/heroku_rack/heroku.ru:1:in `<main>' 
3:15+00:00 app[web.1]: from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/thin-1.2.6/lib/rack/adapter/loader.rb:36:in `eval' 
3:15+00:00 app[web.1]: from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/thin-1.2.6/lib/rack/adapter/loader.rb:36:in `load' 
3:15+00:00 app[web.1]: from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/thin-1.2.6/lib/thin/controllers/controller.rb:175:in `load_rackup_config' 
3:15+00:00 app[web.1]: from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/thin-1.2.6/lib/thin/controllers/controller.rb:65:in `start' 
3:15+00:00 app[web.1]: from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/thin-1.2.6/lib/thin/runner.rb:143:in `run!' 
3:15+00:00 app[web.1]: from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/thin-1.2.6/bin/thin:6:in `<top (required)>' 
3:15+00:00 app[web.1]: from /usr/ruby1.9.2/bin/thin:19:in `load' 
3:15+00:00 app[web.1]: from /usr/ruby1.9.2/bin/thin:19:in `<main>' 
3:15+00:00 app[web.1]: from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/thin-1.2.6/lib/thin/runner.rb:177:in `run_command' 
3:16+00:00 heroku[web.1]: State changed from starting to crashed 
3:17+00:00 heroku[web.1]: Process exited 
5:55+00:00 heroku[router]: Error H10 (App crashed) -> GET high-wind-7473.heroku.com/pages/home dyno= queue= wait= service= status=503 bytes= 
5:57+00:00 heroku[router]: Error H10 (App crashed) -> GET high-wind-7473.heroku.com/pages/home dyno= queue= wait= service= status=503 bytes= 

rodzaju zatrzymany, proszę o pomoc (punkt w dobrym kierunku)

Oczywiście

bundle install 
git add . 
git commit -m "another heroku fix" 
git push 
git push heroku 

Odpowiedz

2

Pierwszą rzeczą, że zacznę to przesuwając aplikacja do aplikacji Cedar Stack - obsługuje Rails 3.1 po wyjęciu z pudełka, bez konieczności robienia wszystkiego.

Podczas tworzenia aplikacji poprzez heroku create zrobić jak

heroku create --stack cedar 

a następnie repush do tego stosu - mogą znaleźć swoje problemy będą wszystkie znikną. Należy pamiętać o dodaniu polecenia "run" do komend, heroku uruchom konsolę, polecenie uruchomienia rpg db: migrate itp.

0

Czy możesz wpisać heroku config - long - (nazwa aplikacji). Proszę publikować wyniki, szczególnie DATABASE_URL.

Potrzebujesz więcej informacji. Upewnij się również, że jesteś na stosie cedru, jak wspomniano powyżej.

+0

BUNDLE_WITHOUT => Rozwój: test LANG => en_US.UTF-8 RACK_ENV => Produkcja Migracja do cedru, jak zasugerowano w drugiej odpowiedzi, jak również. –

+0

Migracja do cedru nie jest tak banalna, niektóre problemy z postgre/sqlite Następnym razem użyjemy ** - database = postgresql ** od samego początku. W każdym razie dzięki za pomoc, na razie zakończę samouczek bez wdrażania ... –

+0

Brakuje adresu URL bazy danych .... czy masz zainstalowane współdzielone rozszerzenie bazy danych? Powinien wypluć adres URL bazy danych i poniżej adresu URL udostępnionej bazy danych. Jeśli wystąpił problem, to wygląda na to, że jest. Powinna istnieć co najmniej wartość domyślna. –

3

Miałem dokładnie ten sam problem. Okazało się, że nie mam bazy danych powiązanej z aplikacją. Zobaczysz to za pomocą prostej komendy heroku config - powinieneś zobaczyć tam kilka adresów URL baz danych wskazujących na Amazon.np:

$ h config 
DATABASE_URL  => postgres://fakedexgwa:[email protected]/fakedexgwa 

Zresztą Naprawiłem to poprzez stworzenie zupełnie nowej aplikacji i wdrażania do niego. Próbowałem bawić się na ekranach konfiguracji, ale nie mogłem rozwiązać problemu.

Nie jestem pewien, czy jest to ta sama przyczyna co Twoja: stworzyłem prostą aplikację Ruby, wdrożyłem ją, a następnie utworzyłem aplikację Rails. Nie dotarłem jeszcze do żadnej bazy danych i zastanawiam się, czy Heroku zdecydowała się na pierwsze wdrożenie, że nie potrzebuję bazy danych.

+0

Hej, zadzwoń do mnie szalony, ale możesz zmienić swoje aktualne hasło do db lub edytować ten post, więc twoje poświadczenia bazy danych nie są transmitowane na cały świat? – culix

+0

Hej szalony! Zmieniłem wpis, więc jest to bardziej fałszywe dane ... fyi Początkowo nie publikowałem moich prawdziwych referencji. – ndp

+0

Dobra, uff! Dobrze słyszeć! Po prostu próbuje pomóc. – culix

17

Musisz ustawić zmienną środowiskową DATABASE_URL ze ścieżką do swojej bazy danych Postgres online.

Spróbuj uruchomić heroku pg. Jeśli wyjście to "myapp nie ma baz danych heroku-postgresql." musisz najpierw dodać dodatek PostgreSQL. Stworzy to dla ciebie postgres db na Amazon AWS.

heroku addons:add heroku-postgresql:hobby-basic 

(hobby-podstawowy jest bezpłatny plan)

Aby znaleźć URL dla nowej bazy danych, uruchom

heroku config 

Powinieneś zobaczyć zmienną, która zaczyna się od HEROKU_POSTGRESQL. Skopiować jego wartość (powinien zaczynać postgres:// i użyć go do ustawienia DATABASE_URL

heroku config:set DATABASE_URL=postgres://your-db-url 
1

Proszę przeczytać ten artykuł:

ClearDB MySQL Database

polecenia:

heroku config

lub jeśli używasz do jednej szyny wystają wiele projektów Heroku

heroku config --app your_app_name

Dodaj URL bazy danych:

heroku config:set DATABASE_URL='mysql://adffdadf2341:[email protected]/heroku_db?reconnect=true'

Jeśli używasz mysql2 gem należy zastąpić mysql z mysql2

heroku config:set DATABASE_URL='mysql2://adffdadf2341:[email protected]/heroku_db?reconnect=true'

Mam nadzieję, że te konfiguracje mogą być wykorzystane do bazy danych PostgreSQL, NoSQL lub innej bazy danych.