ruby-on-rails - 环境变量未加载到应用程序中?
问题描述
.env
在 Rails 5 中,我曾经在应用程序的根目录中创建一个名为的文件,向其中添加如下内容:
MY_VARIABLE=1234
并访问应用程序内的变量ENV["MY_VARIABLE"]
但是在 rails 6 应用程序中,我做同样的事情并返回nil
. 当我运行时,ENV
我看到很多环境变量,但没有一个在.env
.
我不确定为什么会这样?
解决方案
运行spring stop
并重新启动您的 rails 应用程序。但是,如果这不起作用,我想告诉您 Rails 6 现在支持多个凭据。您可以使用以下格式:
从您的 rails 终端,运行EDITOR=vim rails credentials:edit
. 如果您没有,这将在里面为您创建credentials.yml.enc
和master.key
归档。/config
然后您可以将您的凭据放入这样的 YAML 文件中
development:
aws:
access_key_id: 123
secret_access_key: 345
production:
aws:
access_key_id: 1f3649fe-ebbd-11e9-81b4-2a2ae2dbcce4
secret_access_key: 203060d3a5456fa6cd2da3c958001440
您可以通过这种方式获取凭据
> Rails.application.credentials[Rails.env.to_sym][:aws][:access_key_id]
#=> "123"
然后你可以继续bundle install
运行rails server
您可以从此链接阅读有关如何获取凭据的信息。
推荐阅读
- asp.net - 获取正确的控制器模型的问题
- javascript - 如何切换 nativeElement
- c++ - Qt中的自动排他工具按钮
- ansible - Ansible 如何使用循环在一台主机上同时运行多个任务
- angular - 派生类测试。失败:无法解析所有参数:(?,?)(Angular 5)
- python - 值列表彼此的余弦相似度
- java - Android可以将图像作为输入流插入吗?
- javascript - 重定向我的 js 代码后,我刷新页面后才起作用
- javascript - 如何在javascript中从“datetime-local”转换为mysql.Timestamp
- excel - 如何将数组中的数据传递到html正文的一部分