将在heroku部署日志中删除..

Nic*_*nto 16 deployment logging heroku

几天前我开始看到了

 Would have removed best_in_place (2.0.2)
 Would have removed thor (0.16.0)
Run Code Online (Sandbox Code Playgroud)

在我的heroku部署输出中.

它曾经说它删除了宝石.

有谁知道这是怎么回事?

更新

heroku更新到最新的ruby 1.9.3和捆绑缓存清理很好.

Rom*_*man 13

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

BUNDLE_DRY_RUN: false
Run Code Online (Sandbox Code Playgroud)

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

你可以通过一些shell命令删除这一行(heroku run bash):

mv -f .bundle/config .bundle/config.orig
sed '/BUNDLE_DRY_RUN/d' < .bundle/config.orig > .bundle/config
Run Code Online (Sandbox Code Playgroud)

然后运行

bundle clean
Run Code Online (Sandbox Code Playgroud)


cat*_*sby 10

这是捆绑器gem中的一个错误 - 本质上是额外的调试信息被转储到屏幕上.它应该在下一个版本中打补丁.去除会从缓存中,很可能是因为一个较新版本(最新的best_in_place是2.0.3,Thor0.17.0或更新版本).这些可以安全地忽略.


Nic*_*nto 6

经过一番研究,看来这不是一个bug,而是一个功能!

你可以在这里看到https://github.com/carlhuda/bundler/pull/2237

dry_run已经标记了一个标志,表明好像已经删除了宝石,而不是删除它只是打印它

实际代码在这里

 if Bundler.settings[:dry_run]
          Bundler.ui.info "Would have removed #{output}"
        else
          Bundler.ui.info "Removing #{output}"
          FileUtils.rm_rf(gem_dir)
        end
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,如果dry_run打印出那些.否则它会移除宝石

因此,这是一个功能,而不是一个错误,它不会很快修复.这给heroku留下了一个问题(我正在等待回复),为什么他们使用dry_run ..

注意那些不知道的 - 这个膨胀的slug大小


wup*_*tah 2

这个问题现已通过 Bundler 1.3.2 的发布得到修复,该版本现已在最新的官方 Ruby 构建包中的 Heroku 上使用。