如何在Rails 7应用中配置dotenv gem以设置环境变量
在Rails 7中配置dotenv gem并设置环境变量
1. 安装dotenv-rails gem
打开项目根目录的Gemfile,添加gem依赖(通常仅在开发、测试环境使用):
gem 'dotenv-rails', groups: [:development, :test]
执行安装命令:
bundle install
2. 创建环境变量配置文件
在项目根目录创建.env文件,用于存储本地环境变量:
touch .env
重要提醒:
.env包含API密钥、数据库密码等敏感信息,务必确认它在.gitignore中(Rails 7默认已添加),禁止提交到版本控制。
如果需要为不同环境配置专属变量,可创建对应文件,比如.env.development(仅开发环境加载)、.env.test(仅测试环境加载),dotenv会自动根据当前Rails环境加载匹配的文件。
3. 添加环境变量
在.env(或对应环境文件)中按KEY=VALUE格式定义变量,示例:
DATABASE_URL=postgres://myuser:mypassword@localhost:5432/myapp_dev STRIPE_API_KEY=sk_test_abc123456789 SECRET_KEY_BASE=your-long-secret-key-here
- 变量值无需加引号(除非值包含空格或特殊字符)
- 等号两侧不要添加空格
4. 在Rails中使用环境变量
在应用代码或配置文件中,通过ENV['变量名']直接调用即可:
- 示例1:在
config/database.yml中配置数据库连接
development: url: <%= ENV['DATABASE_URL'] %>
- 示例2:在控制器中调用API密钥
class PaymentsController < ApplicationController def create stripe = Stripe::Charge.create( amount: 1000, currency: 'usd', source: params[:stripe_token], api_key: ENV['STRIPE_API_KEY'] ) end end
关键注意事项
- 环境变量优先级:系统级环境变量会覆盖dotenv加载的变量,避免本地变量干扰生产环境配置。
- 生产环境建议:生产环境优先使用部署平台提供的环境变量管理功能(如Heroku Config Vars、AWS Secrets Manager),无需依赖dotenv。若必须在生产环境使用dotenv,需确保
.env.production文件安全存储,绝不提交到版本控制。 - 控制台/rake任务:dotenv-rails会自动在Rails控制台和rake任务启动时加载变量,无需额外配置。
内容的提问来源于stack exchange,提问作者Pooja M
相关产品推荐
相关产品推荐

