【发布时间】:2016-07-19 17:30:14
【问题描述】:
我的 rails (4.2) 应用程序在 Ubuntu (14.02) 系统上通过 Passenger (5.0.28) + Apache (2.4.7) 运行,ruby (2.3.0) 由 rbenv 管理。我使用 Capistrano (3.4.0) 进行部署。
我所有的环境变量都设置在一个非常简单的profile.d 脚本中。
#!/bin/sh
export VAR1=VAL1
export VAR2=VAL2
这就像一个魅力。我的应用程序ENV 具有所有正确的变量,Secrets.yml 已正确填充...除了通过 ssh 使用 Capistrano 部署时,一切正常。
在我的deploy.rb 中,我认为以下内容是相关的:
set :ssh_options, {
forward_agent: true,
paranoid: true,
keys: "~/.ssh/id_rsa.pub"
}
Capistrano 文档非常有限,ssh\server 配置不是我的强项,我似乎无法弄清楚为什么 Capistrano 看不到我的 ENV 变量。如果我在部署流程中运行puts ENV.inspect,我会得到诸如"TERM_PROGRAM"=>"Apple_Terminal" 和我的本地计算机用户信息之类的东西。为什么 Capistrano 不使用远程环境?如何修改服务器端或部署脚本中的配置来解决此问题?
感谢您的帮助。
【问题讨论】:
标签: ruby-on-rails capistrano passenger rbenv