summaryrefslogtreecommitdiff
path: root/lib/bundler
diff options
context:
space:
mode:
authorDavid Rodríguez <[email protected]>2025-03-10 17:09:33 +0100
committerHiroshi SHIBATA <[email protected]>2025-03-24 13:25:07 +0900
commit58663e8e2c1d787ef308029b2138e9b66c616714 (patch)
tree2d0f51cc75b9988c7bf7ea40e621b1bfd84e6e20 /lib/bundler
parent504b4bd9f5b3dda38f3b747e549b281719996078 (diff)
[rubygems/rubygems] Change behavior when gemfile and gemspec dep deps conflict
https://github.com/rubygems/rubygems/commit/7026b5f2e5
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/12968
Diffstat (limited to 'lib/bundler')
-rw-r--r--lib/bundler/dsl.rb31
1 files changed, 15 insertions, 16 deletions
diff --git a/lib/bundler/dsl.rb b/lib/bundler/dsl.rb
index e857ac952d..0fbe77e712 100644
--- a/lib/bundler/dsl.rb
+++ b/lib/bundler/dsl.rb
@@ -247,22 +247,21 @@ module Bundler
gemspec_dep = [dep, current].find(&:gemspec_dev_dep?)
if gemspec_dep
- gemfile_dep = [dep, current].find(&:gemfile_dep?)
-
- if gemfile_dep && !current_requirement_open
- Bundler.ui.warn "A gemspec development dependency (#{name}, #{gemspec_dep.requirement}) is being overridden by a Gemfile dependency (#{name}, #{gemfile_dep.requirement}).\n" \
- "This behaviour may change in the future. Please remove either of them, or make sure they both have the same requirement\n"
- elsif gemfile_dep.nil?
- require_relative "vendor/pub_grub/lib/pub_grub/version_range"
- require_relative "vendor/pub_grub/lib/pub_grub/version_constraint"
- require_relative "vendor/pub_grub/lib/pub_grub/version_union"
- require_relative "vendor/pub_grub/lib/pub_grub/rubygems"
-
- current_gemspec_range = PubGrub::RubyGems.requirement_to_range(current.requirement)
- next_gemspec_range = PubGrub::RubyGems.requirement_to_range(dep.requirement)
-
- if current_gemspec_range.intersects?(next_gemspec_range)
- dep = Dependency.new(name, current.requirement.as_list + dep.requirement.as_list, options)
+ require_relative "vendor/pub_grub/lib/pub_grub/version_range"
+ require_relative "vendor/pub_grub/lib/pub_grub/version_constraint"
+ require_relative "vendor/pub_grub/lib/pub_grub/version_union"
+ require_relative "vendor/pub_grub/lib/pub_grub/rubygems"
+
+ current_gemspec_range = PubGrub::RubyGems.requirement_to_range(current.requirement)
+ next_gemspec_range = PubGrub::RubyGems.requirement_to_range(dep.requirement)
+
+ if current_gemspec_range.intersects?(next_gemspec_range)
+ dep = Dependency.new(name, current.requirement.as_list + dep.requirement.as_list, options)
+ else
+ gemfile_dep = [dep, current].find(&:gemfile_dep?)
+
+ if gemfile_dep
+ raise GemfileError, "The #{name} dependency has conflicting requirements in Gemfile (#{gemfile_dep.requirement}) and gemspec (#{gemspec_dep.requirement})"
else
raise GemfileError, "Two gemspec development dependencies have conflicting requirements on the same gem: #{dep} and #{current}"
end