ruby - Capistrano read from .env on deployment server -
i trying perform database backup part of capistrano (v3) deployment script (for non-rails app).
the script works fine -- if hard-code database config it.
now want load in database config .env file. on local machine, .env file (in repo root next capfile) reads follows:
db_name='local_name' db_user='local_user' db_password='local_pw' db_host='127.0.0.1'
on server, .env file (which capistrano has placed in shared
folder & symlined current
folder) reads follows:
db_name='dev_name' db_user='dev_user' db_password='dev_pw' db_host='127.0.0.1'
however, when running cap deploy, following:
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>
i.e. it's using local .env file, when i'd load .env file present on server. not want of team have manage separate .env.production file if @ possible!
the relevant portion of script follows (using dotenv gem):
require 'dotenv' dotenv.load '.env' username, password, database, host = env['db_user'], env['db_password'], env['db_name'], env['db_host']
any appreciated!
you can use dotenv::parser.call(string)
. using capistrano 2.14 (this older version!)
desc <<-desc env test desc task :test text = capture "cat #{shared_path}/.env" env2 = dotenv::parser.call(text) puts env2['db_name'] end
Comments
Post a Comment