前几天,我开始看
Would have removed best_in_place (2.0.2)
Would have removed thor (0.16.0)
在我的Heroku部署输出。
它曾经说,它去掉了宝石。
谁知道什么与怎么了?
更新
Heroku的更新到最新的1.9.3红宝石和打捆缓存清理罚款。
前几天,我开始看
Would have removed best_in_place (2.0.2)
Would have removed thor (0.16.0)
在我的Heroku部署输出。
它曾经说,它去掉了宝石。
谁知道什么与怎么了?
更新
Heroku的更新到最新的1.9.3红宝石和打捆缓存清理罚款。
此问题已得到修复与捆扎机1.3.2的发布,这是现在在最新的官方红宝石buildpack在Heroku上使用。
这是一个在Heroku的部署配置的错误。 它写入一个文件.bundle /配置具有一行:
BUNDLE_DRY_RUN: false
当捆绑加载此全局配置文件,将其转换这:dry_run =>“假”当检查此设置,它的检查设置[:dry_run],它是一个字符串,其计算结果为true。
您可以通过一些shell命令(Heroku的运行bash)的删除此行:
mv -f .bundle/config .bundle/config.orig
sed '/BUNDLE_DRY_RUN/d' < .bundle/config.orig > .bundle/config
然后运行
bundle clean
这是捆绑宝石中的错误 - 本质上额外调试信息被转储到屏幕。 它应该在未来的版本中修补。 去除会从缓存中,很可能是因为一个较新版本(最新best_in_place
是2.0.3, Thor
0.17.0或更新版本)。 这些可以被忽略。
经过一番研究,看来这是不是一个错误,而是一个功能!
你可以在这里看到https://github.com/carlhuda/bundler/pull/2237
一个dry_run
标志已implmented仿佛宝石会被删除采取行动,而不是删除他们只是认为打印
实际的代码是在这里
if Bundler.settings[:dry_run]
Bundler.ui.info "Would have removed #{output}"
else
Bundler.ui.info "Removing #{output}"
FileUtils.rm_rf(gem_dir)
end
你可以看到,如果dry_run它打印多数民众赞成。 否则它消除了宝石
所以,因为这是一个功能,而不是一个错误,它不会很快被固定的任意时间。 这留下了Heroku的一个问题(我正在等待答复),为什么他们正在使用dry_run ..
注意:对于那些不知道-这腌slug
大小
@Roman解释是正确的。
如果你有一个自定义buildpack(或者你可以很容易地叉它ANS使用它),它可以固定在一个线
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"
捆绑配置--delete删除的配置(注意下划线),默认情况下dry-run
是假的。