ruby-on-rails – Heroku bundler不删除旧宝石版本

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Heroku bundler不删除旧宝石版本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Cleaning up the bundler cache when deploying to heroku2
我只是更新了几个宝石,但是当我推送到heroku,旧的仍然被复制在供应商/捆绑商,我有一个消息
Using bson (1.8.2)
[...]
Would have removed bson (1.5.2)

事实上,在供应商/捆绑商中,旧的宝石仍然被复制.

但是,如果我创建一个新的雪松应用程序,并从头开始推送到Heroku,旧的宝石不会被复制到供应商/捆绑包中,并且按预期工作.

旧的宝石版本既不在Gemfile中,也不是Gemfile.lock,所以我不明白heroku bundler在哪里得到这个(过时的)信息.

任何提示
谢谢,
马尔科

解决方法

这是Heroku部署配置中的一个错误.它写一个文件.bundle / config有一行:
BUNDLE_DRY_RUN: false

当bundler加载这个全局配置文件时,它会将其转换为:dry_run => “false”当它检查此设置时,它将检查设置[:dry_run],它是一个字符串,其计算结果为true.

感谢@Roman在类似的线程中的答案

我的解决方案是(因为我有一个自定义构建包)来修补它

https://github.com/heroku/heroku-buildpack-ruby/blob/master/lib/language_pack/ruby.rb

线408-409

puts "Cleaning up the bundler cache."
    pipe "bundle clean"

puts "Cleaning up the bundler cache."
    pipe "bundle config --delete dry_run"
    pipe "bundle clean"

bundle config –delete删除配置(注意下划线),默认情况下,dry-run为false.
作为结果

Removing bson_ext (1.8.2)

猜你在找的Ruby相关文章