bundler 2.2.22 → 2.2.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of bundler might be problematic. Click here for more details.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +65 -0
 - data/lib/bundler.rb +4 -9
 - data/lib/bundler/build_metadata.rb +2 -2
 - data/lib/bundler/cli.rb +12 -9
 - data/lib/bundler/cli/cache.rb +1 -1
 - data/lib/bundler/cli/check.rb +1 -1
 - data/lib/bundler/cli/doctor.rb +1 -1
 - data/lib/bundler/cli/exec.rb +1 -6
 - data/lib/bundler/cli/gem.rb +3 -2
 - data/lib/bundler/cli/install.rb +4 -17
 - data/lib/bundler/cli/list.rb +7 -1
 - data/lib/bundler/cli/open.rb +1 -2
 - data/lib/bundler/cli/update.rb +1 -1
 - data/lib/bundler/definition.rb +38 -53
 - data/lib/bundler/dsl.rb +22 -12
 - data/lib/bundler/errors.rb +1 -1
 - data/lib/bundler/index.rb +1 -5
 - data/lib/bundler/installer/gem_installer.rb +3 -16
 - data/lib/bundler/installer/standalone.rb +14 -9
 - data/lib/bundler/lockfile_parser.rb +1 -0
 - data/lib/bundler/plugin.rb +2 -0
 - data/lib/bundler/plugin/index.rb +4 -1
 - data/lib/bundler/plugin/installer.rb +1 -1
 - data/lib/bundler/resolver.rb +10 -17
 - data/lib/bundler/rubygems_ext.rb +22 -6
 - data/lib/bundler/rubygems_gem_installer.rb +5 -1
 - data/lib/bundler/runtime.rb +16 -9
 - data/lib/bundler/settings.rb +6 -6
 - data/lib/bundler/setup.rb +2 -2
 - data/lib/bundler/shared_helpers.rb +0 -7
 - data/lib/bundler/source.rb +4 -2
 - data/lib/bundler/source/git/git_proxy.rb +1 -2
 - data/lib/bundler/source/rubygems.rb +21 -7
 - data/lib/bundler/source/rubygems_aggregate.rb +4 -0
 - data/lib/bundler/source_list.rb +16 -7
 - data/lib/bundler/spec_set.rb +14 -37
 - data/lib/bundler/templates/Executable.bundler +6 -6
 - data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +12 -2
 - data/lib/bundler/templates/newgem/newgem.gemspec.tt +3 -1
 - data/lib/bundler/version.rb +1 -1
 - data/lib/bundler/worker.rb +17 -2
 - metadata +3 -3
 
    
        data/lib/bundler/dsl.rb
    CHANGED
    
    | 
         @@ -103,8 +103,8 @@ module Bundler 
     | 
|
| 
       103 
103 
     | 
    
         
             
                  if current = @dependencies.find {|d| d.name == dep.name }
         
     | 
| 
       104 
104 
     | 
    
         
             
                    deleted_dep = @dependencies.delete(current) if current.type == :development
         
     | 
| 
       105 
105 
     | 
    
         | 
| 
       106 
     | 
    
         
            -
                     
     | 
| 
       107 
     | 
    
         
            -
                       
     | 
| 
      
 106 
     | 
    
         
            +
                    unless deleted_dep
         
     | 
| 
      
 107 
     | 
    
         
            +
                      if current.requirement != dep.requirement
         
     | 
| 
       108 
108 
     | 
    
         
             
                        return if dep.type == :development
         
     | 
| 
       109 
109 
     | 
    
         | 
| 
       110 
110 
     | 
    
         
             
                        update_prompt = ""
         
     | 
| 
         @@ -122,17 +122,14 @@ module Bundler 
     | 
|
| 
       122 
122 
     | 
    
         
             
                        raise GemfileError, "You cannot specify the same gem twice with different version requirements.\n" \
         
     | 
| 
       123 
123 
     | 
    
         
             
                                        "You specified: #{current.name} (#{current.requirement}) and #{dep.name} (#{dep.requirement})" \
         
     | 
| 
       124 
124 
     | 
    
         
             
                                         "#{update_prompt}"
         
     | 
| 
      
 125 
     | 
    
         
            +
                      else
         
     | 
| 
      
 126 
     | 
    
         
            +
                        Bundler.ui.warn "Your Gemfile lists the gem #{current.name} (#{current.requirement}) more than once.\n" \
         
     | 
| 
      
 127 
     | 
    
         
            +
                                        "You should probably keep only one of them.\n" \
         
     | 
| 
      
 128 
     | 
    
         
            +
                                        "Remove any duplicate entries and specify the gem only once.\n" \
         
     | 
| 
      
 129 
     | 
    
         
            +
                                        "While it's not a problem now, it could cause errors if you change the version of one of them later."
         
     | 
| 
       125 
130 
     | 
    
         
             
                      end
         
     | 
| 
       126 
131 
     | 
    
         | 
| 
       127 
     | 
    
         
            -
             
     | 
| 
       128 
     | 
    
         
            -
                      Bundler.ui.warn "Your Gemfile lists the gem #{current.name} (#{current.requirement}) more than once.\n" \
         
     | 
| 
       129 
     | 
    
         
            -
                                      "You should probably keep only one of them.\n" \
         
     | 
| 
       130 
     | 
    
         
            -
                                      "Remove any duplicate entries and specify the gem only once.\n" \
         
     | 
| 
       131 
     | 
    
         
            -
                                      "While it's not a problem now, it could cause errors if you change the version of one of them later."
         
     | 
| 
       132 
     | 
    
         
            -
                    end
         
     | 
| 
       133 
     | 
    
         
            -
             
     | 
| 
       134 
     | 
    
         
            -
                    if current.source != dep.source
         
     | 
| 
       135 
     | 
    
         
            -
                      unless deleted_dep
         
     | 
| 
      
 132 
     | 
    
         
            +
                      if current.source != dep.source
         
     | 
| 
       136 
133 
     | 
    
         
             
                        return if dep.type == :development
         
     | 
| 
       137 
134 
     | 
    
         
             
                        raise GemfileError, "You cannot specify the same gem twice coming from different sources.\n" \
         
     | 
| 
       138 
135 
     | 
    
         
             
                                        "You specified that #{dep.name} (#{dep.requirement}) should come from " \
         
     | 
| 
         @@ -450,8 +447,21 @@ repo_name ||= user_name 
     | 
|
| 
       450 
447 
     | 
    
         
             
                end
         
     | 
| 
       451 
448 
     | 
    
         | 
| 
       452 
449 
     | 
    
         
             
                def check_rubygems_source_safety
         
     | 
| 
       453 
     | 
    
         
            -
                   
     | 
| 
      
 450 
     | 
    
         
            +
                  if @sources.implicit_global_source?
         
     | 
| 
      
 451 
     | 
    
         
            +
                    implicit_global_source_warning
         
     | 
| 
      
 452 
     | 
    
         
            +
                  elsif @sources.aggregate_global_source?
         
     | 
| 
      
 453 
     | 
    
         
            +
                    multiple_global_source_warning
         
     | 
| 
      
 454 
     | 
    
         
            +
                  end
         
     | 
| 
      
 455 
     | 
    
         
            +
                end
         
     | 
| 
      
 456 
     | 
    
         
            +
             
     | 
| 
      
 457 
     | 
    
         
            +
                def implicit_global_source_warning
         
     | 
| 
      
 458 
     | 
    
         
            +
                  Bundler::SharedHelpers.major_deprecation 2, "This Gemfile does not include an explicit global source. " \
         
     | 
| 
      
 459 
     | 
    
         
            +
                    "Not using an explicit global source may result in a different lockfile being generated depending on " \
         
     | 
| 
      
 460 
     | 
    
         
            +
                    "the gems you have installed locally before bundler is run. " \
         
     | 
| 
      
 461 
     | 
    
         
            +
                    "Instead, define a global source in your Gemfile like this: source \"https://rubygems.org\"."
         
     | 
| 
      
 462 
     | 
    
         
            +
                end
         
     | 
| 
       454 
463 
     | 
    
         | 
| 
      
 464 
     | 
    
         
            +
                def multiple_global_source_warning
         
     | 
| 
       455 
465 
     | 
    
         
             
                  if Bundler.feature_flag.bundler_3_mode?
         
     | 
| 
       456 
466 
     | 
    
         
             
                    msg = "This Gemfile contains multiple primary sources. " \
         
     | 
| 
       457 
467 
     | 
    
         
             
                      "Each source after the first must include a block to indicate which gems " \
         
     | 
    
        data/lib/bundler/errors.rb
    CHANGED
    
    | 
         @@ -122,7 +122,7 @@ module Bundler 
     | 
|
| 
       122 
122 
     | 
    
         | 
| 
       123 
123 
     | 
    
         
             
              class VirtualProtocolError < BundlerError
         
     | 
| 
       124 
124 
     | 
    
         
             
                def message
         
     | 
| 
       125 
     | 
    
         
            -
                  "There was an error relating to virtualization and file access." \
         
     | 
| 
      
 125 
     | 
    
         
            +
                  "There was an error relating to virtualization and file access. " \
         
     | 
| 
       126 
126 
     | 
    
         
             
                  "It is likely that you need to grant access to or mount some file system correctly."
         
     | 
| 
       127 
127 
     | 
    
         
             
                end
         
     | 
| 
       128 
128 
     | 
    
         | 
    
        data/lib/bundler/index.rb
    CHANGED
    
    | 
         @@ -195,11 +195,7 @@ module Bundler 
     | 
|
| 
       195 
195 
     | 
    
         
             
                      if base # allow all platforms when searching from a lockfile
         
     | 
| 
       196 
196 
     | 
    
         
             
                        dependency.matches_spec?(spec)
         
     | 
| 
       197 
197 
     | 
    
         
             
                      else
         
     | 
| 
       198 
     | 
    
         
            -
                         
     | 
| 
       199 
     | 
    
         
            -
                          dependency.matches_spec?(spec) && Gem::Platform.match_spec?(spec)
         
     | 
| 
       200 
     | 
    
         
            -
                        else
         
     | 
| 
       201 
     | 
    
         
            -
                          dependency.matches_spec?(spec) && Gem::Platform.match(spec.platform)
         
     | 
| 
       202 
     | 
    
         
            -
                        end
         
     | 
| 
      
 198 
     | 
    
         
            +
                        dependency.matches_spec?(spec) && Gem::Platform.match_spec?(spec)
         
     | 
| 
       203 
199 
     | 
    
         
             
                      end
         
     | 
| 
       204 
200 
     | 
    
         
             
                    end
         
     | 
| 
       205 
201 
     | 
    
         | 
| 
         @@ -1,7 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            require "shellwords"
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
3 
     | 
    
         
             
            module Bundler
         
     | 
| 
       6 
4 
     | 
    
         
             
              class GemInstaller
         
     | 
| 
       7 
5 
     | 
    
         
             
                attr_reader :spec, :standalone, :worker, :force, :installer
         
     | 
| 
         @@ -31,34 +29,23 @@ module Bundler 
     | 
|
| 
       31 
29 
     | 
    
         | 
| 
       32 
30 
     | 
    
         
             
                def specific_failure_message(e)
         
     | 
| 
       33 
31 
     | 
    
         
             
                  message = "#{e.class}: #{e.message}\n"
         
     | 
| 
       34 
     | 
    
         
            -
                  message += "  " + e.backtrace.join("\n  ") + "\n\n" 
     | 
| 
      
 32 
     | 
    
         
            +
                  message += "  " + e.backtrace.join("\n  ") + "\n\n"
         
     | 
| 
       35 
33 
     | 
    
         
             
                  message = message.lines.first + Bundler.ui.add_color(message.lines.drop(1).join, :clear)
         
     | 
| 
       36 
34 
     | 
    
         
             
                  message + Bundler.ui.add_color(failure_message, :red)
         
     | 
| 
       37 
35 
     | 
    
         
             
                end
         
     | 
| 
       38 
36 
     | 
    
         | 
| 
       39 
37 
     | 
    
         
             
                def failure_message
         
     | 
| 
       40 
     | 
    
         
            -
                   
     | 
| 
       41 
     | 
    
         
            -
                  "#{install_error_message}\n#{gem_install_message}"
         
     | 
| 
      
 38 
     | 
    
         
            +
                  install_error_message
         
     | 
| 
       42 
39 
     | 
    
         
             
                end
         
     | 
| 
       43 
40 
     | 
    
         | 
| 
       44 
41 
     | 
    
         
             
                def install_error_message
         
     | 
| 
       45 
42 
     | 
    
         
             
                  "An error occurred while installing #{spec.name} (#{spec.version}), and Bundler cannot continue."
         
     | 
| 
       46 
43 
     | 
    
         
             
                end
         
     | 
| 
       47 
44 
     | 
    
         | 
| 
       48 
     | 
    
         
            -
                def gem_install_message
         
     | 
| 
       49 
     | 
    
         
            -
                  source = spec.source
         
     | 
| 
       50 
     | 
    
         
            -
                  return unless source.respond_to?(:remotes)
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
                  if source.remotes.size == 1
         
     | 
| 
       53 
     | 
    
         
            -
                    "Make sure that `gem install #{spec.name} -v '#{spec.version}' --source '#{source.remotes.first}'` succeeds before bundling."
         
     | 
| 
       54 
     | 
    
         
            -
                  else
         
     | 
| 
       55 
     | 
    
         
            -
                    "Make sure that `gem install #{spec.name} -v '#{spec.version}'` succeeds before bundling."
         
     | 
| 
       56 
     | 
    
         
            -
                  end
         
     | 
| 
       57 
     | 
    
         
            -
                end
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
45 
     | 
    
         
             
                def spec_settings
         
     | 
| 
       60 
46 
     | 
    
         
             
                  # Fetch the build settings, if there are any
         
     | 
| 
       61 
47 
     | 
    
         
             
                  if settings = Bundler.settings["build.#{spec.name}"]
         
     | 
| 
      
 48 
     | 
    
         
            +
                    require "shellwords"
         
     | 
| 
       62 
49 
     | 
    
         
             
                    Shellwords.shellsplit(settings)
         
     | 
| 
       63 
50 
     | 
    
         
             
                  end
         
     | 
| 
       64 
51 
     | 
    
         
             
                end
         
     | 
| 
         @@ -3,7 +3,7 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            module Bundler
         
     | 
| 
       4 
4 
     | 
    
         
             
              class Standalone
         
     | 
| 
       5 
5 
     | 
    
         
             
                def initialize(groups, definition)
         
     | 
| 
       6 
     | 
    
         
            -
                  @specs =  
     | 
| 
      
 6 
     | 
    
         
            +
                  @specs = definition.specs_for(groups)
         
     | 
| 
       7 
7 
     | 
    
         
             
                end
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
                def generate
         
     | 
| 
         @@ -12,12 +12,13 @@ module Bundler 
     | 
|
| 
       12 
12 
     | 
    
         
             
                  end
         
     | 
| 
       13 
13 
     | 
    
         
             
                  File.open File.join(bundler_path, "setup.rb"), "w" do |file|
         
     | 
| 
       14 
14 
     | 
    
         
             
                    file.puts "require 'rbconfig'"
         
     | 
| 
       15 
     | 
    
         
            -
                    file.puts "ruby_engine = RUBY_ENGINE"
         
     | 
| 
       16 
     | 
    
         
            -
                    file.puts "ruby_version = RbConfig::CONFIG[\"ruby_version\"]"
         
     | 
| 
       17 
     | 
    
         
            -
                    file.puts "path = File.expand_path('..', __FILE__)"
         
     | 
| 
       18 
15 
     | 
    
         
             
                    file.puts reverse_rubygems_kernel_mixin
         
     | 
| 
       19 
16 
     | 
    
         
             
                    paths.each do |path|
         
     | 
| 
       20 
     | 
    
         
            -
                       
     | 
| 
      
 17 
     | 
    
         
            +
                      if Pathname.new(path).absolute?
         
     | 
| 
      
 18 
     | 
    
         
            +
                        file.puts %($:.unshift "#{path}")
         
     | 
| 
      
 19 
     | 
    
         
            +
                      else
         
     | 
| 
      
 20 
     | 
    
         
            +
                        file.puts %($:.unshift File.expand_path("\#{__dir__}/#{path}"))
         
     | 
| 
      
 21 
     | 
    
         
            +
                      end
         
     | 
| 
       21 
22 
     | 
    
         
             
                    end
         
     | 
| 
       22 
23 
     | 
    
         
             
                  end
         
     | 
| 
       23 
24 
     | 
    
         
             
                end
         
     | 
| 
         @@ -28,14 +29,14 @@ module Bundler 
     | 
|
| 
       28 
29 
     | 
    
         
             
                  @specs.map do |spec|
         
     | 
| 
       29 
30 
     | 
    
         
             
                    next if spec.name == "bundler"
         
     | 
| 
       30 
31 
     | 
    
         
             
                    Array(spec.require_paths).map do |path|
         
     | 
| 
       31 
     | 
    
         
            -
                      gem_path(path, spec).sub(version_dir, '#{ 
     | 
| 
      
 32 
     | 
    
         
            +
                      gem_path(path, spec).sub(version_dir, '#{RUBY_ENGINE}/#{RbConfig::CONFIG["ruby_version"]}')
         
     | 
| 
       32 
33 
     | 
    
         
             
                      # This is a static string intentionally. It's interpolated at a later time.
         
     | 
| 
       33 
34 
     | 
    
         
             
                    end
         
     | 
| 
       34 
     | 
    
         
            -
                  end.flatten
         
     | 
| 
      
 35 
     | 
    
         
            +
                  end.flatten.compact
         
     | 
| 
       35 
36 
     | 
    
         
             
                end
         
     | 
| 
       36 
37 
     | 
    
         | 
| 
       37 
38 
     | 
    
         
             
                def version_dir
         
     | 
| 
       38 
     | 
    
         
            -
                  "#{ 
     | 
| 
      
 39 
     | 
    
         
            +
                  "#{RUBY_ENGINE}/#{RbConfig::CONFIG["ruby_version"]}"
         
     | 
| 
       39 
40 
     | 
    
         
             
                end
         
     | 
| 
       40 
41 
     | 
    
         | 
| 
       41 
42 
     | 
    
         
             
                def bundler_path
         
     | 
| 
         @@ -44,7 +45,11 @@ module Bundler 
     | 
|
| 
       44 
45 
     | 
    
         | 
| 
       45 
46 
     | 
    
         
             
                def gem_path(path, spec)
         
     | 
| 
       46 
47 
     | 
    
         
             
                  full_path = Pathname.new(path).absolute? ? path : File.join(spec.full_gem_path, path)
         
     | 
| 
       47 
     | 
    
         
            -
                   
     | 
| 
      
 48 
     | 
    
         
            +
                  if spec.source.instance_of?(Source::Path)
         
     | 
| 
      
 49 
     | 
    
         
            +
                    full_path
         
     | 
| 
      
 50 
     | 
    
         
            +
                  else
         
     | 
| 
      
 51 
     | 
    
         
            +
                    Pathname.new(full_path).relative_path_from(Bundler.root.join(bundler_path)).to_s
         
     | 
| 
      
 52 
     | 
    
         
            +
                  end
         
     | 
| 
       48 
53 
     | 
    
         
             
                rescue TypeError
         
     | 
| 
       49 
54 
     | 
    
         
             
                  error_message = "#{spec.name} #{spec.version} has an invalid gemspec"
         
     | 
| 
       50 
55 
     | 
    
         
             
                  raise Gem::InvalidSpecificationException.new(error_message)
         
     | 
| 
         @@ -195,6 +195,7 @@ module Bundler 
     | 
|
| 
       195 
195 
     | 
    
         
             
                    platform = platform ? Gem::Platform.new(platform) : Gem::Platform::RUBY
         
     | 
| 
       196 
196 
     | 
    
         
             
                    @current_spec = LazySpecification.new(name, version, platform)
         
     | 
| 
       197 
197 
     | 
    
         
             
                    @current_spec.source = @current_source
         
     | 
| 
      
 198 
     | 
    
         
            +
                    @current_source.add_dependency_names(name)
         
     | 
| 
       198 
199 
     | 
    
         | 
| 
       199 
200 
     | 
    
         
             
                    @specs[@current_spec.identifier] = @current_spec
         
     | 
| 
       200 
201 
     | 
    
         
             
                  elsif spaces.size == 6
         
     | 
    
        data/lib/bundler/plugin.rb
    CHANGED
    
    | 
         @@ -309,6 +309,8 @@ module Bundler 
     | 
|
| 
       309 
309 
     | 
    
         
             
                #
         
     | 
| 
       310 
310 
     | 
    
         
             
                # @param [String] name of the plugin
         
     | 
| 
       311 
311 
     | 
    
         
             
                def load_plugin(name)
         
     | 
| 
      
 312 
     | 
    
         
            +
                  return unless name && !name.empty?
         
     | 
| 
      
 313 
     | 
    
         
            +
             
     | 
| 
       312 
314 
     | 
    
         
             
                  # Need to ensure before this that plugin root where the rest of gems
         
     | 
| 
       313 
315 
     | 
    
         
             
                  # are installed to be on load path to support plugin deps. Currently not
         
     | 
| 
       314 
316 
     | 
    
         
             
                  # done to avoid conflicts
         
     | 
    
        data/lib/bundler/plugin/index.rb
    CHANGED
    
    | 
         @@ -74,7 +74,10 @@ module Bundler 
     | 
|
| 
       74 
74 
     | 
    
         
             
                  def unregister_plugin(name)
         
     | 
| 
       75 
75 
     | 
    
         
             
                    @commands.delete_if {|_, v| v == name }
         
     | 
| 
       76 
76 
     | 
    
         
             
                    @sources.delete_if {|_, v| v == name }
         
     | 
| 
       77 
     | 
    
         
            -
                    @hooks.each  
     | 
| 
      
 77 
     | 
    
         
            +
                    @hooks.each do |hook, names|
         
     | 
| 
      
 78 
     | 
    
         
            +
                      names.delete(name)
         
     | 
| 
      
 79 
     | 
    
         
            +
                      @hooks.delete(hook) if names.empty?
         
     | 
| 
      
 80 
     | 
    
         
            +
                    end
         
     | 
| 
       78 
81 
     | 
    
         
             
                    @plugin_paths.delete(name)
         
     | 
| 
       79 
82 
     | 
    
         
             
                    @load_paths.delete(name)
         
     | 
| 
       80 
83 
     | 
    
         
             
                    save_index
         
     | 
| 
         @@ -77,7 +77,7 @@ module Bundler 
     | 
|
| 
       77 
77 
     | 
    
         
             
                    source_list = SourceList.new
         
     | 
| 
       78 
78 
     | 
    
         | 
| 
       79 
79 
     | 
    
         
             
                    source_list.add_git_source(git_source_options) if git_source_options
         
     | 
| 
       80 
     | 
    
         
            -
                    source_list.add_global_rubygems_remote( 
     | 
| 
      
 80 
     | 
    
         
            +
                    Array(rubygems_source).each {|remote| source_list.add_global_rubygems_remote(remote) } if rubygems_source
         
     | 
| 
       81 
81 
     | 
    
         | 
| 
       82 
82 
     | 
    
         
             
                    deps = names.map {|name| Dependency.new name, version }
         
     | 
| 
       83 
83 
     | 
    
         | 
    
        data/lib/bundler/resolver.rb
    CHANGED
    
    | 
         @@ -255,12 +255,6 @@ module Bundler 
     | 
|
| 
       255 
255 
     | 
    
         
             
                    next if name == "bundler"
         
     | 
| 
       256 
256 
     | 
    
         
             
                    next unless search_for(requirement).empty?
         
     | 
| 
       257 
257 
     | 
    
         | 
| 
       258 
     | 
    
         
            -
                    cache_message = begin
         
     | 
| 
       259 
     | 
    
         
            -
                                        " or in gems cached in #{Bundler.settings.app_cache_path}" if Bundler.app_cache.exist?
         
     | 
| 
       260 
     | 
    
         
            -
                                      rescue GemfileNotFound
         
     | 
| 
       261 
     | 
    
         
            -
                                        nil
         
     | 
| 
       262 
     | 
    
         
            -
                                      end
         
     | 
| 
       263 
     | 
    
         
            -
             
     | 
| 
       264 
258 
     | 
    
         
             
                    if (base = @base[name]) && !base.empty?
         
     | 
| 
       265 
259 
     | 
    
         
             
                      version = base.first.version
         
     | 
| 
       266 
260 
     | 
    
         
             
                      message = "You have requested:\n" \
         
     | 
| 
         @@ -269,18 +263,17 @@ module Bundler 
     | 
|
| 
       269 
263 
     | 
    
         
             
                        "Try running `bundle update #{name}`\n\n" \
         
     | 
| 
       270 
264 
     | 
    
         
             
                        "If you are updating multiple gems in your Gemfile at once,\n" \
         
     | 
| 
       271 
265 
     | 
    
         
             
                        "try passing them all to `bundle update`"
         
     | 
| 
       272 
     | 
    
         
            -
                     
     | 
| 
      
 266 
     | 
    
         
            +
                    else
         
     | 
| 
      
 267 
     | 
    
         
            +
                      source = source_for(name)
         
     | 
| 
       273 
268 
     | 
    
         
             
                      specs = source.specs.search(name)
         
     | 
| 
       274 
269 
     | 
    
         
             
                      versions_with_platforms = specs.map {|s| [s.version, s.platform] }
         
     | 
| 
       275 
     | 
    
         
            -
                       
     | 
| 
       276 
     | 
    
         
            -
             
     | 
| 
       277 
     | 
    
         
            -
             
     | 
| 
       278 
     | 
    
         
            -
             
     | 
| 
       279 
     | 
    
         
            -
             
     | 
| 
       280 
     | 
    
         
            -
                       
     | 
| 
       281 
     | 
    
         
            -
             
     | 
| 
       282 
     | 
    
         
            -
                      message = "Could not find gem '#{SharedHelpers.pretty_dependency(requirement)}' in any of the gem sources " \
         
     | 
| 
       283 
     | 
    
         
            -
                        "listed in your Gemfile#{cache_message}."
         
     | 
| 
      
 270 
     | 
    
         
            +
                      cache_message = begin
         
     | 
| 
      
 271 
     | 
    
         
            +
                                          " or in gems cached in #{Bundler.settings.app_cache_path}" if Bundler.app_cache.exist?
         
     | 
| 
      
 272 
     | 
    
         
            +
                                        rescue GemfileNotFound
         
     | 
| 
      
 273 
     | 
    
         
            +
                                          nil
         
     | 
| 
      
 274 
     | 
    
         
            +
                                        end
         
     | 
| 
      
 275 
     | 
    
         
            +
                      message = String.new("Could not find gem '#{SharedHelpers.pretty_dependency(requirement)}' in #{source.to_err}#{cache_message}.\n")
         
     | 
| 
      
 276 
     | 
    
         
            +
                      message << "The source contains the following versions of '#{name}': #{formatted_versions_with_platforms(versions_with_platforms)}" if versions_with_platforms.any?
         
     | 
| 
       284 
277 
     | 
    
         
             
                    end
         
     | 
| 
       285 
278 
     | 
    
         
             
                    raise GemNotFound, message
         
     | 
| 
       286 
279 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -378,7 +371,7 @@ module Bundler 
     | 
|
| 
       378 
371 
     | 
    
         
             
                        o << if metadata_requirement
         
     | 
| 
       379 
372 
     | 
    
         
             
                          "is not available in #{relevant_source}"
         
     | 
| 
       380 
373 
     | 
    
         
             
                        else
         
     | 
| 
       381 
     | 
    
         
            -
                          "in #{relevant_source}.\n"
         
     | 
| 
      
 374 
     | 
    
         
            +
                          "in #{relevant_source.to_err}.\n"
         
     | 
| 
       382 
375 
     | 
    
         
             
                        end
         
     | 
| 
       383 
376 
     | 
    
         
             
                      end
         
     | 
| 
       384 
377 
     | 
    
         
             
                    end,
         
     | 
    
        data/lib/bundler/rubygems_ext.rb
    CHANGED
    
    | 
         @@ -174,20 +174,36 @@ module Gem 
     | 
|
| 
       174 
174 
     | 
    
         
             
                end
         
     | 
| 
       175 
175 
     | 
    
         
             
              end
         
     | 
| 
       176 
176 
     | 
    
         | 
| 
      
 177 
     | 
    
         
            +
              require "rubygems/platform"
         
     | 
| 
      
 178 
     | 
    
         
            +
             
     | 
| 
       177 
179 
     | 
    
         
             
              class Platform
         
     | 
| 
       178 
180 
     | 
    
         
             
                JAVA  = Gem::Platform.new("java") unless defined?(JAVA)
         
     | 
| 
       179 
181 
     | 
    
         
             
                MSWIN = Gem::Platform.new("mswin32") unless defined?(MSWIN)
         
     | 
| 
       180 
182 
     | 
    
         
             
                MSWIN64 = Gem::Platform.new("mswin64") unless defined?(MSWIN64)
         
     | 
| 
       181 
183 
     | 
    
         
             
                MINGW = Gem::Platform.new("x86-mingw32") unless defined?(MINGW)
         
     | 
| 
       182 
184 
     | 
    
         
             
                X64_MINGW = Gem::Platform.new("x64-mingw32") unless defined?(X64_MINGW)
         
     | 
| 
      
 185 
     | 
    
         
            +
              end
         
     | 
| 
       183 
186 
     | 
    
         | 
| 
       184 
     | 
    
         
            -
             
     | 
| 
       185 
     | 
    
         
            -
                 
     | 
| 
       186 
     | 
    
         
            -
                   
     | 
| 
       187 
     | 
    
         
            -
             
     | 
| 
      
 187 
     | 
    
         
            +
              Platform.singleton_class.module_eval do
         
     | 
| 
      
 188 
     | 
    
         
            +
                unless Platform.singleton_methods.include?(:match_spec?)
         
     | 
| 
      
 189 
     | 
    
         
            +
                  def match_spec?(spec)
         
     | 
| 
      
 190 
     | 
    
         
            +
                    match_gem?(spec.platform, spec.name)
         
     | 
| 
      
 191 
     | 
    
         
            +
                  end
         
     | 
| 
       188 
192 
     | 
    
         | 
| 
       189 
     | 
    
         
            -
             
     | 
| 
       190 
     | 
    
         
            -
             
     | 
| 
      
 193 
     | 
    
         
            +
                  def match_gem?(platform, gem_name)
         
     | 
| 
      
 194 
     | 
    
         
            +
                    match_platforms?(platform, Gem.platforms)
         
     | 
| 
      
 195 
     | 
    
         
            +
                  end
         
     | 
| 
      
 196 
     | 
    
         
            +
             
     | 
| 
      
 197 
     | 
    
         
            +
                  private
         
     | 
| 
      
 198 
     | 
    
         
            +
             
     | 
| 
      
 199 
     | 
    
         
            +
                  def match_platforms?(platform, platforms)
         
     | 
| 
      
 200 
     | 
    
         
            +
                    platforms.any? do |local_platform|
         
     | 
| 
      
 201 
     | 
    
         
            +
                      platform.nil? ||
         
     | 
| 
      
 202 
     | 
    
         
            +
                        local_platform == platform ||
         
     | 
| 
      
 203 
     | 
    
         
            +
                        (local_platform != Gem::Platform::RUBY && local_platform =~ platform)
         
     | 
| 
      
 204 
     | 
    
         
            +
                    end
         
     | 
| 
      
 205 
     | 
    
         
            +
                  end
         
     | 
| 
      
 206 
     | 
    
         
            +
                end
         
     | 
| 
       191 
207 
     | 
    
         
             
              end
         
     | 
| 
       192 
208 
     | 
    
         | 
| 
       193 
209 
     | 
    
         
             
              require "rubygems/util"
         
     | 
| 
         @@ -61,7 +61,10 @@ module Bundler 
     | 
|
| 
       61 
61 
     | 
    
         | 
| 
       62 
62 
     | 
    
         
             
                def build_extensions
         
     | 
| 
       63 
63 
     | 
    
         
             
                  extension_cache_path = options[:bundler_extension_cache_path]
         
     | 
| 
       64 
     | 
    
         
            -
                   
     | 
| 
      
 64 
     | 
    
         
            +
                  unless extension_cache_path && extension_dir = spec.extension_dir
         
     | 
| 
      
 65 
     | 
    
         
            +
                    require "shellwords" # compensate missing require in rubygems before version 3.2.25
         
     | 
| 
      
 66 
     | 
    
         
            +
                    return super
         
     | 
| 
      
 67 
     | 
    
         
            +
                  end
         
     | 
| 
       65 
68 
     | 
    
         | 
| 
       66 
69 
     | 
    
         
             
                  extension_dir = Pathname.new(extension_dir)
         
     | 
| 
       67 
70 
     | 
    
         
             
                  build_complete = SharedHelpers.filesystem_access(extension_cache_path.join("gem.build_complete"), :read, &:file?)
         
     | 
| 
         @@ -71,6 +74,7 @@ module Bundler 
     | 
|
| 
       71 
74 
     | 
    
         
             
                      FileUtils.cp_r extension_cache_path, spec.extension_dir
         
     | 
| 
       72 
75 
     | 
    
         
             
                    end
         
     | 
| 
       73 
76 
     | 
    
         
             
                  else
         
     | 
| 
      
 77 
     | 
    
         
            +
                    require "shellwords" # compensate missing require in rubygems before version 3.2.25
         
     | 
| 
       74 
78 
     | 
    
         
             
                    super
         
     | 
| 
       75 
79 
     | 
    
         
             
                    if extension_dir.directory? # not made for gems without extensions
         
     | 
| 
       76 
80 
     | 
    
         
             
                      SharedHelpers.filesystem_access(extension_cache_path.parent, &:mkpath)
         
     | 
    
        data/lib/bundler/runtime.rb
    CHANGED
    
    | 
         @@ -12,22 +12,16 @@ module Bundler 
     | 
|
| 
       12 
12 
     | 
    
         
             
                def setup(*groups)
         
     | 
| 
       13 
13 
     | 
    
         
             
                  @definition.ensure_equivalent_gemfile_and_lockfile if Bundler.frozen_bundle?
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
                  groups.map!(&:to_sym)
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
15 
     | 
    
         
             
                  # Has to happen first
         
     | 
| 
       18 
16 
     | 
    
         
             
                  clean_load_path
         
     | 
| 
       19 
17 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
                  specs =  
     | 
| 
      
 18 
     | 
    
         
            +
                  specs = @definition.specs_for(groups)
         
     | 
| 
       21 
19 
     | 
    
         | 
| 
       22 
20 
     | 
    
         
             
                  SharedHelpers.set_bundle_environment
         
     | 
| 
       23 
21 
     | 
    
         
             
                  Bundler.rubygems.replace_entrypoints(specs)
         
     | 
| 
       24 
22 
     | 
    
         | 
| 
       25 
23 
     | 
    
         
             
                  # Activate the specs
         
     | 
| 
       26 
24 
     | 
    
         
             
                  load_paths = specs.map do |spec|
         
     | 
| 
       27 
     | 
    
         
            -
                    unless spec.loaded_from
         
     | 
| 
       28 
     | 
    
         
            -
                      raise GemNotFound, "#{spec.full_name} is missing. Run `bundle install` to get it."
         
     | 
| 
       29 
     | 
    
         
            -
                    end
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
25 
     | 
    
         
             
                    check_for_activated_spec!(spec)
         
     | 
| 
       32 
26 
     | 
    
         | 
| 
       33 
27 
     | 
    
         
             
                    Bundler.rubygems.mark_loaded(spec)
         
     | 
| 
         @@ -106,7 +100,7 @@ module Bundler 
     | 
|
| 
       106 
100 
     | 
    
         | 
| 
       107 
101 
     | 
    
         
             
                alias_method :gems, :specs
         
     | 
| 
       108 
102 
     | 
    
         | 
| 
       109 
     | 
    
         
            -
                def cache(custom_path = nil)
         
     | 
| 
      
 103 
     | 
    
         
            +
                def cache(custom_path = nil, local = false)
         
     | 
| 
       110 
104 
     | 
    
         
             
                  cache_path = Bundler.app_cache(custom_path)
         
     | 
| 
       111 
105 
     | 
    
         
             
                  SharedHelpers.filesystem_access(cache_path) do |p|
         
     | 
| 
       112 
106 
     | 
    
         
             
                    FileUtils.mkdir_p(p)
         
     | 
| 
         @@ -114,7 +108,20 @@ module Bundler 
     | 
|
| 
       114 
108 
     | 
    
         | 
| 
       115 
109 
     | 
    
         
             
                  Bundler.ui.info "Updating files in #{Bundler.settings.app_cache_path}"
         
     | 
| 
       116 
110 
     | 
    
         | 
| 
       117 
     | 
    
         
            -
                  specs_to_cache = Bundler.settings[:cache_all_platforms] 
     | 
| 
      
 111 
     | 
    
         
            +
                  specs_to_cache = if Bundler.settings[:cache_all_platforms]
         
     | 
| 
      
 112 
     | 
    
         
            +
                    @definition.resolve.materialized_for_all_platforms
         
     | 
| 
      
 113 
     | 
    
         
            +
                  else
         
     | 
| 
      
 114 
     | 
    
         
            +
                    begin
         
     | 
| 
      
 115 
     | 
    
         
            +
                      specs
         
     | 
| 
      
 116 
     | 
    
         
            +
                    rescue GemNotFound
         
     | 
| 
      
 117 
     | 
    
         
            +
                      if local
         
     | 
| 
      
 118 
     | 
    
         
            +
                        Bundler.ui.warn "Some gems seem to be missing from your #{Bundler.settings.app_cache_path} directory."
         
     | 
| 
      
 119 
     | 
    
         
            +
                      end
         
     | 
| 
      
 120 
     | 
    
         
            +
             
     | 
| 
      
 121 
     | 
    
         
            +
                      raise
         
     | 
| 
      
 122 
     | 
    
         
            +
                    end
         
     | 
| 
      
 123 
     | 
    
         
            +
                  end
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
       118 
125 
     | 
    
         
             
                  specs_to_cache.each do |spec|
         
     | 
| 
       119 
126 
     | 
    
         
             
                    next if spec.name == "bundler"
         
     | 
| 
       120 
127 
     | 
    
         
             
                    next if spec.source.is_a?(Source::Gemspec)
         
     | 
    
        data/lib/bundler/settings.rb
    CHANGED
    
    | 
         @@ -428,12 +428,12 @@ module Bundler 
     | 
|
| 
       428 
428 
     | 
    
         
             
                def global_config_file
         
     | 
| 
       429 
429 
     | 
    
         
             
                  if ENV["BUNDLE_CONFIG"] && !ENV["BUNDLE_CONFIG"].empty?
         
     | 
| 
       430 
430 
     | 
    
         
             
                    Pathname.new(ENV["BUNDLE_CONFIG"])
         
     | 
| 
       431 
     | 
    
         
            -
                   
     | 
| 
       432 
     | 
    
         
            -
                     
     | 
| 
       433 
     | 
    
         
            -
             
     | 
| 
       434 
     | 
    
         
            -
                     
     | 
| 
       435 
     | 
    
         
            -
             
     | 
| 
       436 
     | 
    
         
            -
                     
     | 
| 
      
 431 
     | 
    
         
            +
                  elsif ENV["BUNDLE_USER_CONFIG"] && !ENV["BUNDLE_USER_CONFIG"].empty?
         
     | 
| 
      
 432 
     | 
    
         
            +
                    Pathname.new(ENV["BUNDLE_USER_CONFIG"])
         
     | 
| 
      
 433 
     | 
    
         
            +
                  elsif ENV["BUNDLE_USER_HOME"] && !ENV["BUNDLE_USER_HOME"].empty?
         
     | 
| 
      
 434 
     | 
    
         
            +
                    Pathname.new(ENV["BUNDLE_USER_HOME"]).join("config")
         
     | 
| 
      
 435 
     | 
    
         
            +
                  elsif Bundler.rubygems.user_home && !Bundler.rubygems.user_home.empty?
         
     | 
| 
      
 436 
     | 
    
         
            +
                    Pathname.new(Bundler.rubygems.user_home).join(".bundle/config")
         
     | 
| 
       437 
437 
     | 
    
         
             
                  end
         
     | 
| 
       438 
438 
     | 
    
         
             
                end
         
     | 
| 
       439 
439 
     | 
    
         | 
    
        data/lib/bundler/setup.rb
    CHANGED
    
    | 
         @@ -9,10 +9,10 @@ if Bundler::SharedHelpers.in_bundle? 
     | 
|
| 
       9 
9 
     | 
    
         
             
                begin
         
     | 
| 
       10 
10 
     | 
    
         
             
                  Bundler.ui.silence { Bundler.setup }
         
     | 
| 
       11 
11 
     | 
    
         
             
                rescue Bundler::BundlerError => e
         
     | 
| 
       12 
     | 
    
         
            -
                  Bundler.ui. 
     | 
| 
      
 12 
     | 
    
         
            +
                  Bundler.ui.error e.message
         
     | 
| 
       13 
13 
     | 
    
         
             
                  Bundler.ui.warn e.backtrace.join("\n") if ENV["DEBUG"]
         
     | 
| 
       14 
14 
     | 
    
         
             
                  if e.is_a?(Bundler::GemNotFound)
         
     | 
| 
       15 
     | 
    
         
            -
                    Bundler.ui.warn " 
     | 
| 
      
 15 
     | 
    
         
            +
                    Bundler.ui.warn "Run `bundle install` to install missing gems."
         
     | 
| 
       16 
16 
     | 
    
         
             
                  end
         
     | 
| 
       17 
17 
     | 
    
         
             
                  exit e.status_code
         
     | 
| 
       18 
18 
     | 
    
         
             
                end
         
     | 
| 
         @@ -152,13 +152,6 @@ module Bundler 
     | 
|
| 
       152 
152 
     | 
    
         
             
                  Bundler.ui.warn message
         
     | 
| 
       153 
153 
     | 
    
         
             
                end
         
     | 
| 
       154 
154 
     | 
    
         | 
| 
       155 
     | 
    
         
            -
                def trap(signal, override = false, &block)
         
     | 
| 
       156 
     | 
    
         
            -
                  prior = Signal.trap(signal) do
         
     | 
| 
       157 
     | 
    
         
            -
                    block.call
         
     | 
| 
       158 
     | 
    
         
            -
                    prior.call unless override
         
     | 
| 
       159 
     | 
    
         
            -
                  end
         
     | 
| 
       160 
     | 
    
         
            -
                end
         
     | 
| 
       161 
     | 
    
         
            -
             
     | 
| 
       162 
155 
     | 
    
         
             
                def ensure_same_dependencies(spec, old_deps, new_deps)
         
     | 
| 
       163 
156 
     | 
    
         
             
                  new_deps = new_deps.reject {|d| d.type == :development }
         
     | 
| 
       164 
157 
     | 
    
         
             
                  old_deps = old_deps.reject {|d| d.type == :development }
         
     | 
    
        data/lib/bundler/source.rb
    CHANGED
    
    | 
         @@ -36,8 +36,6 @@ module Bundler 
     | 
|
| 
       36 
36 
     | 
    
         | 
| 
       37 
37 
     | 
    
         
             
                def local!; end
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
       39 
     | 
    
         
            -
                def local_only!; end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
39 
     | 
    
         
             
                def cached!; end
         
     | 
| 
       42 
40 
     | 
    
         | 
| 
       43 
41 
     | 
    
         
             
                def remote!; end
         
     | 
| 
         @@ -67,6 +65,10 @@ module Bundler 
     | 
|
| 
       67 
65 
     | 
    
         
             
                  "#<#{self.class}:0x#{object_id} #{self}>"
         
     | 
| 
       68 
66 
     | 
    
         
             
                end
         
     | 
| 
       69 
67 
     | 
    
         | 
| 
      
 68 
     | 
    
         
            +
                def to_err
         
     | 
| 
      
 69 
     | 
    
         
            +
                  to_s
         
     | 
| 
      
 70 
     | 
    
         
            +
                end
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
       70 
72 
     | 
    
         
             
                def path?
         
     | 
| 
       71 
73 
     | 
    
         
             
                  instance_of?(Bundler::Source::Path)
         
     | 
| 
       72 
74 
     | 
    
         
             
                end
         
     |