bundler 1.15.4 → 1.16.0.pre.1

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.

Files changed (251) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +43 -0
  3. data/README.md +12 -7
  4. data/exe/bundle +1 -1
  5. data/exe/bundle_ruby +4 -3
  6. data/lib/bundler.rb +47 -37
  7. data/lib/bundler/build_metadata.rb +38 -0
  8. data/lib/bundler/capistrano.rb +5 -0
  9. data/lib/bundler/cli.rb +155 -67
  10. data/lib/bundler/cli/add.rb +0 -1
  11. data/lib/bundler/cli/binstubs.rb +9 -7
  12. data/lib/bundler/cli/cache.rb +5 -4
  13. data/lib/bundler/cli/check.rb +3 -5
  14. data/lib/bundler/cli/clean.rb +5 -6
  15. data/lib/bundler/cli/common.rb +11 -2
  16. data/lib/bundler/cli/config.rb +2 -1
  17. data/lib/bundler/cli/console.rb +2 -1
  18. data/lib/bundler/cli/doctor.rb +1 -0
  19. data/lib/bundler/cli/exec.rb +2 -1
  20. data/lib/bundler/cli/gem.rb +3 -2
  21. data/lib/bundler/cli/info.rb +0 -1
  22. data/lib/bundler/cli/init.rb +17 -6
  23. data/lib/bundler/cli/inject.rb +1 -0
  24. data/lib/bundler/cli/install.rb +61 -61
  25. data/lib/bundler/cli/issue.rb +1 -1
  26. data/lib/bundler/cli/list.rb +22 -0
  27. data/lib/bundler/cli/lock.rb +0 -1
  28. data/lib/bundler/cli/open.rb +2 -2
  29. data/lib/bundler/cli/outdated.rb +13 -8
  30. data/lib/bundler/cli/package.rb +9 -6
  31. data/lib/bundler/cli/platform.rb +1 -0
  32. data/lib/bundler/cli/plugin.rb +1 -0
  33. data/lib/bundler/cli/pristine.rb +9 -2
  34. data/lib/bundler/cli/show.rb +0 -1
  35. data/lib/bundler/cli/update.rb +31 -5
  36. data/lib/bundler/cli/viz.rb +1 -0
  37. data/lib/bundler/compact_index_client.rb +1 -0
  38. data/lib/bundler/compact_index_client/cache.rb +1 -0
  39. data/lib/bundler/compact_index_client/updater.rb +3 -2
  40. data/lib/bundler/compatibility_guard.rb +14 -0
  41. data/lib/bundler/constants.rb +1 -0
  42. data/lib/bundler/current_ruby.rb +5 -4
  43. data/lib/bundler/definition.rb +140 -95
  44. data/lib/bundler/dep_proxy.rb +2 -0
  45. data/lib/bundler/dependency.rb +6 -7
  46. data/lib/bundler/deployment.rb +1 -1
  47. data/lib/bundler/deprecate.rb +1 -0
  48. data/lib/bundler/dsl.rb +97 -62
  49. data/lib/bundler/endpoint_specification.rb +9 -0
  50. data/lib/bundler/env.rb +63 -27
  51. data/lib/bundler/environment_preserver.rb +26 -6
  52. data/lib/bundler/errors.rb +1 -0
  53. data/lib/bundler/feature_flag.rb +39 -4
  54. data/lib/bundler/fetcher.rb +15 -8
  55. data/lib/bundler/fetcher/base.rb +1 -0
  56. data/lib/bundler/fetcher/compact_index.rb +2 -11
  57. data/lib/bundler/fetcher/dependency.rb +1 -0
  58. data/lib/bundler/fetcher/downloader.rb +1 -0
  59. data/lib/bundler/fetcher/index.rb +1 -0
  60. data/lib/bundler/friendly_errors.rb +2 -1
  61. data/lib/bundler/gem_helper.rb +14 -9
  62. data/lib/bundler/gem_helpers.rb +1 -0
  63. data/lib/bundler/gem_remote_fetcher.rb +1 -0
  64. data/lib/bundler/gem_tasks.rb +1 -0
  65. data/lib/bundler/gem_version_promoter.rb +1 -0
  66. data/lib/bundler/gemdeps.rb +1 -0
  67. data/lib/bundler/graph.rb +1 -0
  68. data/lib/bundler/index.rb +15 -8
  69. data/lib/bundler/injector.rb +25 -22
  70. data/lib/bundler/inline.rb +5 -7
  71. data/lib/bundler/installer.rb +93 -45
  72. data/lib/bundler/installer/gem_installer.rb +2 -0
  73. data/lib/bundler/installer/parallel_installer.rb +73 -42
  74. data/lib/bundler/installer/standalone.rb +1 -0
  75. data/lib/bundler/lazy_specification.rb +2 -1
  76. data/lib/bundler/lockfile_generator.rb +95 -0
  77. data/lib/bundler/lockfile_parser.rb +10 -4
  78. data/lib/bundler/match_platform.rb +1 -0
  79. data/lib/bundler/mirror.rb +6 -3
  80. data/lib/bundler/plugin.rb +1 -0
  81. data/lib/bundler/plugin/api/source.rb +8 -0
  82. data/lib/bundler/plugin/installer.rb +7 -6
  83. data/lib/bundler/plugin/source_list.rb +7 -8
  84. data/lib/bundler/process_lock.rb +24 -0
  85. data/lib/bundler/psyched_yaml.rb +1 -0
  86. data/lib/bundler/remote_specification.rb +1 -0
  87. data/lib/bundler/resolver.rb +138 -191
  88. data/lib/bundler/resolver/spec_group.rb +111 -0
  89. data/lib/bundler/retry.rb +1 -0
  90. data/lib/bundler/ruby_dsl.rb +1 -0
  91. data/lib/bundler/ruby_version.rb +1 -0
  92. data/lib/bundler/rubygems_ext.rb +5 -4
  93. data/lib/bundler/rubygems_gem_installer.rb +23 -0
  94. data/lib/bundler/rubygems_integration.rb +56 -27
  95. data/lib/bundler/runtime.rb +3 -5
  96. data/lib/bundler/settings.rb +177 -76
  97. data/lib/bundler/settings/validator.rb +79 -0
  98. data/lib/bundler/setup.rb +1 -0
  99. data/lib/bundler/shared_helpers.rb +86 -26
  100. data/lib/bundler/similarity_detector.rb +1 -0
  101. data/lib/bundler/source.rb +32 -0
  102. data/lib/bundler/source/gemspec.rb +1 -0
  103. data/lib/bundler/source/git.rb +21 -16
  104. data/lib/bundler/source/git/git_proxy.rb +14 -10
  105. data/lib/bundler/source/metadata.rb +63 -0
  106. data/lib/bundler/source/path.rb +8 -8
  107. data/lib/bundler/source/path/installer.rb +2 -0
  108. data/lib/bundler/source/rubygems.rb +131 -84
  109. data/lib/bundler/source/rubygems/remote.rb +3 -0
  110. data/lib/bundler/source_list.rb +75 -15
  111. data/lib/bundler/spec_set.rb +2 -1
  112. data/lib/bundler/ssl_certs/certificate_manager.rb +2 -1
  113. data/lib/bundler/stub_specification.rb +1 -0
  114. data/lib/bundler/templates/Executable +4 -0
  115. data/lib/bundler/templates/Executable.bundler +105 -0
  116. data/lib/bundler/templates/Gemfile +1 -0
  117. data/lib/bundler/templates/gems.rb +8 -0
  118. data/lib/bundler/templates/newgem/README.md.tt +1 -1
  119. data/lib/bundler/templates/newgem/gitignore.tt +0 -1
  120. data/lib/bundler/templates/newgem/newgem.gemspec.tt +4 -1
  121. data/lib/bundler/templates/newgem/rspec.tt +1 -0
  122. data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +0 -2
  123. data/lib/bundler/ui.rb +1 -0
  124. data/lib/bundler/ui/rg_proxy.rb +1 -0
  125. data/lib/bundler/ui/shell.rb +15 -4
  126. data/lib/bundler/ui/silent.rb +1 -0
  127. data/lib/bundler/uri_credentials_filter.rb +1 -0
  128. data/lib/bundler/vendor/fileutils/lib/fileutils.rb +1638 -0
  129. data/lib/bundler/vendor/molinillo/lib/molinillo.rb +2 -0
  130. data/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +26 -0
  131. data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  132. data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +1 -0
  133. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +3 -2
  134. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  135. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -0
  136. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -0
  137. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -0
  138. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -0
  139. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +1 -0
  140. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -0
  141. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -0
  142. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +3 -2
  143. data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +69 -6
  144. data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  145. data/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +1 -0
  146. data/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +3 -1
  147. data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +487 -148
  148. data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +1 -0
  149. data/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +8 -4
  150. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
  151. data/lib/bundler/vendored_fileutils.rb +9 -0
  152. data/lib/bundler/vendored_molinillo.rb +1 -0
  153. data/lib/bundler/vendored_persistent.rb +34 -0
  154. data/lib/bundler/vendored_thor.rb +1 -0
  155. data/lib/bundler/version.rb +6 -2
  156. data/lib/bundler/version_ranges.rb +1 -0
  157. data/lib/bundler/vlad.rb +5 -0
  158. data/lib/bundler/worker.rb +1 -0
  159. data/lib/bundler/yaml_serializer.rb +3 -3
  160. data/man/bundle-add.1 +43 -0
  161. data/man/bundle-add.1.txt +40 -0
  162. data/man/bundle-binstubs.1 +40 -0
  163. data/man/bundle-binstubs.1.txt +48 -0
  164. data/man/bundle-binstubs.ronn +14 -0
  165. data/man/bundle-check.1 +31 -0
  166. data/man/bundle-check.1.txt +32 -0
  167. data/man/bundle-clean.1 +24 -0
  168. data/man/bundle-clean.1.txt +26 -0
  169. data/man/bundle-config.1 +455 -0
  170. data/man/bundle-config.1.txt +491 -0
  171. data/man/bundle-config.ronn +133 -79
  172. data/man/bundle-exec.1 +165 -0
  173. data/man/bundle-exec.1.txt +178 -0
  174. data/man/bundle-exec.ronn +7 -0
  175. data/man/bundle-gem.1 +80 -0
  176. data/man/bundle-gem.1.txt +91 -0
  177. data/man/bundle-gem.ronn +2 -1
  178. data/man/bundle-info.1 +20 -0
  179. data/man/bundle-info.1.txt +21 -0
  180. data/man/bundle-init.1 +20 -0
  181. data/man/bundle-init.1.txt +24 -0
  182. data/man/bundle-inject.1 +33 -0
  183. data/man/bundle-inject.1.txt +32 -0
  184. data/man/bundle-install.1 +305 -0
  185. data/man/bundle-install.1.txt +385 -0
  186. data/man/bundle-install.ronn +32 -32
  187. data/man/bundle-list.1 +20 -0
  188. data/man/bundle-list.1.txt +21 -0
  189. data/man/bundle-list.ronn +15 -0
  190. data/man/bundle-lock.1 +84 -0
  191. data/man/bundle-lock.1.txt +93 -0
  192. data/man/bundle-open.1 +32 -0
  193. data/man/bundle-open.1.txt +29 -0
  194. data/man/bundle-outdated.1 +151 -0
  195. data/man/bundle-outdated.1.txt +127 -0
  196. data/man/bundle-outdated.ronn +1 -1
  197. data/man/bundle-package.1 +55 -0
  198. data/man/bundle-package.1.txt +79 -0
  199. data/man/bundle-package.ronn +5 -0
  200. data/man/bundle-platform.1 +61 -0
  201. data/man/bundle-platform.1.txt +57 -0
  202. data/man/bundle-pristine.1 +34 -0
  203. data/man/bundle-pristine.1.txt +44 -0
  204. data/man/bundle-pristine.ronn +24 -3
  205. data/man/bundle-show.1 +23 -0
  206. data/man/bundle-show.1.txt +25 -0
  207. data/man/bundle-update.1 +390 -0
  208. data/man/bundle-update.1.txt +386 -0
  209. data/man/bundle-update.ronn +2 -2
  210. data/man/bundle-viz.1 +39 -0
  211. data/man/bundle-viz.1.txt +38 -0
  212. data/man/bundle-viz.ronn +5 -5
  213. data/man/bundle.1 +132 -0
  214. data/man/bundle.1.txt +113 -0
  215. data/man/bundle.ronn +5 -2
  216. data/man/gemfile.5 +679 -0
  217. data/man/gemfile.5.ronn +31 -0
  218. data/man/gemfile.5.txt +636 -0
  219. data/man/index.txt +23 -0
  220. metadata +21 -36
  221. data/.codeclimate.yml +0 -25
  222. data/.gitignore +0 -18
  223. data/.rspec +0 -3
  224. data/.rubocop.yml +0 -131
  225. data/.rubocop_todo.yml +0 -418
  226. data/.travis.yml +0 -122
  227. data/CODE_OF_CONDUCT.md +0 -42
  228. data/CONTRIBUTING.md +0 -17
  229. data/Rakefile +0 -338
  230. data/bin/rake +0 -19
  231. data/bin/rspec +0 -15
  232. data/bin/rubocop +0 -17
  233. data/bin/with_rubygems +0 -39
  234. data/bundler.gemspec +0 -48
  235. data/doc/README.md +0 -30
  236. data/doc/TROUBLESHOOTING.md +0 -64
  237. data/doc/contributing/BUG_TRIAGE.md +0 -36
  238. data/doc/contributing/COMMUNITY.md +0 -13
  239. data/doc/contributing/GETTING_HELP.md +0 -11
  240. data/doc/contributing/HOW_YOU_CAN_HELP.md +0 -27
  241. data/doc/contributing/ISSUES.md +0 -51
  242. data/doc/contributing/README.md +0 -38
  243. data/doc/development/NEW_FEATURES.md +0 -10
  244. data/doc/development/PULL_REQUESTS.md +0 -40
  245. data/doc/development/README.md +0 -19
  246. data/doc/development/RELEASING.md +0 -9
  247. data/doc/development/SETUP.md +0 -27
  248. data/doc/documentation/README.md +0 -29
  249. data/doc/documentation/VISION.md +0 -26
  250. data/doc/documentation/WRITING.md +0 -54
  251. data/task/release.rake +0 -116
@@ -0,0 +1,111 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler
4
+ class Resolver
5
+ class SpecGroup
6
+ include GemHelpers
7
+
8
+ attr_accessor :name, :version, :source
9
+ attr_accessor :ignores_bundler_dependencies
10
+
11
+ def initialize(all_specs)
12
+ raise ArgumentError, "cannot initialize with an empty value" unless exemplary_spec = all_specs.first
13
+ @name = exemplary_spec.name
14
+ @version = exemplary_spec.version
15
+ @source = exemplary_spec.source
16
+
17
+ @required_by = []
18
+ @activated_platforms = []
19
+ @dependencies = nil
20
+ @specs = Hash.new do |specs, platform|
21
+ specs[platform] = select_best_platform_match(all_specs, platform)
22
+ end
23
+ @ignores_bundler_dependencies = true
24
+ end
25
+
26
+ def to_specs
27
+ @activated_platforms.map do |p|
28
+ next unless s = @specs[p]
29
+ lazy_spec = LazySpecification.new(name, version, s.platform, source)
30
+ lazy_spec.dependencies.replace s.dependencies
31
+ lazy_spec
32
+ end.compact
33
+ end
34
+
35
+ def activate_platform!(platform)
36
+ return unless for?(platform)
37
+ return if @activated_platforms.include?(platform)
38
+ @activated_platforms << platform
39
+ end
40
+
41
+ def for?(platform)
42
+ spec = @specs[platform]
43
+ !spec.nil?
44
+ end
45
+
46
+ def to_s
47
+ @to_s ||= "#{name} (#{version})"
48
+ end
49
+
50
+ def dependencies_for_activated_platforms
51
+ dependencies = @activated_platforms.map {|p| __dependencies[p] }
52
+ metadata_dependencies = @activated_platforms.map do |platform|
53
+ metadata_dependencies(@specs[platform], platform)
54
+ end
55
+ dependencies.concat(metadata_dependencies).flatten
56
+ end
57
+
58
+ def platforms_for_dependency_named(dependency)
59
+ __dependencies.select {|_, deps| deps.map(&:name).include? dependency }.keys
60
+ end
61
+
62
+ def ==(other)
63
+ return unless other.is_a?(SpecGroup)
64
+ name == other.name &&
65
+ version == other.version &&
66
+ source == other.source
67
+ end
68
+
69
+ def eql?(other)
70
+ name.eql?(other.name) &&
71
+ version.eql?(other.version) &&
72
+ source.eql?(other.source)
73
+ end
74
+
75
+ def hash
76
+ to_s.hash ^ source.hash
77
+ end
78
+
79
+ private
80
+
81
+ def __dependencies
82
+ @dependencies = Hash.new do |dependencies, platform|
83
+ dependencies[platform] = []
84
+ if spec = @specs[platform]
85
+ spec.dependencies.each do |dep|
86
+ next if dep.type == :development
87
+ next if @ignores_bundler_dependencies && dep.name == "bundler".freeze
88
+ dependencies[platform] << DepProxy.new(dep, platform)
89
+ end
90
+ end
91
+ dependencies[platform]
92
+ end
93
+ end
94
+
95
+ def metadata_dependencies(spec, platform)
96
+ return [] unless spec
97
+ # Only allow endpoint specifications since they won't hit the network to
98
+ # fetch the full gemspec when calling required_ruby_version
99
+ return [] if !spec.is_a?(EndpointSpecification) && !spec.is_a?(Gem::Specification)
100
+ dependencies = []
101
+ if !spec.required_ruby_version.nil? && !spec.required_ruby_version.none?
102
+ dependencies << DepProxy.new(Gem::Dependency.new("ruby\0", spec.required_ruby_version), platform)
103
+ end
104
+ if !spec.required_rubygems_version.nil? && !spec.required_rubygems_version.none?
105
+ dependencies << DepProxy.new(Gem::Dependency.new("rubygems\0", spec.required_rubygems_version), platform)
106
+ end
107
+ dependencies
108
+ end
109
+ end
110
+ end
111
+ end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Bundler
3
4
  # General purpose class for retrying code that may fail
4
5
  class Retry
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Bundler
3
4
  module RubyDsl
4
5
  def ruby(*ruby_version)
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Bundler
3
4
  class RubyVersion
4
5
  attr_reader :versions,
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "pathname"
3
4
 
4
5
  if defined?(Gem::QuickLoader)
@@ -14,7 +15,7 @@ begin
14
15
  # shouldn't be deferred.
15
16
  require "rubygems/source"
16
17
  rescue LoadError
17
- # Not available before Rubygems 2.0.0, ignore
18
+ # Not available before RubyGems 2.0.0, ignore
18
19
  nil
19
20
  end
20
21
 
@@ -135,7 +136,7 @@ module Gem
135
136
  end
136
137
 
137
138
  class Dependency
138
- attr_accessor :source, :groups
139
+ attr_accessor :source, :groups, :all_sources
139
140
 
140
141
  alias_method :eql?, :==
141
142
 
@@ -146,7 +147,7 @@ module Gem
146
147
  end
147
148
 
148
149
  def to_yaml_properties
149
- instance_variables.reject {|p| ["@source", "@groups"].include?(p.to_s) }
150
+ instance_variables.reject {|p| ["@source", "@groups", "@all_sources"].include?(p.to_s) }
150
151
  end
151
152
 
152
153
  def to_lock
@@ -158,7 +159,7 @@ module Gem
158
159
  out
159
160
  end
160
161
 
161
- # Backport of performance enhancement added to Rubygems 1.4
162
+ # Backport of performance enhancement added to RubyGems 1.4
162
163
  def matches_spec?(spec)
163
164
  # name can be a Regexp, so use ===
164
165
  return false unless name === spec.name
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "rubygems/installer"
3
4
 
4
5
  module Bundler
@@ -17,6 +18,28 @@ module Bundler
17
18
  super && validate_bundler_checksum(options[:bundler_expected_checksum])
18
19
  end
19
20
 
21
+ def build_extensions
22
+ extension_cache_path = options[:bundler_extension_cache_path]
23
+ return super unless extension_cache_path && extension_dir = Bundler.rubygems.spec_extension_dir(spec)
24
+
25
+ extension_dir = Pathname.new(extension_dir)
26
+ build_complete = SharedHelpers.filesystem_access(extension_cache_path.join("gem.build_complete"), :read, &:file?)
27
+ if build_complete && !options[:force]
28
+ SharedHelpers.filesystem_access(extension_dir.parent, &:mkpath)
29
+ SharedHelpers.filesystem_access(extension_cache_path) do
30
+ FileUtils.cp_r extension_cache_path, spec.extension_dir
31
+ end
32
+ else
33
+ super
34
+ if extension_dir.directory? # not made for gems without extensions
35
+ SharedHelpers.filesystem_access(extension_cache_path.parent, &:mkpath)
36
+ SharedHelpers.filesystem_access(extension_cache_path) do
37
+ FileUtils.cp_r extension_dir, extension_cache_path
38
+ end
39
+ end
40
+ end
41
+ end
42
+
20
43
  private
21
44
 
22
45
  def validate_bundler_checksum(checksum)
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "monitor"
3
4
  require "rubygems"
4
5
  require "rubygems/config_file"
@@ -84,6 +85,19 @@ module Bundler
84
85
  spec.respond_to?(:default_gem?) && spec.default_gem?
85
86
  end
86
87
 
88
+ def spec_matches_for_glob(spec, glob)
89
+ return spec.matches_for_glob(glob) if spec.respond_to?(:matches_for_glob)
90
+
91
+ spec.load_paths.map do |lp|
92
+ Dir["#{lp}/#{glob}#{suffix_pattern}"]
93
+ end.flatten(1)
94
+ end
95
+
96
+ def spec_extension_dir(spec)
97
+ return unless spec.respond_to?(:extension_dir)
98
+ spec.extension_dir
99
+ end
100
+
87
101
  def stub_set_spec(stub, spec)
88
102
  stub.instance_variable_set(:@spec, spec)
89
103
  end
@@ -158,6 +172,10 @@ module Bundler
158
172
  Gem.post_reset_hooks
159
173
  end
160
174
 
175
+ def suffix_pattern
176
+ Gem.suffix_pattern
177
+ end
178
+
161
179
  def gem_cache
162
180
  gem_path.map {|p| File.expand_path("cache", p) }
163
181
  end
@@ -165,7 +183,7 @@ module Bundler
165
183
  def spec_cache_dirs
166
184
  @spec_cache_dirs ||= begin
167
185
  dirs = gem_path.map {|dir| File.join(dir, "specifications") }
168
- dirs << Gem.spec_cache_dir if Gem.respond_to?(:spec_cache_dir) # Not in Rubygems 2.0.3 or earlier
186
+ dirs << Gem.spec_cache_dir if Gem.respond_to?(:spec_cache_dir) # Not in RubyGems 2.0.3 or earlier
169
187
  dirs.uniq.select {|dir| File.directory? dir }
170
188
  end
171
189
  end
@@ -179,7 +197,7 @@ module Bundler
179
197
  end
180
198
 
181
199
  def repository_subdirectories
182
- %w(cache doc gems specifications)
200
+ %w[cache doc gems specifications]
183
201
  end
184
202
 
185
203
  def clear_paths
@@ -190,8 +208,12 @@ module Bundler
190
208
  Gem.bin_path(gem, bin, ver)
191
209
  end
192
210
 
211
+ def path_separator
212
+ File::PATH_SEPARATOR
213
+ end
214
+
193
215
  def preserve_paths
194
- # this is a no-op outside of Rubygems 1.8
216
+ # this is a no-op outside of RubyGems 1.8
195
217
  yield
196
218
  end
197
219
 
@@ -212,6 +234,10 @@ module Bundler
212
234
  Gem.load_plugins if Gem.respond_to?(:load_plugins)
213
235
  end
214
236
 
237
+ def load_plugin_files(files)
238
+ Gem.load_plugin_files(files) if Gem.respond_to?(:load_plugin_files)
239
+ end
240
+
215
241
  def ui=(obj)
216
242
  Gem::DefaultUserInteraction.ui = obj
217
243
  end
@@ -233,9 +259,9 @@ module Bundler
233
259
  {} # if we can't download them, there aren't any
234
260
  end
235
261
 
236
- # TODO: This is for older versions of Rubygems... should we support the
262
+ # TODO: This is for older versions of RubyGems... should we support the
237
263
  # X-Gemfile-Source header on these old versions?
238
- # Maybe the newer implementation will work on older Rubygems?
264
+ # Maybe the newer implementation will work on older RubyGems?
239
265
  # It seems difficult to keep this implementation and still send the header.
240
266
  def fetch_all_remote_specs(remote)
241
267
  old_sources = Bundler.rubygems.sources
@@ -306,7 +332,7 @@ module Bundler
306
332
  end
307
333
 
308
334
  def security_policy_keys
309
- %w(High Medium Low AlmostNo No).map {|level| "#{level}Security" }
335
+ %w[High Medium Low AlmostNo No].map {|level| "#{level}Security" }
310
336
  end
311
337
 
312
338
  def security_policies
@@ -377,9 +403,8 @@ module Bundler
377
403
  raise e
378
404
  end
379
405
 
380
- # TODO: delete this in 2.0, it's a backwards compatibility shim
381
- # see https://github.com/bundler/bundler/issues/5102
382
- kernel_class.send(:public, :gem)
406
+ # backwards compatibility shim, see https://github.com/bundler/bundler/issues/5102
407
+ kernel_class.send(:public, :gem) if Bundler.feature_flag.setup_makes_kernel_gem_public?
383
408
  end
384
409
  end
385
410
 
@@ -434,9 +459,9 @@ module Bundler
434
459
 
435
460
  raise Gem::Exception, "no default executable for #{spec.full_name}" unless exec_name ||= spec.default_executable
436
461
 
437
- unless spec.name == name
438
- Bundler::SharedHelpers.major_deprecation \
439
- "Bundler is using a binstub that was created for a different gem.\n" \
462
+ unless spec.name == gem_name
463
+ Bundler::SharedHelpers.major_deprecation 2,
464
+ "Bundler is using a binstub that was created for a different gem (#{spec.name}).\n" \
440
465
  "You should run `bundle binstub #{gem_name}` " \
441
466
  "to work around a system/bundle conflict."
442
467
  end
@@ -476,7 +501,7 @@ module Bundler
476
501
  redefine_method(gem_class, :refresh) {}
477
502
  end
478
503
 
479
- # Replace or hook into Rubygems to provide a bundlerized view
504
+ # Replace or hook into RubyGems to provide a bundlerized view
480
505
  # of the world.
481
506
  def replace_entrypoints(specs)
482
507
  specs_by_name = specs.reduce({}) do |h, s|
@@ -492,8 +517,8 @@ module Bundler
492
517
  Gem.clear_paths
493
518
  end
494
519
 
495
- # This backports the correct segment generation code from Rubygems 1.4+
496
- # by monkeypatching it into the method in Rubygems 1.3.6 and 1.3.7.
520
+ # This backports the correct segment generation code from RubyGems 1.4+
521
+ # by monkeypatching it into the method in RubyGems 1.3.6 and 1.3.7.
497
522
  def backport_segment_generation
498
523
  redefine_method(Gem::Version, :segments) do
499
524
  @segments ||= @version.scan(/[0-9]+|[a-z]+/i).map do |s|
@@ -512,7 +537,7 @@ module Bundler
512
537
  end
513
538
 
514
539
  # This backports base_dir which replaces installation path
515
- # Rubygems 1.8+
540
+ # RubyGems 1.8+
516
541
  def backport_base_dir
517
542
  redefine_method(Gem::Specification, :base_dir) do
518
543
  return Gem.dir unless loaded_from
@@ -581,7 +606,7 @@ module Bundler
581
606
  end
582
607
  end
583
608
 
584
- # Rubygems 1.4 through 1.6
609
+ # RubyGems 1.4 through 1.6
585
610
  class Legacy < RubygemsIntegration
586
611
  def initialize
587
612
  super
@@ -592,7 +617,7 @@ module Bundler
592
617
  end
593
618
 
594
619
  def stub_rubygems(specs)
595
- # Rubygems versions lower than 1.7 use SourceIndex#from_gems_in
620
+ # RubyGems versions lower than 1.7 use SourceIndex#from_gems_in
596
621
  source_index_class = (class << Gem::SourceIndex; self; end)
597
622
  redefine_method(source_index_class, :from_gems_in) do |*args|
598
623
  Gem::SourceIndex.new.tap do |source_index|
@@ -624,7 +649,7 @@ module Bundler
624
649
  end
625
650
  end
626
651
 
627
- # Rubygems versions 1.3.6 and 1.3.7
652
+ # RubyGems versions 1.3.6 and 1.3.7
628
653
  class Ancient < Legacy
629
654
  def initialize
630
655
  super
@@ -632,7 +657,7 @@ module Bundler
632
657
  end
633
658
  end
634
659
 
635
- # Rubygems 1.7
660
+ # RubyGems 1.7
636
661
  class Transitional < Legacy
637
662
  def stub_rubygems(specs)
638
663
  stub_source_index(specs)
@@ -646,7 +671,7 @@ module Bundler
646
671
  end
647
672
  end
648
673
 
649
- # Rubygems 1.8.5-1.8.19
674
+ # RubyGems 1.8.5-1.8.19
650
675
  class Modern < RubygemsIntegration
651
676
  def stub_rubygems(specs)
652
677
  Gem::Specification.all = specs
@@ -667,9 +692,9 @@ module Bundler
667
692
  end
668
693
  end
669
694
 
670
- # Rubygems 1.8.0 to 1.8.4
695
+ # RubyGems 1.8.0 to 1.8.4
671
696
  class AlmostModern < Modern
672
- # Rubygems [>= 1.8.0, < 1.8.5] has a bug that changes Gem.dir whenever
697
+ # RubyGems [>= 1.8.0, < 1.8.5] has a bug that changes Gem.dir whenever
673
698
  # you call Gem::Installer#install with an :install_dir set. We have to
674
699
  # change it back for our sudo mode to work.
675
700
  def preserve_paths
@@ -680,9 +705,9 @@ module Bundler
680
705
  end
681
706
  end
682
707
 
683
- # Rubygems 1.8.20+
708
+ # RubyGems 1.8.20+
684
709
  class MoreModern < Modern
685
- # Rubygems 1.8.20 and adds the skip_validation parameter, so that's
710
+ # RubyGems 1.8.20 and adds the skip_validation parameter, so that's
686
711
  # when we start passing it through.
687
712
  def build(spec, skip_validation = false)
688
713
  require "rubygems/builder"
@@ -690,7 +715,7 @@ module Bundler
690
715
  end
691
716
  end
692
717
 
693
- # Rubygems 2.0
718
+ # RubyGems 2.0
694
719
  class Future < RubygemsIntegration
695
720
  def stub_rubygems(specs)
696
721
  Gem::Specification.all = specs
@@ -767,6 +792,10 @@ module Bundler
767
792
  def install_with_build_args(args)
768
793
  yield
769
794
  end
795
+
796
+ def path_separator
797
+ Gem.path_separator
798
+ end
770
799
  end
771
800
 
772
801
  # RubyGems 2.1.0
@@ -855,7 +884,7 @@ module Bundler
855
884
  RubygemsIntegration::Transitional.new
856
885
  elsif RubygemsIntegration.provides?(">= 1.4.0")
857
886
  RubygemsIntegration::Legacy.new
858
- else # Rubygems 1.3.6 and 1.3.7
887
+ else # RubyGems 1.3.6 and 1.3.7
859
888
  RubygemsIntegration::Ancient.new
860
889
  end
861
890
  end