diff options
author | David RodrÃguez <deivid.rodriguez@riseup.net> | 2021-10-28 09:51:14 +0200 |
---|---|---|
committer | git <svn-admin@ruby-lang.org> | 2021-11-01 02:01:36 +0900 |
commit | 4e7e057692578204a6fb2f7170bb8c5803f0f9e0 (patch) | |
tree | 1b49f1ec166c22c22f06c5b4fb599c1a4267966e /lib/bundler/definition.rb | |
parent | 13a9597c7ca83fced5738e9345660ae6aef87eb7 (diff) |
[rubygems/rubygems] Memoize materialized specs when requiring `bundler/setup`
Calling `Bundler.definition.specs` will memoize materialized specs.
However, requiring `bundler/setup` will end up materializing the same
set of specs, but not memoize them.
This change makes things consistent.
https://github.com/rubygems/rubygems/commit/e4c2b52824
Diffstat (limited to 'lib/bundler/definition.rb')
-rw-r--r-- | lib/bundler/definition.rb | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb index da180ce255..1bb26b6878 100644 --- a/lib/bundler/definition.rb +++ b/lib/bundler/definition.rb @@ -143,7 +143,7 @@ module Bundler @dependency_changes = converge_dependencies @local_changes = converge_locals - @locked_specs_incomplete_for_platform = !@locked_specs.for(expand_dependencies(requested_dependencies & locked_dependencies), true, true) + @locked_specs_incomplete_for_platform = !@locked_specs.for(requested_dependencies & expand_dependencies(locked_dependencies), true, true) @requires = compute_requires end @@ -239,16 +239,17 @@ module Bundler end def specs_for(groups) - groups = requested_groups if groups.empty? + return specs if groups.empty? deps = dependencies_for(groups) - materialize(expand_dependencies(deps)) + materialize(deps) end def dependencies_for(groups) groups.map!(&:to_sym) - current_dependencies.reject do |d| + deps = current_dependencies.reject do |d| (d.groups & groups).empty? end + expand_dependencies(deps) end # Resolve all the dependencies specified in Gemfile. It ensures that |