bundler 2.1.1 → 2.2.0.rc.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of bundler might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1543 -1418
- data/README.md +6 -8
- data/bundler.gemspec +3 -3
- data/exe/bundle +3 -0
- data/lib/bundler.rb +21 -7
- data/lib/bundler/build_metadata.rb +3 -11
- data/lib/bundler/cli.rb +54 -20
- data/lib/bundler/cli/add.rb +1 -1
- data/lib/bundler/cli/cache.rb +1 -7
- data/lib/bundler/cli/clean.rb +1 -1
- data/lib/bundler/cli/common.rb +14 -0
- data/lib/bundler/cli/console.rb +1 -1
- data/lib/bundler/cli/doctor.rb +1 -1
- data/lib/bundler/cli/exec.rb +1 -1
- data/lib/bundler/cli/fund.rb +36 -0
- data/lib/bundler/cli/gem.rb +84 -11
- data/lib/bundler/cli/info.rb +15 -4
- data/lib/bundler/cli/init.rb +2 -2
- data/lib/bundler/cli/inject.rb +1 -1
- data/lib/bundler/cli/install.rb +12 -18
- data/lib/bundler/cli/issue.rb +2 -2
- data/lib/bundler/cli/list.rb +12 -10
- data/lib/bundler/cli/outdated.rb +89 -66
- data/lib/bundler/cli/plugin.rb +10 -0
- data/lib/bundler/cli/pristine.rb +5 -0
- data/lib/bundler/cli/show.rb +1 -1
- data/lib/bundler/cli/update.rb +2 -0
- data/lib/bundler/compact_index_client.rb +1 -1
- data/lib/bundler/compact_index_client/cache.rb +1 -1
- data/lib/bundler/definition.rb +51 -60
- data/lib/bundler/dep_proxy.rb +1 -1
- data/lib/bundler/dependency.rb +0 -9
- data/lib/bundler/dsl.rb +5 -9
- data/lib/bundler/endpoint_specification.rb +1 -1
- data/lib/bundler/environment_preserver.rb +26 -2
- data/lib/bundler/errors.rb +1 -0
- data/lib/bundler/feature_flag.rb +0 -2
- data/lib/bundler/fetcher.rb +4 -3
- data/lib/bundler/fetcher/base.rb +1 -1
- data/lib/bundler/fetcher/compact_index.rb +1 -1
- data/lib/bundler/fetcher/downloader.rb +1 -1
- data/lib/bundler/fetcher/index.rb +1 -1
- data/lib/bundler/friendly_errors.rb +7 -13
- data/lib/bundler/gem_helper.rb +33 -19
- data/lib/bundler/gem_helpers.rb +6 -1
- data/lib/bundler/gem_version_promoter.rb +2 -2
- data/lib/bundler/graph.rb +1 -1
- data/lib/bundler/index.rb +1 -1
- data/lib/bundler/injector.rb +15 -4
- data/lib/bundler/inline.rb +2 -2
- data/lib/bundler/installer.rb +30 -29
- data/lib/bundler/installer/gem_installer.rb +3 -3
- data/lib/bundler/installer/parallel_installer.rb +10 -10
- data/lib/bundler/installer/standalone.rb +2 -2
- data/lib/bundler/lazy_specification.rb +19 -6
- data/lib/bundler/lockfile_generator.rb +1 -1
- data/lib/bundler/lockfile_parser.rb +1 -1
- data/lib/bundler/mirror.rb +2 -2
- data/lib/bundler/plugin.rb +30 -5
- data/lib/bundler/plugin/index.rb +10 -1
- data/lib/bundler/plugin/installer.rb +1 -1
- data/lib/bundler/plugin/installer/rubygems.rb +1 -1
- data/lib/bundler/plugin/source_list.rb +1 -1
- data/lib/bundler/psyched_yaml.rb +0 -15
- data/lib/bundler/remote_specification.rb +5 -2
- data/lib/bundler/resolver.rb +32 -9
- data/lib/bundler/resolver/spec_group.rb +27 -6
- data/lib/bundler/retry.rb +1 -1
- data/lib/bundler/ruby_version.rb +1 -1
- data/lib/bundler/rubygems_ext.rb +53 -9
- data/lib/bundler/rubygems_gem_installer.rb +3 -9
- data/lib/bundler/rubygems_integration.rb +23 -54
- data/lib/bundler/runtime.rb +4 -14
- data/lib/bundler/settings.rb +49 -45
- data/lib/bundler/shared_helpers.rb +2 -2
- data/lib/bundler/similarity_detector.rb +1 -1
- data/lib/bundler/source.rb +1 -1
- data/lib/bundler/source/git.rb +5 -5
- data/lib/bundler/source/git/git_proxy.rb +56 -59
- data/lib/bundler/source/path.rb +7 -3
- data/lib/bundler/source/path/installer.rb +8 -10
- data/lib/bundler/source/rubygems.rb +13 -16
- data/lib/bundler/source/rubygems/remote.rb +1 -1
- data/lib/bundler/source_list.rb +2 -2
- data/lib/bundler/spec_set.rb +1 -1
- data/lib/bundler/stub_specification.rb +17 -5
- data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
- data/lib/bundler/templates/newgem/Gemfile.tt +9 -1
- data/lib/bundler/templates/newgem/README.md.tt +1 -1
- data/lib/bundler/templates/newgem/Rakefile.tt +19 -5
- data/lib/bundler/templates/newgem/bin/console.tt +1 -0
- data/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
- data/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
- data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
- data/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
- data/lib/bundler/templates/newgem/lib/newgem.rb.tt +2 -0
- data/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -6
- data/lib/bundler/templates/newgem/rubocop.yml.tt +10 -0
- data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
- data/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
- data/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
- data/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
- data/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
- data/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
- data/lib/bundler/ui/shell.rb +5 -5
- data/lib/bundler/uri_credentials_filter.rb +1 -1
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +79 -212
- data/lib/bundler/vendor/thor/lib/thor.rb +0 -7
- data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
- data/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
- data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/lib/bundler/vendored_persistent.rb +0 -7
- data/lib/bundler/version.rb +1 -1
- data/lib/bundler/worker.rb +1 -1
- data/lib/bundler/yaml_serializer.rb +1 -1
- data/man/bundle-add.1 +1 -1
- data/man/{bundle-add.ronn → bundle-add.1.ronn} +0 -0
- data/man/bundle-binstubs.1 +5 -3
- data/man/{bundle-binstubs.ronn → bundle-binstubs.1.ronn} +2 -4
- data/man/bundle-cache.1 +1 -1
- data/man/{bundle-cache.ronn → bundle-cache.1.ronn} +0 -0
- data/man/bundle-check.1 +1 -1
- data/man/{bundle-check.ronn → bundle-check.1.ronn} +0 -0
- data/man/bundle-clean.1 +1 -1
- data/man/{bundle-clean.ronn → bundle-clean.1.ronn} +0 -0
- data/man/bundle-config.1 +16 -22
- data/man/{bundle-config.ronn → bundle-config.1.ronn} +19 -22
- data/man/bundle-doctor.1 +1 -1
- data/man/{bundle-doctor.ronn → bundle-doctor.1.ronn} +0 -0
- data/man/bundle-exec.1 +1 -1
- data/man/{bundle-exec.ronn → bundle-exec.1.ronn} +0 -0
- data/man/bundle-gem.1 +25 -3
- data/man/{bundle-gem.ronn → bundle-gem.1.ronn} +30 -7
- data/man/bundle-info.1 +1 -1
- data/man/{bundle-info.ronn → bundle-info.1.ronn} +0 -0
- data/man/bundle-init.1 +1 -1
- data/man/{bundle-init.ronn → bundle-init.1.ronn} +0 -0
- data/man/bundle-inject.1 +1 -1
- data/man/{bundle-inject.ronn → bundle-inject.1.ronn} +0 -0
- data/man/bundle-install.1 +29 -2
- data/man/{bundle-install.ronn → bundle-install.1.ronn} +24 -2
- data/man/bundle-list.1 +7 -7
- data/man/{bundle-list.ronn → bundle-list.1.ronn} +6 -6
- data/man/bundle-lock.1 +1 -1
- data/man/{bundle-lock.ronn → bundle-lock.1.ronn} +0 -0
- data/man/bundle-open.1 +1 -1
- data/man/{bundle-open.ronn → bundle-open.1.ronn} +0 -0
- data/man/bundle-outdated.1 +1 -1
- data/man/{bundle-outdated.ronn → bundle-outdated.1.ronn} +0 -0
- data/man/bundle-platform.1 +1 -1
- data/man/{bundle-platform.ronn → bundle-platform.1.ronn} +0 -0
- data/man/bundle-pristine.1 +1 -1
- data/man/{bundle-pristine.ronn → bundle-pristine.1.ronn} +0 -0
- data/man/bundle-remove.1 +1 -1
- data/man/{bundle-remove.ronn → bundle-remove.1.ronn} +0 -0
- data/man/bundle-show.1 +1 -1
- data/man/{bundle-show.ronn → bundle-show.1.ronn} +0 -0
- data/man/bundle-update.1 +1 -1
- data/man/{bundle-update.ronn → bundle-update.1.ronn} +0 -0
- data/man/bundle-viz.1 +1 -1
- data/man/{bundle-viz.ronn → bundle-viz.1.ronn} +0 -0
- data/man/bundle.1 +1 -1
- data/man/{bundle.ronn → bundle.1.ronn} +0 -0
- data/man/gemfile.5 +4 -4
- data/man/gemfile.5.ronn +4 -4
- metadata +39 -58
- data/man/bundle-add.1.txt +0 -58
- data/man/bundle-binstubs.1.txt +0 -48
- data/man/bundle-cache.1.txt +0 -78
- data/man/bundle-check.1.txt +0 -33
- data/man/bundle-clean.1.txt +0 -26
- data/man/bundle-config.1.txt +0 -528
- data/man/bundle-doctor.1.txt +0 -44
- data/man/bundle-exec.1.txt +0 -178
- data/man/bundle-gem.1.txt +0 -91
- data/man/bundle-info.1.txt +0 -21
- data/man/bundle-init.1.txt +0 -34
- data/man/bundle-inject.1.txt +0 -32
- data/man/bundle-install.1.txt +0 -401
- data/man/bundle-list.1.txt +0 -43
- data/man/bundle-lock.1.txt +0 -93
- data/man/bundle-open.1.txt +0 -29
- data/man/bundle-outdated.1.txt +0 -131
- data/man/bundle-platform.1.txt +0 -57
- data/man/bundle-pristine.1.txt +0 -44
- data/man/bundle-remove.1.txt +0 -34
- data/man/bundle-show.1.txt +0 -27
- data/man/bundle-update.1.txt +0 -390
- data/man/bundle-viz.1.txt +0 -39
- data/man/bundle.1.txt +0 -116
- data/man/gemfile.5.txt +0 -649
- data/man/index.txt +0 -25
data/lib/bundler/retry.rb
CHANGED
data/lib/bundler/ruby_version.rb
CHANGED
data/lib/bundler/rubygems_ext.rb
CHANGED
@@ -47,14 +47,13 @@ module Gem
|
|
47
47
|
full_require_paths
|
48
48
|
end
|
49
49
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
end
|
50
|
+
alias_method :rg_extension_dir, :extension_dir
|
51
|
+
def extension_dir
|
52
|
+
@bundler_extension_dir ||= if source.respond_to?(:extension_dir_name)
|
53
|
+
unique_extension_dir = [source.extension_dir_name, File.basename(full_gem_path)].uniq.join("-")
|
54
|
+
File.expand_path(File.join(extensions_dir, unique_extension_dir))
|
55
|
+
else
|
56
|
+
rg_extension_dir
|
58
57
|
end
|
59
58
|
end
|
60
59
|
|
@@ -86,7 +85,7 @@ module Gem
|
|
86
85
|
dependencies - development_dependencies
|
87
86
|
end
|
88
87
|
|
89
|
-
|
88
|
+
private
|
90
89
|
|
91
90
|
def dependencies_to_gemfile(dependencies, group = nil)
|
92
91
|
gemfile = String.new
|
@@ -130,6 +129,35 @@ module Gem
|
|
130
129
|
end
|
131
130
|
end
|
132
131
|
|
132
|
+
# comparison is done order independently since rubygems 3.2.0.rc.2
|
133
|
+
unless Gem::Requirement.new("> 1", "< 2") == Gem::Requirement.new("< 2", "> 1")
|
134
|
+
class Requirement
|
135
|
+
module OrderIndependentComparison
|
136
|
+
def ==(other)
|
137
|
+
if _requirements_sorted? && other._requirements_sorted?
|
138
|
+
super
|
139
|
+
else
|
140
|
+
_with_sorted_requirements == other._with_sorted_requirements
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
protected
|
145
|
+
|
146
|
+
def _requirements_sorted?
|
147
|
+
return @_are_requirements_sorted if defined?(@_are_requirements_sorted)
|
148
|
+
strings = as_list
|
149
|
+
@_are_requirements_sorted = strings == strings.sort
|
150
|
+
end
|
151
|
+
|
152
|
+
def _with_sorted_requirements
|
153
|
+
@_with_sorted_requirements ||= _requirements_sorted? ? self : self.class.new(as_list.sort)
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
prepend OrderIndependentComparison
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
133
161
|
class Platform
|
134
162
|
JAVA = Gem::Platform.new("java") unless defined?(JAVA)
|
135
163
|
MSWIN = Gem::Platform.new("mswin32") unless defined?(MSWIN)
|
@@ -145,6 +173,22 @@ module Gem
|
|
145
173
|
undef_method :eql? if method_defined? :eql?
|
146
174
|
alias_method :eql?, :==
|
147
175
|
end
|
176
|
+
|
177
|
+
require "rubygems/util"
|
178
|
+
|
179
|
+
Util.singleton_class.module_eval do
|
180
|
+
if Util.singleton_methods.include?(:glob_files_in_dir) # since 3.0.0.beta.2
|
181
|
+
remove_method :glob_files_in_dir
|
182
|
+
end
|
183
|
+
|
184
|
+
def glob_files_in_dir(glob, base_path)
|
185
|
+
if RUBY_VERSION >= "2.5"
|
186
|
+
Dir.glob(glob, :base => base_path).map! {|f| File.expand_path(f, base_path) }
|
187
|
+
else
|
188
|
+
Dir.glob(File.join(base_path.to_s.gsub(/[\[\]]/, '\\\\\\&'), glob)).map! {|f| File.expand_path(f) }
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
148
192
|
end
|
149
193
|
|
150
194
|
module Gem
|
@@ -4,12 +4,6 @@ require "rubygems/installer"
|
|
4
4
|
|
5
5
|
module Bundler
|
6
6
|
class RubyGemsGemInstaller < Gem::Installer
|
7
|
-
unless respond_to?(:at)
|
8
|
-
def self.at(*args)
|
9
|
-
new(*args)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
7
|
def check_executable_overwrite(filename)
|
14
8
|
# Bundler needs to install gems regardless of binstub overwriting
|
15
9
|
end
|
@@ -20,7 +14,7 @@ module Bundler
|
|
20
14
|
|
21
15
|
def build_extensions
|
22
16
|
extension_cache_path = options[:bundler_extension_cache_path]
|
23
|
-
return super unless extension_cache_path && extension_dir =
|
17
|
+
return super unless extension_cache_path && extension_dir = spec.extension_dir
|
24
18
|
|
25
19
|
extension_dir = Pathname.new(extension_dir)
|
26
20
|
build_complete = SharedHelpers.filesystem_access(extension_cache_path.join("gem.build_complete"), :read, &:file?)
|
@@ -40,7 +34,7 @@ module Bundler
|
|
40
34
|
end
|
41
35
|
end
|
42
36
|
|
43
|
-
|
37
|
+
private
|
44
38
|
|
45
39
|
def validate_bundler_checksum(checksum)
|
46
40
|
return true if Bundler.settings[:disable_checksum_validation]
|
@@ -66,7 +60,7 @@ module Bundler
|
|
66
60
|
|
67
61
|
If you wish to continue installing the downloaded gem, and are certain it does not pose a \
|
68
62
|
security issue despite the mismatching checksum, do the following:
|
69
|
-
1. run `bundle config set disable_checksum_validation true` to turn off checksum verification
|
63
|
+
1. run `bundle config set --local disable_checksum_validation true` to turn off checksum verification
|
70
64
|
2. run `bundle install`
|
71
65
|
|
72
66
|
(More info: The expected SHA256 checksum was #{checksum.inspect}, but the \
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "rubygems" unless defined?(Gem)
|
4
|
+
|
3
5
|
module Bundler
|
4
6
|
class RubygemsIntegration
|
5
7
|
if defined?(Gem::Ext::Builder::CHDIR_MONITOR)
|
@@ -100,11 +102,6 @@ module Bundler
|
|
100
102
|
end.flatten(1)
|
101
103
|
end
|
102
104
|
|
103
|
-
def spec_extension_dir(spec)
|
104
|
-
return unless spec.respond_to?(:extension_dir)
|
105
|
-
spec.extension_dir
|
106
|
-
end
|
107
|
-
|
108
105
|
def stub_set_spec(stub, spec)
|
109
106
|
stub.instance_variable_set(:@spec, spec)
|
110
107
|
end
|
@@ -139,14 +136,10 @@ module Bundler
|
|
139
136
|
end
|
140
137
|
|
141
138
|
def inflate(obj)
|
142
|
-
require "rubygems/util"
|
143
|
-
|
144
139
|
Gem::Util.inflate(obj)
|
145
140
|
end
|
146
141
|
|
147
142
|
def correct_for_windows_path(path)
|
148
|
-
require "rubygems/util"
|
149
|
-
|
150
143
|
if Gem::Util.respond_to?(:correct_for_windows_path)
|
151
144
|
Gem::Util.correct_for_windows_path(path)
|
152
145
|
elsif path[0].chr == "/" && path[1].chr =~ /[a-z]/i && path[2].chr == ":"
|
@@ -221,11 +214,6 @@ module Bundler
|
|
221
214
|
Gem.bin_path(gem, bin, ver)
|
222
215
|
end
|
223
216
|
|
224
|
-
def preserve_paths
|
225
|
-
# this is a no-op outside of RubyGems 1.8
|
226
|
-
yield
|
227
|
-
end
|
228
|
-
|
229
217
|
def loaded_gem_paths
|
230
218
|
loaded_gem_paths = Gem.loaded_specs.map {|_, s| s.full_require_paths }
|
231
219
|
loaded_gem_paths.flatten
|
@@ -263,8 +251,6 @@ module Bundler
|
|
263
251
|
require "rubygems/security"
|
264
252
|
require_relative "psyched_yaml"
|
265
253
|
gem_from_path(path, security_policies[policy]).spec
|
266
|
-
rescue Gem::Package::FormatError
|
267
|
-
raise GemspecError, "Could not read gem at #{path}. It may be corrupted."
|
268
254
|
rescue Exception, Gem::Exception, Gem::Security::Exception => e # rubocop:disable Lint/RescueException
|
269
255
|
if e.is_a?(Gem::Security::Exception) ||
|
270
256
|
e.message =~ /unknown trust policy|unsigned gem/i ||
|
@@ -327,8 +313,13 @@ module Bundler
|
|
327
313
|
end
|
328
314
|
|
329
315
|
message = if spec.nil?
|
316
|
+
target_file = begin
|
317
|
+
Bundler.default_gemfile.basename
|
318
|
+
rescue GemfileNotFound
|
319
|
+
"inline Gemfile"
|
320
|
+
end
|
330
321
|
"#{dep.name} is not part of the bundle." \
|
331
|
-
" Add it to your #{
|
322
|
+
" Add it to your #{target_file}."
|
332
323
|
else
|
333
324
|
"can't activate #{dep}, already activated #{spec.full_name}. " \
|
334
325
|
"Make sure all dependencies are added to Gemfile."
|
@@ -344,7 +335,7 @@ module Bundler
|
|
344
335
|
raise e
|
345
336
|
end
|
346
337
|
|
347
|
-
# backwards compatibility shim, see https://github.com/
|
338
|
+
# backwards compatibility shim, see https://github.com/rubygems/bundler/issues/5102
|
348
339
|
kernel_class.send(:public, :gem) if Bundler.feature_flag.setup_makes_kernel_gem_public?
|
349
340
|
end
|
350
341
|
end
|
@@ -420,6 +411,17 @@ module Bundler
|
|
420
411
|
# Replace or hook into RubyGems to provide a bundlerized view
|
421
412
|
# of the world.
|
422
413
|
def replace_entrypoints(specs)
|
414
|
+
specs_by_name = add_default_gems_to(specs)
|
415
|
+
|
416
|
+
replace_gem(specs, specs_by_name)
|
417
|
+
stub_rubygems(specs)
|
418
|
+
replace_bin_path(specs_by_name)
|
419
|
+
|
420
|
+
Gem.clear_paths
|
421
|
+
end
|
422
|
+
|
423
|
+
# Add default gems not already present in specs, and return them as a hash.
|
424
|
+
def add_default_gems_to(specs)
|
423
425
|
specs_by_name = specs.reduce({}) do |h, s|
|
424
426
|
h[s.name] = s
|
425
427
|
h
|
@@ -434,40 +436,7 @@ module Bundler
|
|
434
436
|
specs_by_name[default_spec_name] = default_spec
|
435
437
|
end
|
436
438
|
|
437
|
-
|
438
|
-
stub_rubygems(specs)
|
439
|
-
replace_bin_path(specs_by_name)
|
440
|
-
|
441
|
-
Gem.clear_paths
|
442
|
-
end
|
443
|
-
|
444
|
-
# This backports base_dir which replaces installation path
|
445
|
-
# RubyGems 1.8+
|
446
|
-
def backport_base_dir
|
447
|
-
redefine_method(Gem::Specification, :base_dir) do
|
448
|
-
return Gem.dir unless loaded_from
|
449
|
-
File.dirname File.dirname loaded_from
|
450
|
-
end
|
451
|
-
end
|
452
|
-
|
453
|
-
def backport_cache_file
|
454
|
-
redefine_method(Gem::Specification, :cache_dir) do
|
455
|
-
@cache_dir ||= File.join base_dir, "cache"
|
456
|
-
end
|
457
|
-
|
458
|
-
redefine_method(Gem::Specification, :cache_file) do
|
459
|
-
@cache_file ||= File.join cache_dir, "#{full_name}.gem"
|
460
|
-
end
|
461
|
-
end
|
462
|
-
|
463
|
-
def backport_spec_file
|
464
|
-
redefine_method(Gem::Specification, :spec_dir) do
|
465
|
-
@spec_dir ||= File.join base_dir, "specifications"
|
466
|
-
end
|
467
|
-
|
468
|
-
redefine_method(Gem::Specification, :spec_file) do
|
469
|
-
@spec_file ||= File.join spec_dir, "#{full_name}.gemspec"
|
470
|
-
end
|
439
|
+
specs_by_name
|
471
440
|
end
|
472
441
|
|
473
442
|
def undo_replacements
|
@@ -600,10 +569,10 @@ module Bundler
|
|
600
569
|
|
601
570
|
def backport_ext_builder_monitor
|
602
571
|
# So we can avoid requiring "rubygems/ext" in its entirety
|
603
|
-
Gem.module_eval <<-
|
572
|
+
Gem.module_eval <<-RUBY, __FILE__, __LINE__ + 1
|
604
573
|
module Ext
|
605
574
|
end
|
606
|
-
|
575
|
+
RUBY
|
607
576
|
|
608
577
|
require "rubygems/ext/builder"
|
609
578
|
|
data/lib/bundler/runtime.rb
CHANGED
@@ -43,14 +43,6 @@ module Bundler
|
|
43
43
|
self
|
44
44
|
end
|
45
45
|
|
46
|
-
REQUIRE_ERRORS = [
|
47
|
-
/^no such file to load -- (.+)$/i,
|
48
|
-
/^Missing \w+ (?:file\s*)?([^\s]+.rb)$/i,
|
49
|
-
/^Missing API definition file in (.+)$/i,
|
50
|
-
/^cannot load such file -- (.+)$/i,
|
51
|
-
/^dlopen\([^)]*\): Library not loaded: (.+)$/i,
|
52
|
-
].freeze
|
53
|
-
|
54
46
|
def require(*groups)
|
55
47
|
groups.map!(&:to_sym)
|
56
48
|
groups = [:default] if groups.empty?
|
@@ -79,16 +71,14 @@ module Bundler
|
|
79
71
|
end
|
80
72
|
end
|
81
73
|
rescue LoadError => e
|
82
|
-
|
83
|
-
raise if dep.autorequire || $1 != required_file
|
74
|
+
raise if dep.autorequire || e.path != required_file
|
84
75
|
|
85
76
|
if dep.autorequire.nil? && dep.name.include?("-")
|
86
77
|
begin
|
87
78
|
namespaced_file = dep.name.tr("-", "/")
|
88
79
|
Kernel.require namespaced_file
|
89
80
|
rescue LoadError => e
|
90
|
-
|
91
|
-
raise if $1 != namespaced_file
|
81
|
+
raise if e.path != namespaced_file
|
92
82
|
end
|
93
83
|
end
|
94
84
|
end
|
@@ -165,7 +155,7 @@ module Bundler
|
|
165
155
|
spec_cache_paths = []
|
166
156
|
spec_gemspec_paths = []
|
167
157
|
spec_extension_paths = []
|
168
|
-
specs.each do |spec|
|
158
|
+
Bundler.rubygems.add_default_gems_to(specs).values.each do |spec|
|
169
159
|
spec_gem_paths << spec.full_gem_path
|
170
160
|
# need to check here in case gems are nested like for the rails git repo
|
171
161
|
md = %r{(.+bundler/gems/.+-[a-f0-9]{7,12})}.match(spec.full_gem_path)
|
@@ -213,7 +203,7 @@ module Bundler
|
|
213
203
|
output
|
214
204
|
end
|
215
205
|
|
216
|
-
|
206
|
+
private
|
217
207
|
|
218
208
|
def prune_gem_cache(resolve, cache_path)
|
219
209
|
cached = Dir["#{cache_path}/*.gem"]
|
data/lib/bundler/settings.rb
CHANGED
@@ -12,7 +12,6 @@ module Bundler
|
|
12
12
|
allow_offline_install
|
13
13
|
auto_clean_without_path
|
14
14
|
auto_install
|
15
|
-
auto_config_jobs
|
16
15
|
cache_all
|
17
16
|
cache_all_platforms
|
18
17
|
default_install_uses_path
|
@@ -22,7 +21,6 @@ module Bundler
|
|
22
21
|
disable_exec_load
|
23
22
|
disable_local_branch_check
|
24
23
|
disable_multisource
|
25
|
-
disable_platform_warnings
|
26
24
|
disable_shared_gems
|
27
25
|
disable_version_check
|
28
26
|
force_ruby_platform
|
@@ -44,7 +42,6 @@ module Bundler
|
|
44
42
|
setup_makes_kernel_gem_public
|
45
43
|
silence_deprecations
|
46
44
|
silence_root_warning
|
47
|
-
skip_default_git_sources
|
48
45
|
specific_platform
|
49
46
|
suppress_install_using_messages
|
50
47
|
unlock_source_unlocks_spec
|
@@ -66,30 +63,25 @@ module Bundler
|
|
66
63
|
].freeze
|
67
64
|
|
68
65
|
DEFAULT_CONFIG = {
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
66
|
+
"BUNDLE_SILENCE_DEPRECATIONS" => false,
|
67
|
+
"BUNDLE_DISABLE_VERSION_CHECK" => true,
|
68
|
+
"BUNDLE_PREFER_PATCH" => false,
|
69
|
+
"BUNDLE_REDIRECT" => 5,
|
70
|
+
"BUNDLE_RETRY" => 3,
|
71
|
+
"BUNDLE_TIMEOUT" => 10,
|
75
72
|
}.freeze
|
76
73
|
|
77
74
|
def initialize(root = nil)
|
78
75
|
@root = root
|
79
76
|
@local_config = load_config(local_config_file)
|
77
|
+
@env_config = ENV.to_h.select {|key, _value| key =~ /\ABUNDLE_.+/ }
|
80
78
|
@global_config = load_config(global_config_file)
|
81
79
|
@temporary = {}
|
82
80
|
end
|
83
81
|
|
84
82
|
def [](name)
|
85
83
|
key = key_for(name)
|
86
|
-
value =
|
87
|
-
@local_config.fetch(key) do
|
88
|
-
ENV.fetch(key) do
|
89
|
-
@global_config.fetch(key) do
|
90
|
-
DEFAULT_CONFIG.fetch(name) do
|
91
|
-
nil
|
92
|
-
end end end end end
|
84
|
+
value = configs.values.map {|config| config[key] }.compact.first
|
93
85
|
|
94
86
|
converted_value(value, name)
|
95
87
|
end
|
@@ -132,9 +124,7 @@ module Bundler
|
|
132
124
|
end
|
133
125
|
|
134
126
|
def all
|
135
|
-
|
136
|
-
|
137
|
-
keys = @temporary.keys | @global_config.keys | @local_config.keys | env_keys
|
127
|
+
keys = @temporary.keys | @global_config.keys | @local_config.keys | @env_config.keys
|
138
128
|
|
139
129
|
keys.map do |key|
|
140
130
|
key.sub(/^BUNDLE_/, "").gsub(/__/, ".").downcase
|
@@ -171,13 +161,11 @@ module Bundler
|
|
171
161
|
|
172
162
|
def locations(key)
|
173
163
|
key = key_for(key)
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
locations[:default] = DEFAULT_CONFIG[key] if DEFAULT_CONFIG.key?(key)
|
180
|
-
locations
|
164
|
+
configs.keys.inject({}) do |partial_locations, level|
|
165
|
+
value_on_level = configs[level][key]
|
166
|
+
partial_locations[level] = value_on_level unless value_on_level.nil?
|
167
|
+
partial_locations
|
168
|
+
end
|
181
169
|
end
|
182
170
|
|
183
171
|
def pretty_values_for(exposed_key)
|
@@ -185,20 +173,20 @@ module Bundler
|
|
185
173
|
|
186
174
|
locations = []
|
187
175
|
|
188
|
-
if @temporary
|
189
|
-
locations << "Set for the current command: #{converted_value(
|
176
|
+
if value = @temporary[key]
|
177
|
+
locations << "Set for the current command: #{converted_value(value, exposed_key).inspect}"
|
190
178
|
end
|
191
179
|
|
192
|
-
if @local_config
|
193
|
-
locations << "Set for your local app (#{local_config_file}): #{converted_value(
|
180
|
+
if value = @local_config[key]
|
181
|
+
locations << "Set for your local app (#{local_config_file}): #{converted_value(value, exposed_key).inspect}"
|
194
182
|
end
|
195
183
|
|
196
|
-
if value =
|
184
|
+
if value = @env_config[key]
|
197
185
|
locations << "Set via #{key}: #{converted_value(value, exposed_key).inspect}"
|
198
186
|
end
|
199
187
|
|
200
|
-
if @global_config
|
201
|
-
locations << "Set for the current user (#{global_config_file}): #{converted_value(
|
188
|
+
if value = @global_config[key]
|
189
|
+
locations << "Set for the current user (#{global_config_file}): #{converted_value(value, exposed_key).inspect}"
|
202
190
|
end
|
203
191
|
|
204
192
|
return ["You have not configured a value for `#{exposed_key}`"] if locations.empty?
|
@@ -207,17 +195,19 @@ module Bundler
|
|
207
195
|
|
208
196
|
# for legacy reasons, in Bundler 2, we do not respect :disable_shared_gems
|
209
197
|
def path
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
198
|
+
configs.each do |_level, settings|
|
199
|
+
path = value_for("path", settings)
|
200
|
+
path_system = value_for("path.system", settings)
|
201
|
+
disabled_shared_gems = value_for("disable_shared_gems", settings)
|
202
|
+
next if path.nil? && path_system.nil? && disabled_shared_gems.nil?
|
203
|
+
system_path = path_system || (disabled_shared_gems == false)
|
204
|
+
return Path.new(path, system_path)
|
214
205
|
end
|
215
206
|
|
216
|
-
|
217
|
-
Path.new(self[:path], system_path, Bundler.feature_flag.default_install_uses_path?)
|
207
|
+
Path.new(nil, false)
|
218
208
|
end
|
219
209
|
|
220
|
-
Path = Struct.new(:explicit_path, :system_path
|
210
|
+
Path = Struct.new(:explicit_path, :system_path) do
|
221
211
|
def path
|
222
212
|
path = base_path
|
223
213
|
path = File.join(path, Bundler.ruby_scope) unless use_system_gems?
|
@@ -227,7 +217,7 @@ module Bundler
|
|
227
217
|
def use_system_gems?
|
228
218
|
return true if system_path
|
229
219
|
return false if explicit_path
|
230
|
-
!default_install_uses_path
|
220
|
+
!Bundler.feature_flag.default_install_uses_path?
|
231
221
|
end
|
232
222
|
|
233
223
|
def base_path
|
@@ -280,9 +270,9 @@ module Bundler
|
|
280
270
|
|
281
271
|
def validate!
|
282
272
|
all.each do |raw_key|
|
283
|
-
[@local_config,
|
284
|
-
value =
|
285
|
-
Validator.validate!(raw_key, value, settings.
|
273
|
+
[@local_config, @env_config, @global_config].each do |settings|
|
274
|
+
value = value_for(raw_key, settings)
|
275
|
+
Validator.validate!(raw_key, value, settings.dup)
|
286
276
|
end
|
287
277
|
end
|
288
278
|
end
|
@@ -293,7 +283,21 @@ module Bundler
|
|
293
283
|
"BUNDLE_#{key}"
|
294
284
|
end
|
295
285
|
|
296
|
-
|
286
|
+
private
|
287
|
+
|
288
|
+
def configs
|
289
|
+
{
|
290
|
+
:temporary => @temporary,
|
291
|
+
:local => @local_config,
|
292
|
+
:env => @env_config,
|
293
|
+
:global => @global_config,
|
294
|
+
:default => DEFAULT_CONFIG,
|
295
|
+
}
|
296
|
+
end
|
297
|
+
|
298
|
+
def value_for(name, config)
|
299
|
+
converted_value(config[key_for(name)], name)
|
300
|
+
end
|
297
301
|
|
298
302
|
def parent_setting_for(name)
|
299
303
|
split_specific_setting_for(name)[0]
|