Как я могу проинструктировать Capistrano 3 для загрузки переменных оболочки оболочки, установленных на удаленном хосте?
Я хочу проинструктировать Capistrano загрузить переменные среды, которые определены на удаленном сервере. Как я могу это сделать?
Похоже, что когда я экспортирую переменные среды внутри файла .bashrc
, они не учитываются Capistrano. Кажется, что Capistrano выполняет /usr/bin/env
для создания среды для выполнения удаленных команд, но это, похоже, не загружает переменные среды из .bashrc
.
Позвольте мне также сказать, что я использую rvm-capistrano
тоже (на всякий случай это может помочь).
Любая подсказка?
Ответы
Ответ 1
Хотя этот вопрос уже более шести месяцев, я оставлю это здесь, если кто-то столкнется с этой проблемой.
Капистрано действительно загружает .bashrc
. Но в верхней части файла вы найдете:
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
Если вы выполните export
ing после этой строки, это не будет достигнуто Capistrano. Решение было просто поставить мою настройку выше этого, и Капистрано работает, как я хочу.
Это решение было также отмечено в этом выпуске GitHub.
Ответ 2
Capistrano не загружает .bashrc
, так как это не интерактивная оболочка. Насколько я помню, хотя он загружает .bash_profile
, хотя вам, вероятно, повезет с этим.
Ответ 3
Вы можете передать текущие переменные среды на удаленное выполнение с помощью ssh, выпустив:
env | ssh [email protected] remote_program
Также приведен пример из здесь
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
похоже, что вы можете использовать with
установить переменные среды для выполнения. Поэтому прочитайте текущие переменные среды и установите их с помощью with
.
Ответ 4
В Capistrano 3 it set :default_env, { ... }
Как здесь:
set :default_environment, {
'env_var1' => 'value1',
'env_var2' => 'value2'
}
Вы можете обратиться к этому:
Предыдущее сообщение..