Would have removed .. in heroku deploy log

后端 未结 5 894
无人及你
无人及你 2021-01-08 00:52

a few days ago I started to see

 Would have removed best_in_place (2.0.2)
 Would have removed thor (0.16.0)

in my heroku deploy output.

相关标签:
5条回答
  • 2021-01-08 01:19

    @Roman explication is correct.

    If you have a custom buildpack (or you can easily fork it ans use it) it can be fixed in one line

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

    line 408-409 from

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

    to

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

    bundle config --delete remove the config (note the underscore) and, by default dry-run is false.

    0 讨论(0)
  • 2021-01-08 01:22

    That's a bug in Heroku deployment configuration. It writes a file .bundle/config which has a line:

    BUNDLE_DRY_RUN: false
    

    When bundler loads this global config file, it translates this to :dry_run => "false" When it checks for this setting, it's checking settings[:dry_run], which is a string, which evaluates to true.

    You can remove this line by some shell commands (heroku run bash):

    mv -f .bundle/config .bundle/config.orig
    sed '/BUNDLE_DRY_RUN/d' < .bundle/config.orig > .bundle/config
    

    And then run

    bundle clean
    
    0 讨论(0)
  • 2021-01-08 01:30

    This is a bug in the bundler gem – essentially extra debugging info is being dumped to the screen. It should be patched in the next release. The removal would be from a cache, most likely because a newer version is available (latest best_in_place is 2.0.3, Thor 0.17.0). These can be safely ignored.

    0 讨论(0)
  • 2021-01-08 01:37

    This issue has now been fixed with the release of Bundler 1.3.2, which is now in use on Heroku in the latest official Ruby buildpack.

    0 讨论(0)
  • 2021-01-08 01:40

    After some research, it appears this isn't a bug, but a feature!

    as you can see here https://github.com/carlhuda/bundler/pull/2237

    a dry_run flag has been implmented to act as if gems would have been removed and instead of removing them it just prints that

    the actual code is here

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

    as you can see, if dry_run it prints thats. else it removes the gem

    so as this is a feature and not a bug, it is not going to be fixed any time soon. This leaves a question for heroku (which I am waiting for a reply) as to why they are using dry_run..

    Note for those that aren't aware - This bloats slug size

    0 讨论(0)
提交回复
热议问题