我正在尝试将数据库备份作为 Capistrano (v3) 部署脚本的一部分(对于 NON-Rails 应用程序)。
该脚本工作正常——如果我将数据库配置硬编码到其中。
现在我想从 .env 文件加载数据库配置。在我的本地机器上,我的 .env 文件(位于 Capfile 旁边的 repo 根目录中)如下所示:
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']
任何帮助将不胜感激!