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

Heroku生产环境升级至heroku-22后Rails部署报fiber加载错误

TLDR; 我在Heroku上运行一个Rails应用,搭建了staging(预发布)和production(生产)环境组成的流水线。由于heroku-18堆栈已终止支持(EOL),正在将应用升级至heroku-22。预发布环境升级正常,但生产环境启动时出现错误:Unable to load application: LoadError: cannot load such file -- fiber

应用进程

  • web.1:运行Rails的Puma Web服务器
  • worker.1:运行Sidekiq的工作进程

web.1 崩溃日志

heroku[web.1]: Starting process with command `bundle exec puma -p 11167`
app[web.1]: [2] Puma starting in cluster mode...
app[web.1]: [2] * Puma version: 6.2.2 (ruby 3.2.2-p53) ("Speaking of Now")
app[web.1]: [2] *  Min threads: 5
app[web.1]: [2] *  Max threads: 5
app[web.1]: [2] *  Environment: production
app[web.1]: [2] *   Master PID: 2
app[web.1]: [2] *      Workers: 2
app[web.1]: [2] *     Restarts: (✔) hot (✖) phased
app[web.1]: [2] * Preloading application
app[web.1]: [2] ! Unable to load application: LoadError: cannot load such file -- fiber
app[web.1]: bundler: failed to load command: puma (/app/vendor/bundle/ruby/3.2.0/bin/puma)
app[web.1]: <internal:/app/vendor/ruby-3.2.2/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require': cannot load such file -- fiber (LoadError)
app[web.1]: from <internal:/app/vendor/ruby-3.2.2/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
app[web.1]: from /app/vendor/bundle/ruby/3.2.0/gems/zeitwerk-2.6.8/lib/zeitwerk/kernel.rb:38:in `require'
app[web.1]: from /app/vendor/bundle/ruby/3.2.0/gems/actionview-7.0.4.3/lib/action_view/renderer/streaming_template_renderer.rb:3:in `<top (required)>'
...

worker.1 崩溃日志

heroku[worker.1]: Starting process with command `bundle exec sidekiq`
heroku[worker.1]: State changed from starting to up
app[worker.1]: 2 TID-398 INFO: Booting Sidekiq 4.0.2 with redis options {:url=>"REDACTED", :ssl_params=>{:verify_mode=>0}}
app[worker.1]: bundler: failed to load command: sidekiq (/app/vendor/bundle/ruby/3.2.0/bin/sidekiq)
app[worker.1]: <internal:/app/vendor/ruby-3.2.2/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require': cannot load such file -- fiber (LoadError)
app[worker.1]: from <internal:/app/vendor/ruby-3.2.2/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
app[worker.1]: from /app/vendor/bundle/ruby/3.2.0/gems/zeitwerk-2.6.8/lib/zeitwerk/kernel.rb:38:in `require'
app[worker.1]: from /app/vendor/bundle/ruby/3.2.0/gems/actionview-7.0.4.3/lib/action_view/renderer/streaming_template_renderer.rb:3:in `<top (required)>'
...

环境详情

  • ruby 3.2.2
  • rails 7.0.4.3
  • puma 6.2.2
  • sidekiq 4.0.2(暂未升级,不影响web.1启动)
  • 预发布与生产环境高度相似,仅生产环境多了newrelic_rpm依赖(该依赖未出现在崩溃调用栈中),资源配置几乎一致。

已尝试的解决方法(均失败后回滚)

  • 通过Heroku流水线功能将预发布应用晋升至生产环境
  • 用CLI升级生产环境堆栈后手动部署
  • 联系Heroku客服
  • 设置环境变量HEROKU_DEBUG_RAILS_RUNNER=1,未获取到额外日志信息
  • 部署失败后重启dynos
  • 将dynos缩容至0后重新部署再扩容

内容的提问来源于stack exchange,提问作者Antón Morant

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 08:42:24