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

部署Rails应用到Heroku时出现rake加载失败错误求助

排查Heroku部署Rails应用时的rake检测失败问题

首先要提一句:你执行的部署命令 git push heroku origin remote 是错误的,正确的推送命令应该是 git push heroku <本地分支名>:main(比如本地分支是main的话,直接运行 git push heroku main 即可),先修正这个命令,再排查下面的核心问题:

可能的原因及解决方案

1. Rake未包含在Production环境的Gem组中

Heroku默认只会安装Gemfile里production组的gem,如果你的rake被限制在development或test组,就会导致部署时找不到rake依赖。

  • 打开你的Gemfile,确保 gem 'rake' 没有被包裹在 group :development, :test do ... end 块里,应该放在全局范围(所有环境都可用),或者明确添加到production组:
    gem 'rake' # 全局范围,所有环境都可调用
    # 或者单独指定production组
    group :production do
      gem 'rake'
    end
    
  • 模拟Heroku的安装环境验证:执行 bundle install --without development test,然后运行 bundle exec rake -P RAILS_ENV=production,如果此时报错,说明就是这个问题。调整Gemfile后,执行 bundle install,提交Gemfile和Gemfile.lock到git,再重新推送。

2. Binstubs文件异常或未提交到Git

Heroku依赖项目根目录下bin/文件夹里的binstubs文件(比如bin/rake),如果这些文件缺失、内容错误或者未提交到git,会导致rake加载失败。

  • 重新生成正确的binstubs:
    bundle binstubs rake --force
    
  • 将bin/目录下的所有文件添加到git:
    git add bin/
    git commit -m "Fix binstubs for rake execution"
    
  • 重新推送到Heroku。

3. Heroku的Bundle环境变量配置错误

检查Heroku上的BUNDLE_WITHOUT配置,确保没有误排除production环境:

  • 查看当前配置:
    heroku config:get BUNDLE_WITHOUT
    
  • 如果输出包含production,说明配置错误,执行以下命令修正:
    heroku config:set BUNDLE_WITHOUT="development:test"
    

4. 清除Heroku缓存后重新部署

Heroku的缓存可能保留了旧的依赖文件,导致加载异常:

  • 先安装heroku-repo插件(如果未安装):
    heroku plugins:install heroku-repo
    
  • 清除缓存:
    heroku repo:purge_cache
    
  • 重新推送代码:
    git push heroku main
    

额外验证

你提供的bin/rake文件内容:

require_relative "config/application"
Rails.application.load_tasks

这个是符合Rails应用的rake文件规范的,所以重点还是前面几个排查方向。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:29:05