在发动机场中设置环境变量

Cle*_*elm 6 ruby-on-rails engineyard

我从heroku了解到,可以通过heroku config:add MY_ENV_VAR=123本地运行来添加环境变量.如何与发动机厂实现同样的目标?

Joh*_*ohn 9

我们遇到了同样的问题,并向EngineYard寻求帮助.来自安永的Jim Neath回复了以下回复:

不幸的是,乘客没有从系统中获取环境变量.你需要做的是创建一个ruby包装器来定义你的环境变量并使用它来启动乘客,如下所述:

http://blog.phusion.nl/2008/12/16/passing-environment-variables-to-ruby-from-phusion-passenger/

我为您创建了一个基本的自定义厨师食谱,它将做到这一点:

https://github.com/jimneath/ey-cloud-recipes/tree/master/cookbooks/passenger_env_vars

您需要使用环境变量更新以下文件:

/ey-cloud-recipes/blob/master/cookbooks/passenger_env_vars/templates/default/env.custom.erb

  • 我想我应该让每个人都知道这些自定义食谱中有错误(大概是因为它们太旧了).default.rb应该是:`如果[ 'app_master', '应用', '独奏']包括.?(节点[:instance_role])`代替`如果[ 'app_master', '应用', '独奏'].包括(节点[:角色])?` (2认同)

小智 4

我认为你不能=/。

我们在 Rails 应用程序中使用的一种解决方法是通过 ssh(ey ssh)连接到 EngineYard 并在 vim /data/your_app_name/shared/config/exports.rb 中创建一个文件。该文件可能如下所示:

ENV["AWS_ACCESS_KEY_ID"] = "your key"
ENV["AWS_SECRET_ACCESS_KEY"] = "your secret"
ENV["AWS_BUCKET"] = "your bucket"
Run Code Online (Sandbox Code Playgroud)

然后在 config/boot.rb 中您需要该文件:

require File.expand_path('./exports', File.dirname(__FILE__))
Run Code Online (Sandbox Code Playgroud)

这既不漂亮,也不轻松。然而,它允许您在应用程序中使用您不应该检查源代码控制的秘密!