You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署Ruby on Rails 7应用至Heroku时遇语法错误求助

问题原因分析

1. 语法错误根源

你将Heroku终端命令直接写入了Rails配置文件config/environments/production.rb,这是完全错误的操作。production.rb是Ruby代码文件,仅支持Ruby语法的配置代码,不能放置heroku config:set这类shell命令。错误提示中出现的...oku config:set RAILS_MASTER_KEY=ENV['RAILS_MASTER_KEY']就是你误写入的内容,直接触发了Ruby解析语法错误。

2. 环境变量配置无效原因

你的dotenv-rails gem仅在development和test组加载,生产环境(production)不会加载该gem,因此.env文件中配置的ENV['RAILS_MASTER_KEY']在Heroku生产环境完全无效。此外,.env文件不应提交至Git仓库,Heroku也不会读取该文件。


正确解决步骤

第一步:修复production.rb语法错误

打开config/environments/production.rb,定位到第22行,删除那行错误的heroku config:set命令,确保文件内仅保留合法的Ruby配置代码。

第二步:正确配置Heroku端RAILS_MASTER_KEY

方法1:通过Heroku CLI设置(推荐)

在你的Ubuntu虚拟机终端执行以下命令:

# 替换为本地master.key文件中的实际密钥字符串
heroku config:set RAILS_MASTER_KEY=你的master.key完整值

示例:若master.key为abc123def456xyz789,则执行:

heroku config:set RAILS_MASTER_KEY=abc123def456xyz789

方法2:通过Heroku网页控制台设置

  1. 登录Heroku官网,进入目标应用页面
  2. 点击Settings标签页
  3. 找到Config Vars区域,点击Reveal Config Vars
  4. 添加新变量:键为RAILS_MASTER_KEY,值为本地master.key文件的完整字符串,保存即可

第三步:确认本地凭证配置正确

  1. 确保本地config/credentials.yml.enc和config/master.key文件存在且匹配(注意:master.key绝不能提交到Git仓库,Git会自动忽略该文件)
  2. 生产环境中,Rails会自动读取Heroku上的RAILS_MASTER_KEY环境变量,用于解密credentials.yml.enc

第四步:重新部署应用

修复配置后,重新推送代码至Heroku:

git add .
git commit -m "修复production.rb语法错误并配置RAILS_MASTER_KEY"
git push heroku main

注意事项
  • 严禁将master.key提交至Git仓库,该密钥用于解密凭证,泄露会引发安全风险
  • dotenv-rails仅适用于开发/测试环境,生产环境的环境变量必须通过Heroku的Config Vars配置
  • 部署前可本地预编译资产测试,执行RAILS_ENV=production rake assets:precompile,确认无语法错误

内容的提问来源于stack exchange,提问作者Yuriy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 04:24:17