Лучшим решением было бы просто использовать ENV["DATABASE_URL"]
, чтобы указать детали подключения и сохранить для сегмента по умолчанию фактические минимальные значения по умолчанию:
default: &default
adapter: postgresql
encoding: utf8
pool: 5
development:
<<: *default
database: OurApplication_development
test:
<<: *default
database: OurApplication_test
production:
# doing url: is just stupid as thats what rails does anyways
<<: *default
Это позволяет избежать потенциальных войн разработчиков. Вы можете использовать DotEnv для загрузки различных переменных ENV для каждой среды. В качестве альтернативы вы можете добавить еще один хеш в ваш database.yml и объединить его:
default: &default
adapter: postgresql
encoding: utf8
pool: 5
local_settings: &local_settings
# will raise an exception on nil instead of failing silently
username: <%= ENV.fetch('POSTGRESQL_USER') %>
password:
socket: /tmp/mysql.sock
development:
<<: *default
<<: *local_settings
database: OurApplication_development
test:
<<: *default
<<: *local_settings
database: OurApplication_test
production:
# doing url: is just stupid as thats what rails does anyways
<<: *default