2

我正在使用 figaro gem 并创建了一个application.yml包含我所有变量的文件。这个 application.yml 文件位于一个共享文件夹中(我正在使用 capistrano),并且符号链接到当前实时应用程序目录中的 config/application.yml,但是我只能访问 rails 控制台中的变量,而不是应用程序。我的凭据如下(省略真实细节):

注意:我尝试删除 "" 语音标记,并在此列表前加上生产:每行有 2 个空格,没有标签,它不能解决任何问题。该文件的权限与以相同方式实现的databse.yml文件完全相同,为777。

应用程序.yml

FFMPEG_LOCATION: "/path/to/ffmpeg"
EMAIL_USERNAME: "me@gmail.com"
EMAIL_PASSWORD: "password"
S3_BUCKET: "my_bucket"
AWS_SECRET_KEY_ID: "my_secret_key"
AWS_ACCESS_KEY_ID: "my_access_key"

我可以在生产控制台中访问这些变量 =>

Loading production environment (Rails 3.2.14)
irb(main):001:0> ENV["S3_BUCKET"]
=> "my-s3-bucket-name"

但是,它们不会在应用程序本身中返回任何内容。我在 Ryan 的优秀 Pro railscast 剧集http://railscasts.com/episodes/335-deploying-to-a-vps之后设置了我的 linux 盒子

如何在应用程序本身中访问这些变量?

如果有人需要更多代码,请大声喊叫。

编辑 我删除了 figaro gem 实现了以下 railscasts 教程中显示的 yaml 配置:http ://railscasts.com/episodes/85-yaml-configuration-revised 。我认为这实际上是 figaro gem 正在做的事情,但是本教程没有使用 ENV 变量,而是使用了 CONFIG[:variables] 似乎效果很好。

4

1 回答 1

2

每条评论:

Nginx 以自己的用户身份运行,因此环境变量需要存在于它的空间中。作为用户登录并运行控制台时,您访问的环境变量集与 nginx 用户访问的环境变量不同。

如果您选择将它们添加到main上下文中的 nginx 配置中,则可以执行此操作。但是使用直接 yaml 并将您的秘密令牌添加到您的 yaml 文件中可能更容易。

于 2013-10-19T02:15:11.237 回答