ruby-on-rails - Capistrano 和环境变量

标签 ruby-on-rails environment-variables capistrano capistrano3

我已改用 environment variables for configuration它工作得很好 - 除非我必须使用 capistrano 部署或运行​​任务。

Capistrano 3 似乎执行每个前缀为 /usr/bin/env 的命令它会删除我通过 .bashrc 设置的所有环境变量.

编辑 - 在进行更多研究后,这可能不是问题,问题可能是因为 capistrano 作为非登录、非交互式 shell 执行并且不加载 .bashrc.bash_profile 。但仍然卡住了。

确保 capistrano 执行任务时设置环境变量的最佳方法是什么?

最佳答案

您可能最好查看 difference between ENVIRONMENT VARIABLES and SHELL VARIABLES

当您启动 SSH 时,您的应用程序将加载 .bashrc 文件中定义的 SHELL 变量。这些仅在 shell 的生命周期中存在,因此,我们不像 ENV vars

使用它们

您可能最好将 ENV 变量放入:

/etc/environment

像这样:

export ENVIRONMENT_VAR=value

这将使变量在整个系统中可用,而不仅仅是在不同的 shell session 中

<小时/>

更新

你试过吗

Capistrano: Can I set an environment variable for the whole cap session?

set :default_env, { 
  'env_var1' => 'value1',
  'env_var2' => 'value2'
}

关于ruby-on-rails - Capistrano 和环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23672631/

相关文章:

linux - 与 :linked_dirs 一起使用时,使用 Amazon EFS(绑定(bind)安装文件夹)的 Capistrano 部署失败

ruby-on-rails - PG::ConnectionBad: FATAL: EC2 amazon 上不存在数据库 "db_name"

ruby-on-rails - 在 Heroku 上调试 Paperclip

ruby-on-rails - 对于 Ruby, "gem install"是否使用 "--include-dependencies"...只是文档有点过时了?

ruby-on-rails - Rails redirect_to Ruby 2.2/Rails 4.2 的新行为?

bash - Bash 中 __FILE__ 和 __LINE__ 的等价物

ruby-on-rails - Rails Capistrano 在 Assets :precompile SSHKIT 上失败

ruby-on-rails - 如何使用 Rails 3 验证根据两个值确定唯一性范围?

laravel - docker-compose.yml可以从laravel .env文件读取数据库连接吗?

ruby - 如何在 Ruby 脚本中为命令 shell 获取环境变量?