rails7: .env 根据环境加载

根据不同的环境加载不同的配置
更新于: 2023-12-06 22:21:04

安装

添加 dotenv-rails 到项目中

gem 'dotenv-rails'

添加 .env

  • .env
  • .env.production (注意要添加到 .gitignore 文件中)
REDIS_URL=redis://4Hw$abc@localhost:6379/1

获取

ENV.fetch('REDIS_URL')

.gitignore

虽然并不推荐将 .env.production 写出来,但这样很方便。

# Ignore all environment files (except templates).
/.env*
!.env.production
!/.env*.erb

启动不同环境

  • rails c: 普通的 development 环境
  • RAILS_ENV=production rails c: 生产环境

其它信息

.env 文件通常不建议在生产环境中使用,因为它可能包含敏感信息,而且在生产环境中直接使用.env文件的方式可能存在一些安全风险。
在上面的Gemfile配置中,groups: [:development, :test] 意味着 dotenv-rails gem 只会在开发环境和测试环境中加载。这是为了确保在生产环境中不会加载.env文件,从而减小泄漏敏感信息的风险。
在生产环境中,通常会使用其他方式来设置环境变量,例如通过服务器的环境变量、配置管理工具或者专门的环境变量管理服务。这样可以更加安全地管理生产环境中的配置信息。
如果你在生产环境中也想使用.env文件,可以将其配置为生产环境可用,但要确保 .env 文件中的敏感信息得到了适当的保护,比如使用加密或其他安全措施。

参考