【发布时间】:2019-07-05 13:50:15
【问题描述】:
我有一个 Rails 5 应用程序,我正在尝试将我的环境变量导入一个 yaml 文件中,然后我可以将其导入到 environment.rb 中。我的config/aws.yml 如下所示:
S3_BUCKET: <%= ENV["S3_BUCKET"] %>
AWS_ACCESS_KEY_ID: <%= ENV["AWS_ACCESS_KEY_ID"] %>
AWS_SECRET_ACCESS_KEY: <%= ENV["AWS_SECRET_ACCESS_KEY"] %>
然后在我的environment.rb 我有以下内容:
require_relative 'application'
aws_file = File.join(Rails.root, 'config', 'aws.yml')
if File.exist?(aws_file)
YAML.safe_load(File.open(aws_file)).each do |k, v|
ENV[k.to_s] = v
end
end
运行我的rails c 这是我得到的:
[1] pry(main)> ENV.fetch('S3_BUCKET')
=> "<%= ENV[\"S3_BUCKET\"] %>"
如何传递实际的环境变量而不是将环境变量的名称作为字符串提取?
编辑:添加更多相关信息
我的凭据存储在我的elastic-beanstalk 配置中,我正在尝试将配置中的值加载到我的yaml 文件中。
【问题讨论】:
-
您的
yml文件使用erb语法似乎很好奇。您试图通过引用ENV变量来加载ENV变量似乎也很奇怪。我认为您的yml文件中的values将是您要加载到ENV变量中的实际值。 -
@jvillian 这些值在我的
elasticbeanstalk配置中,我正在尝试从那里将它们加载到yaml文件中 -
您可能应该在您的问题中说明这一点。我不使用
elasticbeanstalk。但是,如果config文件也是yml文件,那么您似乎想要加载它,然后根据其内容设置您的ENV变量。 -
我不清楚您要做什么。我在你的代码中没有看到任何关于 elastic-beanstalk 的内容。
标签: ruby-on-rails environment-variables ruby-on-rails-5 amazon-elastic-beanstalk