bundler 2.2.33 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +27 -0
- data/exe/bundle +7 -8
- data/lib/bundler/build_metadata.rb +2 -2
- data/lib/bundler/cli/gem.rb +1 -1
- data/lib/bundler/cli/install.rb +2 -0
- data/lib/bundler/cli.rb +5 -0
- data/lib/bundler/definition.rb +14 -2
- data/lib/bundler/dependency.rb +5 -7
- data/lib/bundler/dsl.rb +0 -27
- data/lib/bundler/endpoint_specification.rb +0 -8
- data/lib/bundler/fetcher/compact_index.rb +9 -4
- data/lib/bundler/fetcher.rb +2 -5
- data/lib/bundler/injector.rb +10 -1
- data/lib/bundler/installer/gem_installer.rb +1 -6
- data/lib/bundler/installer.rb +1 -4
- data/lib/bundler/lockfile_parser.rb +10 -13
- data/lib/bundler/man/bundle-add.1 +9 -1
- data/lib/bundler/man/bundle-add.1.ronn +7 -1
- data/lib/bundler/man/bundle-config.1 +2 -2
- data/lib/bundler/man/bundle-config.1.ronn +3 -3
- data/lib/bundler/man/bundle-install.1 +1 -1
- data/lib/bundler/man/bundle-install.1.ronn +2 -2
- data/lib/bundler/man/bundle-update.1 +1 -1
- data/lib/bundler/man/bundle-update.1.ronn +2 -1
- data/lib/bundler/man/gemfile.5 +1 -1
- data/lib/bundler/man/gemfile.5.ronn +1 -1
- data/lib/bundler/plugin/installer.rb +1 -1
- data/lib/bundler/process_lock.rb +1 -1
- data/lib/bundler/psyched_yaml.rb +1 -13
- data/lib/bundler/resolver.rb +34 -29
- data/lib/bundler/rubygems_ext.rb +2 -0
- data/lib/bundler/rubygems_integration.rb +11 -48
- data/lib/bundler/self_manager.rb +73 -0
- data/lib/bundler/shared_helpers.rb +2 -9
- data/lib/bundler/source/metadata.rb +1 -1
- data/lib/bundler/templates/Executable.bundler +1 -1
- data/lib/bundler/templates/Gemfile +0 -2
- data/lib/bundler/templates/gems.rb +0 -3
- data/lib/bundler/templates/newgem/Rakefile.tt +10 -1
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
- data/lib/bundler/templates/newgem/test/minitest/{newgem_test.rb.tt → test_newgem.rb.tt} +1 -1
- data/lib/bundler/ui/shell.rb +1 -1
- data/lib/bundler/vendor/uri/lib/uri/common.rb +17 -80
- data/lib/bundler/vendor/uri/lib/uri/ftp.rb +0 -1
- data/lib/bundler/vendor/uri/lib/uri/generic.rb +5 -6
- data/lib/bundler/vendor/uri/lib/uri/http.rb +0 -1
- data/lib/bundler/vendor/uri/lib/uri/https.rb +0 -1
- data/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
- data/lib/bundler/vendor/uri/lib/uri/mailto.rb +0 -1
- data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +1 -14
- data/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +1 -12
- data/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/lib/bundler/vendor/uri/lib/uri/ws.rb +84 -0
- data/lib/bundler/vendor/uri/lib/uri/wss.rb +22 -0
- data/lib/bundler/vendor/uri/lib/uri.rb +0 -1
- data/lib/bundler/version.rb +1 -1
- data/lib/bundler.rb +9 -3
- metadata +7 -5
- data/lib/bundler/gemdeps.rb +0 -29
data/lib/bundler/resolver.rb
CHANGED
|
@@ -134,6 +134,7 @@ module Bundler
|
|
|
134
134
|
end
|
|
135
135
|
nested.reduce([]) do |groups, (version, specs)|
|
|
136
136
|
next groups if locked_requirement && !locked_requirement.satisfied_by?(version)
|
|
137
|
+
next groups unless specs.any? {|spec| spec.match_platform(platform) }
|
|
137
138
|
|
|
138
139
|
specs_by_platform = Hash.new do |current_specs, current_platform|
|
|
139
140
|
current_specs[current_platform] = select_best_platform_match(specs, current_platform)
|
|
@@ -145,7 +146,7 @@ module Bundler
|
|
|
145
146
|
next groups if @resolving_only_for_ruby
|
|
146
147
|
|
|
147
148
|
spec_group = SpecGroup.create_for(specs_by_platform, @platforms, platform)
|
|
148
|
-
groups << spec_group
|
|
149
|
+
groups << spec_group
|
|
149
150
|
|
|
150
151
|
groups
|
|
151
152
|
end
|
|
@@ -262,30 +263,37 @@ module Bundler
|
|
|
262
263
|
"If you are updating multiple gems in your Gemfile at once,\n" \
|
|
263
264
|
"try passing them all to `bundle update`"
|
|
264
265
|
else
|
|
265
|
-
|
|
266
|
-
specs = source.specs.search(name)
|
|
267
|
-
versions_with_platforms = specs.map {|s| [s.version, s.platform] }
|
|
268
|
-
cache_message = begin
|
|
269
|
-
" or in gems cached in #{Bundler.settings.app_cache_path}" if Bundler.app_cache.exist?
|
|
270
|
-
rescue GemfileNotFound
|
|
271
|
-
nil
|
|
272
|
-
end
|
|
273
|
-
message = String.new("Could not find gem '#{SharedHelpers.pretty_dependency(requirement)}' in #{source}#{cache_message}.\n")
|
|
274
|
-
message << "The source contains the following versions of '#{name}': #{formatted_versions_with_platforms(versions_with_platforms)}" if versions_with_platforms.any?
|
|
266
|
+
message = gem_not_found_message(name, requirement, source_for(name))
|
|
275
267
|
end
|
|
276
268
|
raise GemNotFound, message
|
|
277
269
|
end
|
|
278
270
|
end
|
|
279
271
|
|
|
280
|
-
def
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
272
|
+
def gem_not_found_message(name, requirement, source, extra_message = "")
|
|
273
|
+
specs = source.specs.search(name)
|
|
274
|
+
matching_part = name
|
|
275
|
+
requirement_label = SharedHelpers.pretty_dependency(requirement)
|
|
276
|
+
cache_message = begin
|
|
277
|
+
" or in gems cached in #{Bundler.settings.app_cache_path}" if Bundler.app_cache.exist?
|
|
278
|
+
rescue GemfileNotFound
|
|
279
|
+
nil
|
|
280
|
+
end
|
|
281
|
+
specs_matching_requirement = specs.select {| spec| requirement.matches_spec?(spec) }
|
|
282
|
+
|
|
283
|
+
if specs_matching_requirement.any?
|
|
284
|
+
specs = specs_matching_requirement
|
|
285
|
+
matching_part = requirement_label
|
|
286
|
+
requirement_label = "#{requirement_label} #{requirement.__platform}"
|
|
287
287
|
end
|
|
288
|
-
|
|
288
|
+
|
|
289
|
+
message = String.new("Could not find gem '#{requirement_label}'#{extra_message} in #{source}#{cache_message}.\n")
|
|
290
|
+
|
|
291
|
+
if specs.any?
|
|
292
|
+
message << "\nThe source contains the following gems matching '#{matching_part}':\n"
|
|
293
|
+
message << specs.map {|s| " * #{s.full_name}" }.join("\n")
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
message
|
|
289
297
|
end
|
|
290
298
|
|
|
291
299
|
def version_conflict_message(e)
|
|
@@ -357,19 +365,16 @@ module Bundler
|
|
|
357
365
|
|
|
358
366
|
metadata_requirement = name.end_with?("\0")
|
|
359
367
|
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
o << ", which is required by "
|
|
365
|
-
o << "gem '#{SharedHelpers.pretty_dependency(conflict.requirement_trees.first[-2])}',"
|
|
368
|
+
extra_message = if conflict.requirement_trees.first.size > 1
|
|
369
|
+
", which is required by gem '#{SharedHelpers.pretty_dependency(conflict.requirement_trees.first[-2])}',"
|
|
370
|
+
else
|
|
371
|
+
""
|
|
366
372
|
end
|
|
367
|
-
o << " "
|
|
368
373
|
|
|
369
|
-
|
|
370
|
-
"is not available in #{relevant_source}"
|
|
374
|
+
if metadata_requirement
|
|
375
|
+
o << "#{SharedHelpers.pretty_dependency(conflict.requirement)}#{extra_message} is not available in #{relevant_source}"
|
|
371
376
|
else
|
|
372
|
-
|
|
377
|
+
o << gem_not_found_message(name, conflict.requirement, relevant_source, extra_message)
|
|
373
378
|
end
|
|
374
379
|
end
|
|
375
380
|
end,
|
data/lib/bundler/rubygems_ext.rb
CHANGED
|
@@ -12,25 +12,21 @@ module Bundler
|
|
|
12
12
|
EXT_LOCK = Monitor.new
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
def self.version
|
|
16
|
-
@version ||= Gem::Version.new(Gem::VERSION)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def self.provides?(req_str)
|
|
20
|
-
Gem::Requirement.new(req_str).satisfied_by?(version)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
15
|
def initialize
|
|
24
16
|
@replaced_methods = {}
|
|
25
17
|
backport_ext_builder_monitor
|
|
26
18
|
end
|
|
27
19
|
|
|
28
20
|
def version
|
|
29
|
-
|
|
21
|
+
@version ||= Gem.rubygems_version
|
|
30
22
|
end
|
|
31
23
|
|
|
32
24
|
def provides?(req_str)
|
|
33
|
-
|
|
25
|
+
Gem::Requirement.new(req_str).satisfied_by?(version)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def supports_bundler_trampolining?
|
|
29
|
+
provides?(">= 3.3.0.a")
|
|
34
30
|
end
|
|
35
31
|
|
|
36
32
|
def build_args
|
|
@@ -115,7 +111,7 @@ module Bundler
|
|
|
115
111
|
Bundler.ui.error "#{e.class}: #{e.message}"
|
|
116
112
|
Bundler.ui.trace e
|
|
117
113
|
raise
|
|
118
|
-
rescue
|
|
114
|
+
rescue ::Psych::SyntaxError => e
|
|
119
115
|
raise YamlSyntaxError.new(e, "Your RubyGems configuration, which is " \
|
|
120
116
|
"usually located in ~/.gemrc, contains invalid YAML syntax.")
|
|
121
117
|
end
|
|
@@ -142,19 +138,6 @@ module Bundler
|
|
|
142
138
|
end
|
|
143
139
|
end
|
|
144
140
|
|
|
145
|
-
def sources=(val)
|
|
146
|
-
# Gem.configuration creates a new Gem::ConfigFile, which by default will read ~/.gemrc
|
|
147
|
-
# If that file exists, its settings (including sources) will overwrite the values we
|
|
148
|
-
# are about to set here. In order to avoid that, we force memoizing the config file now.
|
|
149
|
-
configuration
|
|
150
|
-
|
|
151
|
-
Gem.sources = val
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
def sources
|
|
155
|
-
Gem.sources
|
|
156
|
-
end
|
|
157
|
-
|
|
158
141
|
def gem_dir
|
|
159
142
|
Gem.dir
|
|
160
143
|
end
|
|
@@ -232,18 +215,6 @@ module Bundler
|
|
|
232
215
|
EXT_LOCK
|
|
233
216
|
end
|
|
234
217
|
|
|
235
|
-
def with_build_args(args)
|
|
236
|
-
ext_lock.synchronize do
|
|
237
|
-
old_args = build_args
|
|
238
|
-
begin
|
|
239
|
-
self.build_args = args
|
|
240
|
-
yield
|
|
241
|
-
ensure
|
|
242
|
-
self.build_args = old_args
|
|
243
|
-
end
|
|
244
|
-
end
|
|
245
|
-
end
|
|
246
|
-
|
|
247
218
|
def spec_from_gem(path, policy = nil)
|
|
248
219
|
require "rubygems/security"
|
|
249
220
|
require_relative "psyched_yaml"
|
|
@@ -571,10 +542,6 @@ module Bundler
|
|
|
571
542
|
Gem::REPOSITORY_SUBDIRECTORIES
|
|
572
543
|
end
|
|
573
544
|
|
|
574
|
-
def install_with_build_args(args)
|
|
575
|
-
yield
|
|
576
|
-
end
|
|
577
|
-
|
|
578
545
|
def path_separator
|
|
579
546
|
Gem.path_separator
|
|
580
547
|
end
|
|
@@ -604,6 +571,10 @@ module Bundler
|
|
|
604
571
|
end
|
|
605
572
|
end
|
|
606
573
|
|
|
574
|
+
def find_bundler(version)
|
|
575
|
+
find_name("bundler").find {|s| s.version.to_s == version }
|
|
576
|
+
end
|
|
577
|
+
|
|
607
578
|
def find_name(name)
|
|
608
579
|
Gem::Specification.stubs_for(name).map(&:to_spec)
|
|
609
580
|
end
|
|
@@ -617,14 +588,6 @@ module Bundler
|
|
|
617
588
|
Gem::Specification.send(:default_stubs, "*.gemspec")
|
|
618
589
|
end
|
|
619
590
|
end
|
|
620
|
-
|
|
621
|
-
def use_gemdeps(gemfile)
|
|
622
|
-
ENV["BUNDLE_GEMFILE"] ||= File.expand_path(gemfile)
|
|
623
|
-
require_relative "gemdeps"
|
|
624
|
-
runtime = Bundler.setup
|
|
625
|
-
activated_spec_names = runtime.requested_specs.map(&:to_spec).sort_by(&:name)
|
|
626
|
-
[Gemdeps.new(runtime), activated_spec_names]
|
|
627
|
-
end
|
|
628
591
|
end
|
|
629
592
|
|
|
630
593
|
def self.rubygems
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bundler
|
|
4
|
+
#
|
|
5
|
+
# This class handles installing and switching to the version of bundler needed
|
|
6
|
+
# by an application.
|
|
7
|
+
#
|
|
8
|
+
class SelfManager
|
|
9
|
+
def restart_with_locked_bundler_if_needed
|
|
10
|
+
return unless needs_switching? && installed?
|
|
11
|
+
|
|
12
|
+
restart_with_locked_bundler
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def install_locked_bundler_and_restart_with_it_if_needed
|
|
16
|
+
return unless needs_switching?
|
|
17
|
+
|
|
18
|
+
Bundler.ui.info \
|
|
19
|
+
"Bundler #{current_version} is running, but your lockfile was generated with #{lockfile_version}. " \
|
|
20
|
+
"Installing Bundler #{lockfile_version} and restarting using that version."
|
|
21
|
+
|
|
22
|
+
install_and_restart_with_locked_bundler
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
def install_and_restart_with_locked_bundler
|
|
28
|
+
bundler_dep = Gem::Dependency.new("bundler", lockfile_version)
|
|
29
|
+
|
|
30
|
+
Gem.install(bundler_dep)
|
|
31
|
+
rescue StandardError => e
|
|
32
|
+
Bundler.ui.trace e
|
|
33
|
+
Bundler.ui.warn "There was an error installing the locked bundler version (#{lockfile_version}), rerun with the `--verbose` flag for more details. Going on using bundler #{current_version}."
|
|
34
|
+
else
|
|
35
|
+
restart_with_locked_bundler
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def restart_with_locked_bundler
|
|
39
|
+
configured_gem_home = ENV["GEM_HOME"]
|
|
40
|
+
configured_gem_path = ENV["GEM_PATH"]
|
|
41
|
+
|
|
42
|
+
Bundler.with_original_env do
|
|
43
|
+
Kernel.exec(
|
|
44
|
+
{ "GEM_HOME" => configured_gem_home, "GEM_PATH" => configured_gem_path, "BUNDLER_VERSION" => lockfile_version },
|
|
45
|
+
$PROGRAM_NAME, *ARGV
|
|
46
|
+
)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def needs_switching?
|
|
51
|
+
ENV["BUNDLER_VERSION"].nil? &&
|
|
52
|
+
Bundler.rubygems.supports_bundler_trampolining? &&
|
|
53
|
+
SharedHelpers.in_bundle? &&
|
|
54
|
+
lockfile_version &&
|
|
55
|
+
!lockfile_version.end_with?(".dev") &&
|
|
56
|
+
lockfile_version != current_version
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def installed?
|
|
60
|
+
Bundler.configure
|
|
61
|
+
|
|
62
|
+
Bundler.rubygems.find_bundler(lockfile_version)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def current_version
|
|
66
|
+
@current_version ||= Bundler::VERSION
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def lockfile_version
|
|
70
|
+
@lockfile_version ||= Bundler::LockfileParser.bundled_with
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -109,7 +109,7 @@ module Bundler
|
|
|
109
109
|
raise VirtualProtocolError.new
|
|
110
110
|
rescue Errno::ENOSPC
|
|
111
111
|
raise NoSpaceOnDeviceError.new(path, action)
|
|
112
|
-
rescue
|
|
112
|
+
rescue Errno::ENOTSUP
|
|
113
113
|
raise OperationNotSupportedError.new(path, action)
|
|
114
114
|
rescue Errno::EEXIST, Errno::ENOENT
|
|
115
115
|
raise
|
|
@@ -117,13 +117,6 @@ module Bundler
|
|
|
117
117
|
raise GenericSystemCallError.new(e, "There was an error accessing `#{path}`.")
|
|
118
118
|
end
|
|
119
119
|
|
|
120
|
-
def const_get_safely(constant_name, namespace)
|
|
121
|
-
const_in_namespace = namespace.constants.include?(constant_name.to_s) ||
|
|
122
|
-
namespace.constants.include?(constant_name.to_sym)
|
|
123
|
-
return nil unless const_in_namespace
|
|
124
|
-
namespace.const_get(constant_name)
|
|
125
|
-
end
|
|
126
|
-
|
|
127
120
|
def major_deprecation(major_version, message, print_caller_location: false)
|
|
128
121
|
if print_caller_location
|
|
129
122
|
caller_location = caller_locations(2, 2).first
|
|
@@ -246,7 +239,7 @@ module Bundler
|
|
|
246
239
|
current = File.expand_path(SharedHelpers.pwd).tap{|x| x.untaint if RUBY_VERSION < "2.7" }
|
|
247
240
|
|
|
248
241
|
until !File.directory?(current) || current == previous
|
|
249
|
-
if ENV["
|
|
242
|
+
if ENV["BUNDLER_SPEC_RUN"]
|
|
250
243
|
# avoid stepping above the tmp directory when testing
|
|
251
244
|
gemspec = if ENV["GEM_COMMAND"]
|
|
252
245
|
# for Ruby Core
|
|
@@ -25,7 +25,7 @@ module Bundler
|
|
|
25
25
|
s.loaded_from = File.expand_path("..", __FILE__)
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
-
if local_spec = Bundler.rubygems.
|
|
28
|
+
if local_spec = Bundler.rubygems.find_bundler(VERSION)
|
|
29
29
|
idx << local_spec
|
|
30
30
|
end
|
|
31
31
|
|
|
@@ -73,7 +73,7 @@ m = Module.new do
|
|
|
73
73
|
|
|
74
74
|
requirement = bundler_gem_version.approximate_recommendation
|
|
75
75
|
|
|
76
|
-
return requirement unless Gem
|
|
76
|
+
return requirement unless Gem.rubygems_version < Gem::Version.new("2.7.0")
|
|
77
77
|
|
|
78
78
|
requirement += ".a" if bundler_gem_version.prerelease?
|
|
79
79
|
|
|
@@ -3,7 +3,16 @@
|
|
|
3
3
|
require "bundler/gem_tasks"
|
|
4
4
|
<% default_task_names = [config[:test_task]].compact -%>
|
|
5
5
|
<% case config[:test] -%>
|
|
6
|
-
<% when "minitest"
|
|
6
|
+
<% when "minitest" -%>
|
|
7
|
+
require "rake/testtask"
|
|
8
|
+
|
|
9
|
+
Rake::TestTask.new(:test) do |t|
|
|
10
|
+
t.libs << "test"
|
|
11
|
+
t.libs << "lib"
|
|
12
|
+
t.test_files = FileList["test/**/test_*.rb"]
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
<% when "test-unit" -%>
|
|
7
16
|
require "rake/testtask"
|
|
8
17
|
|
|
9
18
|
Rake::TestTask.new(:test) do |t|
|
|
@@ -39,6 +39,6 @@ Gem::Specification.new do |spec|
|
|
|
39
39
|
# Uncomment to register a new dependency of your gem
|
|
40
40
|
# spec.add_dependency "example-gem", "~> 1.0"
|
|
41
41
|
|
|
42
|
-
# For more information and examples about making a new gem,
|
|
42
|
+
# For more information and examples about making a new gem, check out our
|
|
43
43
|
# guide at: https://bundler.io/guides/creating_gem.html
|
|
44
44
|
end
|
data/lib/bundler/ui/shell.rb
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
# = uri/common.rb
|
|
4
4
|
#
|
|
5
5
|
# Author:: Akira Yamada <akira@ruby-lang.org>
|
|
6
|
-
# Revision:: $Id$
|
|
7
6
|
# License::
|
|
8
7
|
# You can redistribute it and/or modify it under the same term as Ruby.
|
|
9
8
|
#
|
|
@@ -61,82 +60,6 @@ module Bundler::URI
|
|
|
61
60
|
module_function :make_components_hash
|
|
62
61
|
end
|
|
63
62
|
|
|
64
|
-
# Module for escaping unsafe characters with codes.
|
|
65
|
-
module Escape
|
|
66
|
-
#
|
|
67
|
-
# == Synopsis
|
|
68
|
-
#
|
|
69
|
-
# Bundler::URI.escape(str [, unsafe])
|
|
70
|
-
#
|
|
71
|
-
# == Args
|
|
72
|
-
#
|
|
73
|
-
# +str+::
|
|
74
|
-
# String to replaces in.
|
|
75
|
-
# +unsafe+::
|
|
76
|
-
# Regexp that matches all symbols that must be replaced with codes.
|
|
77
|
-
# By default uses <tt>UNSAFE</tt>.
|
|
78
|
-
# When this argument is a String, it represents a character set.
|
|
79
|
-
#
|
|
80
|
-
# == Description
|
|
81
|
-
#
|
|
82
|
-
# Escapes the string, replacing all unsafe characters with codes.
|
|
83
|
-
#
|
|
84
|
-
# This method is obsolete and should not be used. Instead, use
|
|
85
|
-
# CGI.escape, Bundler::URI.encode_www_form or Bundler::URI.encode_www_form_component
|
|
86
|
-
# depending on your specific use case.
|
|
87
|
-
#
|
|
88
|
-
# == Usage
|
|
89
|
-
#
|
|
90
|
-
# require 'bundler/vendor/uri/lib/uri'
|
|
91
|
-
#
|
|
92
|
-
# enc_uri = Bundler::URI.escape("http://example.com/?a=\11\15")
|
|
93
|
-
# # => "http://example.com/?a=%09%0D"
|
|
94
|
-
#
|
|
95
|
-
# Bundler::URI.unescape(enc_uri)
|
|
96
|
-
# # => "http://example.com/?a=\t\r"
|
|
97
|
-
#
|
|
98
|
-
# Bundler::URI.escape("@?@!", "!?")
|
|
99
|
-
# # => "@%3F@%21"
|
|
100
|
-
#
|
|
101
|
-
def escape(*arg)
|
|
102
|
-
warn "Bundler::URI.escape is obsolete", uplevel: 1
|
|
103
|
-
DEFAULT_PARSER.escape(*arg)
|
|
104
|
-
end
|
|
105
|
-
alias encode escape
|
|
106
|
-
#
|
|
107
|
-
# == Synopsis
|
|
108
|
-
#
|
|
109
|
-
# Bundler::URI.unescape(str)
|
|
110
|
-
#
|
|
111
|
-
# == Args
|
|
112
|
-
#
|
|
113
|
-
# +str+::
|
|
114
|
-
# String to unescape.
|
|
115
|
-
#
|
|
116
|
-
# == Description
|
|
117
|
-
#
|
|
118
|
-
# This method is obsolete and should not be used. Instead, use
|
|
119
|
-
# CGI.unescape, Bundler::URI.decode_www_form or Bundler::URI.decode_www_form_component
|
|
120
|
-
# depending on your specific use case.
|
|
121
|
-
#
|
|
122
|
-
# == Usage
|
|
123
|
-
#
|
|
124
|
-
# require 'bundler/vendor/uri/lib/uri'
|
|
125
|
-
#
|
|
126
|
-
# enc_uri = Bundler::URI.escape("http://example.com/?a=\11\15")
|
|
127
|
-
# # => "http://example.com/?a=%09%0D"
|
|
128
|
-
#
|
|
129
|
-
# Bundler::URI.unescape(enc_uri)
|
|
130
|
-
# # => "http://example.com/?a=\t\r"
|
|
131
|
-
#
|
|
132
|
-
def unescape(*arg)
|
|
133
|
-
warn "Bundler::URI.unescape is obsolete", uplevel: 1
|
|
134
|
-
DEFAULT_PARSER.unescape(*arg)
|
|
135
|
-
end
|
|
136
|
-
alias decode unescape
|
|
137
|
-
end # module Escape
|
|
138
|
-
|
|
139
|
-
extend Escape
|
|
140
63
|
include REGEXP
|
|
141
64
|
|
|
142
65
|
@@schemes = {}
|
|
@@ -145,6 +68,20 @@ module Bundler::URI
|
|
|
145
68
|
@@schemes
|
|
146
69
|
end
|
|
147
70
|
|
|
71
|
+
#
|
|
72
|
+
# Construct a Bundler::URI instance, using the scheme to detect the appropriate class
|
|
73
|
+
# from +Bundler::URI.scheme_list+.
|
|
74
|
+
#
|
|
75
|
+
def self.for(scheme, *arguments, default: Generic)
|
|
76
|
+
if scheme
|
|
77
|
+
uri_class = @@schemes[scheme.upcase] || default
|
|
78
|
+
else
|
|
79
|
+
uri_class = default
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
return uri_class.new(scheme, *arguments)
|
|
83
|
+
end
|
|
84
|
+
|
|
148
85
|
#
|
|
149
86
|
# Base class for all Bundler::URI exceptions.
|
|
150
87
|
#
|
|
@@ -315,7 +252,7 @@ module Bundler::URI
|
|
|
315
252
|
#
|
|
316
253
|
# Returns a Regexp object which matches to Bundler::URI-like strings.
|
|
317
254
|
# The Regexp object returned by this method includes arbitrary
|
|
318
|
-
# number of capture group (parentheses). Never rely on
|
|
255
|
+
# number of capture group (parentheses). Never rely on its number.
|
|
319
256
|
#
|
|
320
257
|
# == Usage
|
|
321
258
|
#
|
|
@@ -362,7 +299,7 @@ module Bundler::URI
|
|
|
362
299
|
# If +enc+ is given, convert +str+ to the encoding before percent encoding.
|
|
363
300
|
#
|
|
364
301
|
# This is an implementation of
|
|
365
|
-
#
|
|
302
|
+
# https://www.w3.org/TR/2013/CR-html5-20130806/forms.html#url-encoded-form-data.
|
|
366
303
|
#
|
|
367
304
|
# See Bundler::URI.decode_www_form_component, Bundler::URI.encode_www_form.
|
|
368
305
|
def self.encode_www_form_component(str, enc=nil)
|
|
@@ -403,7 +340,7 @@ module Bundler::URI
|
|
|
403
340
|
# This method doesn't handle files. When you send a file, use
|
|
404
341
|
# multipart/form-data.
|
|
405
342
|
#
|
|
406
|
-
# This refers
|
|
343
|
+
# This refers https://url.spec.whatwg.org/#concept-urlencoded-serializer
|
|
407
344
|
#
|
|
408
345
|
# Bundler::URI.encode_www_form([["q", "ruby"], ["lang", "en"]])
|
|
409
346
|
# #=> "q=ruby&lang=en"
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
#
|
|
5
5
|
# Author:: Akira Yamada <akira@ruby-lang.org>
|
|
6
6
|
# License:: You can redistribute it and/or modify it under the same term as Ruby.
|
|
7
|
-
# Revision:: $Id$
|
|
8
7
|
#
|
|
9
8
|
# See Bundler::URI for general documentation
|
|
10
9
|
#
|
|
@@ -1098,7 +1097,7 @@ module Bundler::URI
|
|
|
1098
1097
|
# # => "http://my.example.com/main.rbx?page=1"
|
|
1099
1098
|
#
|
|
1100
1099
|
def merge(oth)
|
|
1101
|
-
rel = parser.
|
|
1100
|
+
rel = parser.__send__(:convert_to_uri, oth)
|
|
1102
1101
|
|
|
1103
1102
|
if rel.absolute?
|
|
1104
1103
|
#raise BadURIError, "both Bundler::URI are absolute" if absolute?
|
|
@@ -1183,7 +1182,7 @@ module Bundler::URI
|
|
|
1183
1182
|
|
|
1184
1183
|
# :stopdoc:
|
|
1185
1184
|
def route_from0(oth)
|
|
1186
|
-
oth = parser.
|
|
1185
|
+
oth = parser.__send__(:convert_to_uri, oth)
|
|
1187
1186
|
if self.relative?
|
|
1188
1187
|
raise BadURIError,
|
|
1189
1188
|
"relative Bundler::URI: #{self}"
|
|
@@ -1291,7 +1290,7 @@ module Bundler::URI
|
|
|
1291
1290
|
# #=> #<Bundler::URI::Generic /main.rbx?page=1>
|
|
1292
1291
|
#
|
|
1293
1292
|
def route_to(oth)
|
|
1294
|
-
parser.
|
|
1293
|
+
parser.__send__(:convert_to_uri, oth).route_from(self)
|
|
1295
1294
|
end
|
|
1296
1295
|
|
|
1297
1296
|
#
|
|
@@ -1405,7 +1404,7 @@ module Bundler::URI
|
|
|
1405
1404
|
# Returns an Array of the components defined from the COMPONENT Array.
|
|
1406
1405
|
def component_ary
|
|
1407
1406
|
component.collect do |x|
|
|
1408
|
-
self.
|
|
1407
|
+
self.__send__(x)
|
|
1409
1408
|
end
|
|
1410
1409
|
end
|
|
1411
1410
|
protected :component_ary
|
|
@@ -1430,7 +1429,7 @@ module Bundler::URI
|
|
|
1430
1429
|
def select(*components)
|
|
1431
1430
|
components.collect do |c|
|
|
1432
1431
|
if component.include?(c)
|
|
1433
|
-
self.
|
|
1432
|
+
self.__send__(c)
|
|
1434
1433
|
else
|
|
1435
1434
|
raise ArgumentError,
|
|
1436
1435
|
"expected of components of #{self.class} (#{self.class.component.join(', ')})"
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
# License::
|
|
8
8
|
# Bundler::URI::LDAP is copyrighted free software by Takaaki Tateishi and Akira Yamada.
|
|
9
9
|
# You can redistribute it and/or modify it under the same term as Ruby.
|
|
10
|
-
# Revision:: $Id$
|
|
11
10
|
#
|
|
12
11
|
# See Bundler::URI for general documentation
|
|
13
12
|
#
|
|
@@ -119,6 +118,7 @@ module Bundler::URI
|
|
|
119
118
|
|
|
120
119
|
# Private method to cleanup +dn+ from using the +path+ component attribute.
|
|
121
120
|
def parse_dn
|
|
121
|
+
raise InvalidURIError, 'bad LDAP URL' unless @path
|
|
122
122
|
@dn = @path[1..-1]
|
|
123
123
|
end
|
|
124
124
|
private :parse_dn
|