Старе питання, але це була одна з моїх перших зупинок у пошуку, як це зробити, тому я думаю, що це може допомогти комусь іншому. Я зазвичай маю .my.cnf файли в домашньому каталозі. Отже, використовуючи дорогоцінний камінь parseconfig та деякі синтаксиси ERB в моєму конфігураційному файлі database.yml, це означає, що у мене є динамічний файл, який я можу почувати себе добре під час перевірки джерела управління, а також спростити розгортання (у моєму випадку). Також зверніть увагу на перелік поширених сокетів, це полегшує переміщення мого додатка до різних операційних систем, які можуть мати інший шлях до розетки Unix.
<%
require 'parseconfig'
c=ParseConfig.new('../../.my.cnf') %>
mysqlevn: &mysql
adapter: mysql
username: <%= c.params['client']['user'] %>
password: <%= c.params['client']['password'] %>
host: localhost
socket: <%= [
'/var/run/mysqld/mysqld.sock',
'/var/lib/mysql/mysql.sock',
'/tmp/mysqld.sock',
'/tmp/mysql.sock'].detect { |socket| File.exist?(socket) } %>
production:
database: app_production
<<: *mysql
development:
database: app_development
<<: *mysql
# Do not set this db to the same as development or production.
test:
database: app_test
<<: *mysql
ref: http://effectif.com/articles/database-yml-should-be-cont-in
Rails.configuration