gpt4 book ai didi

ruby-on-rails - ENV 变量仅在生产控制台中可用,在应用程序中不可用——Rails、Figaro Gem

转载 作者:太空狗 更新时间:2023-10-29 12:18:07 26 4
gpt4 key购买 nike

我正在使用 figaro gem,并根据文档创建了一个包含所有变量的 application.yml 文件。此 application.yml 文件位于共享文件夹中(我使用的是 capistrano),并且符号链接(symbolic link)到当前实时应用程序目录中的 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],这似乎工作得很好。

最佳答案

每条评论:

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

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

关于ruby-on-rails - ENV 变量仅在生产控制台中可用,在应用程序中不可用——Rails、Figaro Gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19459914/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com