セキュリティ上の理由から、製品のユーザー名とパスワードをバージョン管理にチェックインしたくありません。チェックインすれば、誰でも見ることができます。バージョン管理にチェックインされた database.yml ファイルは次のとおりです。
# /config/database.yml:
production:
adapter: mysql2
encoding: utf8
reconnect: false
database: desk_production
pool: 5
username: root
password: password_here
ご覧のとおり、「password_here」はパスワードとしてチェックインされていますが、本番データベースに対してチェックされた場合、これは無効なパスワードです。基本的に、ライブ パスワードをバージョン管理にチェックインする以外に 2 つのオプションがあります。
- 実際の database.yml ファイルを本番サーバーのアプリケーション ルートの上のディレクトリに保存します。アプリのデプロイ時にそのファイルへのシンボリック lync を作成する capistrano レシピを作成します。これにより、基本的に、バージョン管理にチェックインされた database.yml ファイルが上書きされます。
- 実際の database.yml ファイルを保存しますが (オプション #1 と同様)、シンボリック lync を作成する代わりに、バージョン管理にチェックインされた database.yml ファイルにインポートします。これにより、システムはアプリがデプロイされるたびにサーバー上の既存のファイルを参照できるようになり、デプロイ担当者はパスワードの変更やシンボリック lync の作成について心配する必要がなくなります。また、サーバー セットに常駐する database.yml ファイルを設定して、デプロイヤーがそれを見ることができないようにすることもできます...
私は 2 番目のオプションが最も気に入っています。基本的には次のようになります。
# Config file permanently stored on the web server:
# ../app_root/database.yml (notice this is one level up from the app so it doesn't get written over)
# This is the file checked into version control:
production:
<< ../app_root/database.yml