问题
I want to instruct Capistrano to load environment variables that are defined on remote server. How can I do that?
It seems that when I export my environment variables inside .bashrc
file, they are not taken into account by Capistrano. Capistrano seems to be executing a /usr/bin/env
to create the environment for executing remote commands, but this does not seem to be loading the environment variables from .bashrc
.
Let me tell you also that I am using rvm-capistrano
too (just in case it might help).
Any clue?
回答1:
Although this question is over six months old now, I'll leave this here in case anyone is facing this same problem.
Capistrano actually does load .bashrc
. But near the top of the file you will find:
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
If you do any export
ing after that line, it will not be reached by Capistrano. The solution was simply to put my setup above this and Capistrano works how I want.
This solution was also noted at this GitHub issue.
回答2:
Capistrano doesn't load .bashrc
since it's not interactive shell. As far as I remember though it does load .bash_profile
though so you will probably have better luck using that.
回答3:
You can pass your current environment variables to a remote execution with ssh by issuing:
env | ssh user@host remote_program
Also taken the example from here
on roles(:app), in: :sequence, wait: 5 do
within "/opt/sites/example.com" do
# commands in this block execute in the
# directory: /opt/sites/example.com
as :deploy do
# commands in this block execute as the "deploy" user.
with rails_env: :production do
# commands in this block execute with the environment
# variable RAILS_ENV=production
rake "assets:precompile"
runner "S3::Sync.notify"
end
end
end
end
looks like you can use with
set environment variables for your execution. So read your current environment variables and set them using with
.
回答4:
In Capistrano 3 it's set :default_env, { ... }
Like here:
set :default_environment, {
'env_var1' => 'value1',
'env_var2' => 'value2'
}
You can refer to this: Previous post..
来源:https://stackoverflow.com/questions/25479348/how-can-i-instruct-capistrano-3-to-load-my-shell-environment-variables-set-at-re