database.yml の管理方法いろいろ

こんにちは、鈴木です。

Ruby on Rails ではデータベースの接続情報を database.yml というファイルに保存します。

database.yml にはデータベースに接続するためのパスワードが記述されます。
そのため、database.yml をリポジトリにコミットするわけにはいきません。

そこで今回は、database.yml の管理方法にどのような方法があるのかご紹介します。

設定ファイルのサンプルファイルだけをコミットする方式

database.yml はコミットせずに、database.yml のサンプルファイルをリポジトリにコミッします。

ここではサンプルファイルの名前は database.yml.sample として話を進めます。

プロジェクトに参加する人は、最初にリポジトリからソースコードをチェックアウトします。
次に database.yml.sample の内容を参考に database.yml を作成します。
あとは通常通り rake db:create db:migrate db:seed としてからサーバを起動すれば OK です。

チェックアウト後に database.yml を作成する手順が必要ですが、
「パスワードが書かれた database.yml をコミットしない」という目標は達成できました。

これは Web ベースのプロジェクト管理ソフトウェアとして有名な Redmine で採用されている方式です。

環境変数に設定する方式

この方式は、database.yml 自体はリポジトリにコミットしてしまいます。
ただし、パスワード等は環境変数から取得するように記述しておきます。

具体的には、以下のように環境変数から値を取るように記述します。
(database.yml には <%= ... %> で Ruby コードを埋め込むことができます。)

パスワードが database.yml に直接書かれていないので、リポジトリにコミットしても問題ありません。
起動するときは、以下のように環境変数を設定してから rails server で起動します。

この方式はいくつかの heroku プラグイン(Mailgunなど)で使われているようです。

みなさんはどちらの方法が良いと思いますか?

Comments are closed, but you can leave a trackback: Trackback URL.