pet*_*ept 9 ruby-on-rails aws-opsworks
我正在运行Ubuntu 14.04 LTS 64位Rails应用程序,我无法访问我的App环境变量.
在OpsWorks App面板中,我设置了我的环境变量,比如说:
MYKEY: 1234
Run Code Online (Sandbox Code Playgroud)
然后我再次保存并部署我的应用程序以使这些可见.
在我的Rails应用程序或rails控制台中,我得到零:
$ bundle exec rails c production
>ENV["MYKEY"]
=> nil
Run Code Online (Sandbox Code Playgroud)
我试过重启服务器.我不确定我缺少什么,我一直在其他服务中使用环境变量.
如何追踪这些应该设置的位置?
OpsWorks 将环境变量存储在不同的位置,具体取决于您要部署的应用程序类型。在 Rails/Passenger 上,它们应该保存在 Apache 配置文件中#{your_app_name}.conf。(来源)
这意味着它们在您的正常 shell 环境中不可用。
我知道 Node.js 配方将所有内容存储在一个/srv/www/#{app_name}/shared/app.env文件中...然后将其引入环境以运行 Node 服务器。此实现细节还意味着您可以编写获取该app.env文件的 shell 脚本,然后调用某些 Node 脚本或其他脚本。
当然,Rails 不是 Node。我不知道环境变量是否也存储在其他地方:快速查看 OpsWorks 食谱中的 Rails 食谱没有发现任何明显的东西,但也许我错过了一些东西。
根据您在 OpsWorks 说明书中进行的修改量,您可以创建一个执行如下操作的部署配方:
application_environment_file do
user deploy[:user]
group deploy[:group]
path ::File.join(deploy[:deploy_to], "shared")
environment_variables deploy[:environment_variables]
end
(也许调整路径)
然后,要运行控制台,当您通过 SSH 连接到服务器时,请执行以下操作
sudo source /srv/www/my_app_name/shared/app.env; bundle exec rails console -e production管他呢。
| 归档时间: |
|
| 查看次数: |
2624 次 |
| 最近记录: |