自社の開発では、database.ymlは
.gitignoreに追加し、リポジトリにpushしない方針にしている。
そしてチームメンバーは各々のユーザ名やパスワードを
database.ymlに設定し、各環境のDBを使用する。
※チームメンバーの開発環境(VM)が全て同じものであるならば不要だと思う。
しかし、CircleCIを使用する場合、
database.ymlをpushしないとCircleCI上でDB設定ができないっぽいので
pushしないといけない。
そんなとき、便利なのが
「config」っていうgem。
設定は以下のページを参考にする。
qiita.com
settings.local.ymlにはローカル環境の設定を書いておき、
settings.ymlにはCircleCI用の設定を書いておく。
※settings.local.ymlはコマンドで自動作成されたときに
自動的に.gitignoreに設定されるので、pushしてもgitHubには転送されない。
そして以下のように設定すれば、公開したくない情報を公開せず
database.ymlをpushできる。
settings.local.yml
db: username: 'dev_user' password: 'dev_password'
settings.yml
db: username: 'root' password: ''
database.yml
default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: socket: /tmp/mysql.sock test: <<: *default password: <%= ENV['DB_PASSWORD'] || Settings[:db][:password] %> host: <%= ENV['DB_HOST'] || 'localhost' %> database: dummy_test
config.yml
... docker: - image: circleci/ruby:2.4.1-node-browsers environment: RAILS_ENV: test DB_HOST: 127.0.0.1 DB_PASSWORD: '' - image: circleci/mysql:5.7 ...
かなり回りくどいが現在はこの設定で対応している。
もっと他によりやり方が、あるようだったら是非教えて頂きたい。。