Eski soru ama bu, bunun nasıl yapılacağına bakarken ilk duraklarımdan biriydi, bu yüzden bunun başka birine yardımcı olabileceğini düşündüm. Normalde ana dizinde .my.cnf dosyalarım var. Bu nedenle, veritabanı.yml yapılandırma dosyamda 'parseconfig' gemini ve bazı ERB sözdizimini kullanmak, kaynak kontrolünü kontrol etme konusunda iyi hissedebileceğim ve aynı zamanda dağıtımları basitleştirebileceğim (benim durumumda) dinamik dosyam olduğu anlamına gelir. Ayrıca yaygın soketlerin listesine dikkat edin, bu, uygulamamı farklı bir Unix soket yoluna sahip olabilecek farklı işletim sistemlerine taşımayı kolaylaştırır.
<%
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
test:
database: app_test
<<: *mysql
ref: http://effectif.com/articles/database-yml-should-be-checked-in
Rails.configuration