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

Popular posts from this blog

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

php - render data via PDO::FETCH_FUNC vs loop -

The canvas has been tainted by cross-origin data in chrome only -