summaryrefslogtreecommitdiff
path: root/lib/bundler/definition.rb
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2021-10-28 09:51:14 +0200
committergit <svn-admin@ruby-lang.org>2021-11-01 02:01:36 +0900
commit4e7e057692578204a6fb2f7170bb8c5803f0f9e0 (patch)
tree1b49f1ec166c22c22f06c5b4fb599c1a4267966e /lib/bundler/definition.rb
parent13a9597c7ca83fced5738e9345660ae6aef87eb7 (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.rb9
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