diff options
author | David RodrÃguez <deivid.rodriguez@riseup.net> | 2021-07-25 16:23:15 +0200 |
---|---|---|
committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2021-08-31 19:06:14 +0900 |
commit | c2f376bcc006c3602ffd005fa1cb3cdf5c9d97fa (patch) | |
tree | 29839caf490e5971c3386ef11ff9f6293452178a /lib/bundler | |
parent | 9e7249da4e954088b5a3701a034e4ecd003cef43 (diff) |
[rubygems/rubygems] Fix standalone install of default gems
Rubygems source replacement was broken.
https://github.com/rubygems/rubygems/commit/3549c122f6
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/4789
Diffstat (limited to 'lib/bundler')
-rw-r--r-- | lib/bundler/lockfile_parser.rb | 1 | ||||
-rw-r--r-- | lib/bundler/source_list.rb | 13 |
2 files changed, 12 insertions, 2 deletions
diff --git a/lib/bundler/lockfile_parser.rb b/lib/bundler/lockfile_parser.rb index afc21fd006..8d0e44d0ae 100644 --- a/lib/bundler/lockfile_parser.rb +++ b/lib/bundler/lockfile_parser.rb @@ -195,6 +195,7 @@ module Bundler platform = platform ? Gem::Platform.new(platform) : Gem::Platform::RUBY @current_spec = LazySpecification.new(name, version, platform) @current_spec.source = @current_source + @current_source.add_dependency_names(name) @specs[@current_spec.identifier] = @current_spec elsif spaces.size == 6 diff --git a/lib/bundler/source_list.rb b/lib/bundler/source_list.rb index c7dfa3d797..1c0105bf7e 100644 --- a/lib/bundler/source_list.rb +++ b/lib/bundler/source_list.rb @@ -121,7 +121,8 @@ module Bundler def replace_sources!(replacement_sources) return false if replacement_sources.empty? - @path_sources, @git_sources, @plugin_sources = map_sources(replacement_sources) + @rubygems_sources, @path_sources, @git_sources, @plugin_sources = map_sources(replacement_sources) + @global_rubygems_source = global_replacement_source(replacement_sources) different_sources?(lock_sources, replacement_sources) end @@ -156,13 +157,21 @@ module Bundler end def map_sources(replacement_sources) - [path_sources, git_sources, plugin_sources].map do |sources| + [@rubygems_sources, @path_sources, @git_sources, @plugin_sources].map do |sources| sources.map do |source| replacement_sources.find {|s| s == source } || source end end end + def global_replacement_source(replacement_sources) + replacement_source = replacement_sources.find {|s| s == global_rubygems_source } + return global_rubygems_source unless replacement_source + + replacement_source.local! + replacement_source + end + def different_sources?(lock_sources, replacement_sources) !equal_sources?(lock_sources, replacement_sources) && !equivalent_sources?(lock_sources, replacement_sources) end |