bundler 2.3.26 → 2.3.27

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1ecbb775b34e7c64a72d01af5cce8bacbd1a470404845444fda36a2f0e37a1aa
4
- data.tar.gz: 40fbd944cb4094b105e01672961a790730055bd8563632dbbe4ae3738b9d531f
3
+ metadata.gz: 71be503ced845364c9fc9bd0b6cfc5c55b824dddebaea4f9362616a3f9f1102d
4
+ data.tar.gz: 8e0c98df041316c6fde0ad3c5db91a3d9fccb5de936cc9049c6d2707f632341c
5
5
  SHA512:
6
- metadata.gz: 1a2e39b4aa05271b042c17f35ac0376306d509221d91c13480eb40da97fda0fbe811fd59951a550a455232428b41856f04a63ea474b4dc88553eb6ae3b5e149e
7
- data.tar.gz: 3ccf4c9906a118084bdcd4e8a124dab5f96310ac8ac09bea0ed7de8be6019c1fae3fc58e2b421406e0d2d9de19518869e0beaf1faeae7f8148388724521d3a65
6
+ metadata.gz: 33f84fc20356e8d546977a44b47cc8de7860b96f8aa003ddbf2a83d6faed71131096230dba574e962e291d8479f1b2606f0af3e0fe7b79a018c2ee45fc3474bf
7
+ data.tar.gz: cde808d6ea62512d393eb638304d781370145bf909deb93c46fa5c1e3db0855d53445399094540989b643f535a7f6e9a78aff81da1bfbfff67935716e13b3e1b
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # 2.3.27 (November 10, 2023)
2
+
3
+ ## Bug fixes:
4
+
5
+ * Provide fix for bundler Gemfile resolving regression. Pull request #6165
6
+ by Hiroshi SHIBATA.
7
+
1
8
  # 2.3.26 (November 16, 2022)
2
9
 
3
10
  ## Enhancements:
@@ -4,8 +4,8 @@ module Bundler
4
4
  # Represents metadata from when the Bundler gem was built.
5
5
  module BuildMetadata
6
6
  # begin ivars
7
- @built_at = "2022-11-17".freeze
8
- @git_commit_sha = "23ec5b8501".freeze
7
+ @built_at = "2023-11-10".freeze
8
+ @git_commit_sha = "75672aaa88".freeze
9
9
  @release = true
10
10
  # end ivars
11
11
 
data/lib/bundler/index.rb CHANGED
@@ -71,6 +71,7 @@ module Bundler
71
71
  when Gem::Specification, RemoteSpecification, LazySpecification, EndpointSpecification then search_by_spec(query)
72
72
  when String then specs_by_name(query)
73
73
  when Gem::Dependency then search_by_dependency(query)
74
+ when Array then search_by_name_and_version(*query)
74
75
  else
75
76
  raise "You can't search for a #{query.inspect}."
76
77
  end
@@ -173,6 +174,10 @@ module Bundler
173
174
  end
174
175
  end
175
176
 
177
+ def search_by_name_and_version(name, version)
178
+ specs_by_name(name).select {|spec| spec.version == version }
179
+ end
180
+
176
181
  EMPTY_SEARCH = [].freeze
177
182
 
178
183
  def search_by_spec(spec)
@@ -13,7 +13,6 @@ module Bundler
13
13
  @dependencies = []
14
14
  @platform = platform || Gem::Platform::RUBY
15
15
  @source = source
16
- @specification = nil
17
16
  end
18
17
 
19
18
  def full_name
@@ -76,37 +75,46 @@ module Bundler
76
75
  def materialize_for_installation
77
76
  source.local!
78
77
 
79
- candidates = if source.is_a?(Source::Path) || !ruby_platform_materializes_to_ruby_platform?
80
- target_platform = ruby_platform_materializes_to_ruby_platform? ? platform : local_platform
78
+ matching_specs = source.specs.search(use_exact_resolved_specifications? ? self : [name, version])
79
+ return self if matching_specs.empty?
81
80
 
82
- GemHelpers.select_best_platform_match(source.specs.search(Dependency.new(name, version)), target_platform)
81
+ candidates = if use_exact_resolved_specifications?
82
+ matching_specs
83
83
  else
84
- source.specs.search(self)
85
- end
84
+ target_platform = ruby_platform_materializes_to_ruby_platform? ? platform : local_platform
86
85
 
87
- return self if candidates.empty?
86
+ installable_candidates = GemHelpers.select_best_platform_match(matching_specs, target_platform)
88
87
 
89
- __materialize__(candidates)
90
- end
88
+ specification = __materialize__(installable_candidates, :fallback_to_non_installable => false)
89
+ return specification unless specification.nil?
91
90
 
92
- def __materialize__(candidates)
93
- @specification = begin
94
- search = candidates.reverse.find do |spec|
95
- spec.is_a?(StubSpecification) ||
96
- (spec.matches_current_ruby? &&
97
- spec.matches_current_rubygems?)
98
- end
99
- if search.nil? && Bundler.frozen_bundle?
100
- search = candidates.last
101
- else
102
- search.dependencies = dependencies if search && search.full_name == full_name && (search.is_a?(RemoteSpecification) || search.is_a?(EndpointSpecification))
91
+ if target_platform != platform
92
+ installable_candidates = GemHelpers.select_best_platform_match(matching_specs, platform)
103
93
  end
104
- search
94
+
95
+ installable_candidates
105
96
  end
97
+
98
+ __materialize__(candidates)
106
99
  end
107
100
 
108
- def respond_to?(*args)
109
- super || @specification ? @specification.respond_to?(*args) : nil
101
+ # If in frozen mode, we fallback to a non-installable candidate because by
102
+ # doing this we avoid re-resolving and potentially end up changing the
103
+ # lock file, which is not allowed. In that case, we will give a proper error
104
+ # about the mismatch higher up the stack, right before trying to install the
105
+ # bad gem.
106
+ def __materialize__(candidates, fallback_to_non_installable: Bundler.frozen_bundle?)
107
+ search = candidates.reverse.find do |spec|
108
+ spec.is_a?(StubSpecification) ||
109
+ (spec.matches_current_ruby? &&
110
+ spec.matches_current_rubygems?)
111
+ end
112
+ if search.nil? && fallback_to_non_installable
113
+ search = candidates.last
114
+ else
115
+ search.dependencies = dependencies if search && search.full_name == full_name && (search.is_a?(RemoteSpecification) || search.is_a?(EndpointSpecification))
116
+ end
117
+ search
110
118
  end
111
119
 
112
120
  def to_s
@@ -128,16 +136,8 @@ module Bundler
128
136
 
129
137
  private
130
138
 
131
- def to_ary
132
- nil
133
- end
134
-
135
- def method_missing(method, *args, &blk)
136
- raise "LazySpecification has not been materialized yet (calling :#{method} #{args.inspect})" unless @specification
137
-
138
- return super unless respond_to?(method)
139
-
140
- @specification.send(method, *args, &blk)
139
+ def use_exact_resolved_specifications?
140
+ @use_exact_resolved_specifications ||= !source.is_a?(Source::Path) && ruby_platform_materializes_to_ruby_platform?
141
141
  end
142
142
 
143
143
  #
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: false
2
2
 
3
3
  module Bundler
4
- VERSION = "2.3.26".freeze
4
+ VERSION = "2.3.27".freeze
5
5
 
6
6
  def self.bundler_major_version
7
7
  @bundler_major_version ||= VERSION.split(".").first.to_i
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bundler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.26
4
+ version: 2.3.27
5
5
  platform: ruby
6
6
  authors:
7
7
  - André Arko
@@ -22,7 +22,7 @@ authors:
22
22
  autorequire:
23
23
  bindir: exe
24
24
  cert_chain: []
25
- date: 2022-11-17 00:00:00.000000000 Z
25
+ date: 2023-11-10 00:00:00.000000000 Z
26
26
  dependencies: []
27
27
  description: Bundler manages an application's dependencies through its entire life,
28
28
  across many machines, systematically and repeatably
@@ -379,7 +379,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
379
379
  - !ruby/object:Gem::Version
380
380
  version: 2.5.2
381
381
  requirements: []
382
- rubygems_version: 3.3.26
382
+ rubygems_version: 3.5.0.dev
383
383
  signing_key:
384
384
  specification_version: 4
385
385
  summary: The best way to manage your application's dependencies