Heroku部署LocomotiveCMS失败:无法加载locomotive/wagon/standalone_server
解决LocomotiveCMS部署Heroku后无法加载
locomotive/wagon/standalone_server的问题 问题核心
LocomotiveCMS Wagon的standalone_server是本地开发专用组件,Heroku生产环境下无法直接调用该模块,且3.1.1版本的Wagon生产gem包可能未包含该文件,这是部署崩溃的核心原因。结合你的环境(Heroku-20、Ruby 2.7.6、locomotivecms_wagon 3.1.1),以下是针对性修复方案:
具体修复步骤
1. 调整Gemfile生产依赖
确保生产环境包含标准Web服务器及必要组件,修改Gemfile内容:
gem 'locomotivecms_wagon', '3.1.1' gem 'puma' gem 'rack'
执行本地依赖更新并提交锁文件:
bundle install --without development test git add Gemfile Gemfile.lock git commit -m "Fix production dependencies"
2. 配置正确的Procfile
替换依赖wagon serve的启动命令,使用Puma作为生产服务器,在项目根目录创建/修改Procfile:
web: bundle exec puma -p $PORT -e $RACK_ENV
若偏好rackup启动,也可配置为:
web: bundle exec rackup config.ru -p $PORT
3. 添加/修正config.ru入口文件
如果项目无config.ru,创建该文件并指定适配3.1.1版本的Wagon服务器入口:
require 'locomotive/wagon' # 绑定Heroku分配的端口 Locomotive::Wagon::Server.set(:port, ENV['PORT'] || 3000) # 启动Wagon服务器 run Locomotive::Wagon::Server
4. 本地验证生产启动逻辑
在本地模拟Heroku生产环境,确认启动无异常:
RAILS_ENV=production bundle exec puma -p 3000
本地启动正常后,重新部署到Heroku:
git push heroku main
额外排查要点
- 查看Heroku启动日志:
heroku logs --tail,确认是否有依赖缺失或文件路径错误 - 检查Heroku上的gem文件结构:
heroku run ls -la vendor/bundle/ruby/2.7.0/gems/locomotivecms_wagon-3.1.1/lib/locomotive/wagon/,若不存在standalone_server.rb,则说明该版本生产包不含此组件,必须使用标准Rack/Puma启动方式 - 确认Heroku环境变量:在Heroku控制台设置
RACK_ENV=production,避免加载开发环境配置
内容的提问来源于stack exchange,提问作者nickhj28
相关产品推荐
相关产品推荐

