2014-05-07 1 views
11

Jestem ciekawy, jak poprawnie skonfigurować mój plik database.yml w aplikacji Rails 4.Jak poprawnie skonfigurować plik database.yml w Railsach 4

Nie jest to coś, na co bardzo szczegółowo przyjrzałem się, ponieważ wydaje się, że działa po wdrożeniu w Heroku, ale chcę to teraz zrozumieć i zauważyłem, że format zmienił się nieco z Rails 4.0 na 4.1. Na przykład

4.0.2

development: 
adapter: mysql2 
encoding: utf8 
database: my_app_development 
pool: 5 
username: root 
password: 

test: 
adapter: mysql2 
encoding: utf8 
database: my_app_test 
pool: 5 
username: root 
password: 


production: 
adapter: mysql2 
encoding: utf8 
database: ymca_gym_production 
pool: 5 
username: root 
password: 

4.1.0

default: &default 
    adapter: mysql2 
    encoding: utf8 
    pool: 5 
    username: root 
    password: 
    socket: /var/run/mysqld/mysqld.sock 

development: 
    <<: *default 
    database: my_app_development 


test: 
    <<: *default 
    database: my_app_test 


# On Heroku and other platform providers, you may have a full connection URL 
# available as an environment variable. For example: 
# 
# DATABASE_URL="mysql2://myuser:[email protected]/somedatabase" 
# 
# You can use this database configuration with: 
# 
# production: 
#  url: <%= ENV['DATABASE_URL'] %> 
# 

production: 
    <<: *default 
    database: my_app_production 
    username: my_app 
    password: <%= ENV['MY_APP_DATABASE_PASSWORD'] %> 

Moje pytania są

  1. powinienem być ustawienie nazwy użytkownika i hasła we wszystkich środowiskach?
  2. Używam ClearDB na Heroku jako mojej bazy danych. Czy powinienem używać url: <%= ENV['DATABASE_URL'] %> do produkcji, jak sugerują komentarze?
+0

Witaj, Rich, czy moja odpowiedź pomogła? Jeśli tak, proszę zaznaczyć zaakceptowane :) dziękuję – derekyau

Odpowiedz

3

Drugi wysłany przez ciebie database.yml jest faktycznie równoważny z pierwszym, po prostu kopiuje wartości z bloku rozwojowego.

Aby odpowiedzieć na inne pytania:

1) powinny być ustalone nazwy użytkownika i hasła we wszystkich środowiskach

możesz, jeśli chcesz, lub można pozostawić go jak masz powyżej gdzie trwa poświadczeń wszystko z jednego bloku.

2) Jeśli używam jasnej dB Heroku jak mojej bazy danych, a następnie Byłbym odkomentowanie

Heroku faktycznie całkowicie pomija ten plik (które nie powinny być sprawdzane w kontroli źródła w pierwszej kolejności w każdym razie). Heroku ma swój własny mechanizm obsługi baz danych, o których możesz przeczytać więcej: https://devcenter.heroku.com/articles/heroku-postgresql

Zasadniczo, traktuj "bazy danych Heroku" i lokalne bazy danych, które w tym pliku są całkowicie różne.

+1

Oto lepszy opis tego, co Heroku robi z 'database.yml': https://devcenter.heroku.com/articles/ruby-support#build-behavior – Dennis

+1

Należy również pamiętać, że zgodnie z [ sekcja "Łączenie w Railsach"] (https://devcenter.heroku.com/articles/heroku-postgresql#connecting-in-rails), Heroku robi * nie * zastępuje 'database.yml' dla aplikacji na Railsach 4.2 lub nowszych , ponieważ obsługują one określanie adresu URL połączenia. – Dennis