【发布时间】:2013-10-27 21:39:29
【问题描述】:
我正在使用 figaro gem,并根据文档创建了一个 application.yml 文件,其中包含我的所有变量。这个 application.yml 文件位于一个共享文件夹中(我正在使用 capistrano),并且符号链接到当前实时应用程序目录中的 config/application.yml ,但是我只能访问 rails 控制台中的变量而不是应用程序。我的凭据如下(实际细节省略):
注意:我已尝试删除“”语音标记,并在此列表前加上生产:每行有 2 个空格,没有制表符,它不能解决任何问题。该文件的权限与databse.yml文件的权限完全相同,777,实现方式相同。
application.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-vps987654321@
之后设置了我的 linux 盒子如何让这些变量在应用程序本身中可访问?
如果有人需要更多代码,请大声疾呼。
编辑 我删除了 figaro gem 实现了以下 railscasts 教程中所示的 yaml 配置:http://railscasts.com/episodes/85-yaml-configuration-revised。我认为这实际上是 figaro gem 正在做的事情,但是本教程没有使用 ENV 变量,而是使用了 CONFIG[:variables] 似乎效果很好。
【问题讨论】:
-
乘用车还是独角兽?
-
我正在使用 nginx、unicorn、postgres
-
我会直接使用 yml 而不是 s3 机密的环境变量,但如果你真的想用 env 方式来做:对于 nginx,你必须在主要上下文中设置 env vars你的配置文件。您遇到问题的原因是 nginx 以自己的用户身份运行,当您登录并运行控制台时,您是另一个用户。
-
将此作为答案,我很乐意接受。我更改为已添加到问题中的 yml 配置,但我不知道为什么它们的变量不会显示。您的解释很有道理,谢谢!
标签: ruby-on-rails ruby linux environment-variables