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

Rails资源预编译后Heroku Slug体积暴涨,如何缩减vendor目录?

缩减Heroku Slug中vendor目录体积的解决方案

首先定位vendor目录内的空间占用细节,运行以下命令找出最占空间的子目录/文件:

du -ha --max-depth 2 /app/vendor | sort -hr

根据定位结果,执行以下针对性操作:

  • 清理Gem冗余文件
    Ruby项目的vendor/bundle中,多数gem会附带文档、测试用例、示例文件,这些完全可以删除:

    # 删除所有gem的文档目录
    rm -rf /app/vendor/bundle/ruby/*/gems/*/doc
    # 删除测试相关目录
    rm -rf /app/vendor/bundle/ruby/*/gems/*/{test,spec,example,examples}
    

    同时确保Heroku只安装生产环境依赖,构建时使用bundle install --without development test(Heroku默认会自动处理,但手动指定可避免缓存残留)。

  • 排查误打包的非必要文件
    检查vendor目录中是否存在:

    • node_modules目录(若前端依赖被误拷贝到此处,应移至项目根目录并通过.slugignore排除)
    • 备份文件、日志文件、临时编译产物
    • 第三方工具的完整安装包(而非仅运行所需文件)
      找到后直接删除这些冗余内容。
  • 移除未使用的Gem
    检查Gemfile.lock,找出项目中实际未调用的gem,从Gemfile中移除后重新执行bundle install,减少不必要的依赖体积。

  • 清理构建临时文件
    在Heroku的构建流程中添加post-build清理步骤,比如在构建脚本中加入:

    # 清理webpack编译缓存或其他临时文件
    rm -rf /app/vendor/tmp
    
  • 检查大体积二进制Gem
    若发现某个二进制gem(如数据库驱动、图像处理库)占用过大空间,可尝试:

    • 使用轻量替代方案(比如用mini_magick替代完整的rmagick)
    • 确认安装的是针对Heroku环境的预编译版本,避免本地编译产生冗余文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:20:54