Rails 7.x环境变量文件位置及配置方法求助
Rails 7.x 环境变量(ENV)相关问题解答
核心结论
Rails 没有内置读取.env类本地配置文件的功能,默认情况下ENV["XXX"]直接读取的是系统/当前Shell会话的环境变量,而非项目内的存储文件。
如何查看当前可用的ENV变量
- 在Rails控制台中查看:
启动Rails控制台(rails console),直接输入ENV可列出所有当前Rails能读取到的环境变量;要查看指定变量,输入ENV["DATABASE_PASSWORD"]即可。 - 在Windows Shell中查看:
- 命令提示符(CMD):执行
echo %DATABASE_PASSWORD% - PowerShell:执行
$env:DATABASE_PASSWORD
- 命令提示符(CMD):执行
如何设置/更新ENV变量
根据生效范围,有两种常见方式:
1. 临时设置(仅当前Shell会话有效)
设置后仅在当前打开的Shell窗口中生效,关闭窗口后失效:
- CMD:先执行
set DATABASE_PASSWORD=你的数据库密码,再启动Rails(rails server或rails console) - PowerShell:先执行
$env:DATABASE_PASSWORD="你的数据库密码",再启动Rails
2. 永久设置(系统/用户级,重启Shell生效)
设置后所有新打开的Shell窗口都能读取到该变量:
- 图形界面操作:
按下Win+R,输入sysdm.cpl回车 → 切换到「高级」选项卡 → 点击「环境变量」→ 在「用户变量」或「系统变量」区域点击「新建」,添加变量名DATABASE_PASSWORD和对应值,确定后关闭所有Shell窗口重新打开即可生效。 - PowerShell命令行操作(用户级):
执行[Environment]::SetEnvironmentVariable("DATABASE_PASSWORD", "你的数据库密码", "User"),执行后重启Shell生效。
补充说明
项目中出现ENV["DATABASE_PASSWORD"]这类调用但无Dotenv/Figaro依赖,大概率是开发人员默认依赖系统环境变量管理敏感配置,或是之前使用过第三方环境变量管理gem后移除,但代码未同步修改。
内容的提问来源于stack exchange,提问作者Learn-ing
相关产品推荐
相关产品推荐

