Capistrano (v3) デプロイメント スクリプト (NON-Rails アプリ用) の一部としてデータベース バックアップを実行しようとしています。
スクリプトは正常に動作します-データベース構成をハードコーディングした場合。
ここで、.env ファイルからデータベース構成をロードしたいと考えています。私のローカル マシンでは、私の .env ファイル (Capfile の隣のレポ ルートにあります) は次のようになります。
DB_NAME='local_name'
DB_USER='local_user'
DB_PASSWORD='local_pw'
DB_HOST='127.0.0.1'
サーバー上で、.env ファイル (Capistrano がshared
フォルダーに配置し、フォルダーからシンボリック化したものcurrent
) は次のようになります。
DB_NAME='dev_name'
DB_USER='dev_user'
DB_PASSWORD='dev_pw'
DB_HOST='127.0.0.1'
ただし、cap deploy を実行すると、次のようになります。
INFO [292e2535] Running /usr/bin/env mysqldump -u local_user --password='local_pw' --databases local_name -h 127.0.0.1 | bzip2 -9 > /var/www/vhosts/xxxxx/backups/database_local_name_2014-05-29_22:52:07.sql.bz2 on <server>
つまり、実際にはサーバーに存在する .env ファイルをロードしたいときに、ローカルの .env ファイルを使用しています。可能であれば、チーム全員が個別の .env.production ファイルを管理する必要はありません。
私のスクリプトの関連部分は次のとおりです ( Dotenv gem を使用):
require 'dotenv'
Dotenv.load '.env'
username, password, database, host = ENV['DB_USER'], ENV['DB_PASSWORD'], ENV['DB_NAME'], ENV['DB_HOST']
どんな助けでも大歓迎です!