2011年6月9日木曜日

database.ymlをGitから除外する

mysqlをつかった開発環境が複数ある場合、mysqlの実行環境がdatabase.ymlに記載されているため、pullするたびに自分の環境のものに書き換えなければならないことがあります。

Gitから除外してしまうと、CapistranoはGitの内容をそのままもってくるので、デプロイされなくなってしまいます。

この場合の解決策は下記の通りです。

・Gitから外す
・デプロイ時に本番サーバー上にあるdatabase.ymlをもってくる

以下が実際の手順です。

1 サーバーにあるdatabase.ymlを別の場所にコピーする
sshとかでログインして、cpコマンドでコピーします。
cp /var/rails/(app_name)/current/config/database.yml ~/config

2 ローカルのGitからdatabase.ymlを外す
git rm config/database.yml --cached
つぎに無視ファイルに登録します。
vim .gitigrore
下記を挿入します。
config/database.yml
変更内容をインデックスに登録します。
git add .gitignore
git add config/database.yml

3 config/deploy.rbを編集する
after "deploy:update_code", :config_database
task :config_database, :roles => :app do
  config_file = "/home/rails/(app_name)/config/database.yml"
  run "cp #{config_file} #{release_path}/config/database.yml"
end
config_fileにはサーバー上においたdatabase.ymlのパスを指定します。
git add config/deploy.rb

4 変更内容をGitへコミットする
git commit -m "database.ymlをGitから除外する"
git push origin master # 必要に応じて

5 デプロイする
cap deploy
以上です。

参考資料:RailsによるアジャイルWebアプリケーション開発

0 件のコメント:

コメントを投稿