Как правильно настроить файл database.yml в Rails 4
Мне интересно, как правильно настроить мой database.yml
файл в приложении Rails 4.
Это не то, что я действительно изучил в деталях, поскольку все это, похоже, просто работает при развертывании в Heroku, но я хочу понять это сейчас и заметил, что формат немного изменился с Rails 4.0 до 4.1. Например
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'] %>
Мои вопросы
- Должен ли я устанавливать имена пользователей и пароли во всех средах?
- Я использую ClearDB на Heroku в качестве моей базы данных. Должен ли я использовать
url: <%= ENV['DATABASE_URL'] %>
для производства, как показывают комментарии?
Ответы
Ответ 1
Вторая вычисленная вами база данных .yml фактически эквивалентна первой, она просто копирует значения из блока разработки.
Чтобы ответить на другие вопросы:
1) Должен ли я устанавливать имена пользователей и пароли во всех средах
вы можете, если хотите, или можете оставить его, как указано выше, где он принимает все учетные данные из одного блока.
2) Если я использую четкую БД с Heroku в качестве моей базы данных, тогда мне следует раскомментировать
heroku на самом деле полностью игнорирует этот файл (который в любом случае не должен быть проверен на исходный контроль). Heroku имеет свой собственный механизм обработки баз данных, о котором вы можете прочитать здесь: https://devcenter.heroku.com/articles/heroku-postgresql
По существу, относиться к базам "heroku" и локальным базам данных, которые вы определяете в этом файле, совершенно разные.