bundler 2.3.26 → 2.3.27

Sign up to get free protection for your applications and to get access to all the features.
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