bundler 2.0.1 → 2.1.4

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 (249) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +788 -572
  3. data/LICENSE.md +18 -19
  4. data/README.md +9 -8
  5. data/bundler.gemspec +8 -25
  6. data/exe/bundle +19 -3
  7. data/lib/bundler.rb +202 -87
  8. data/lib/bundler/build_metadata.rb +3 -3
  9. data/lib/bundler/capistrano.rb +5 -5
  10. data/lib/bundler/cli.rb +182 -144
  11. data/lib/bundler/cli/add.rb +28 -16
  12. data/lib/bundler/cli/cache.rb +25 -13
  13. data/lib/bundler/cli/common.rb +11 -12
  14. data/lib/bundler/cli/config.rb +161 -86
  15. data/lib/bundler/cli/console.rb +2 -2
  16. data/lib/bundler/cli/doctor.rb +4 -4
  17. data/lib/bundler/cli/exec.rb +4 -16
  18. data/lib/bundler/cli/gem.rb +5 -5
  19. data/lib/bundler/cli/info.rb +17 -5
  20. data/lib/bundler/cli/init.rb +1 -1
  21. data/lib/bundler/cli/install.rb +15 -13
  22. data/lib/bundler/cli/issue.rb +3 -3
  23. data/lib/bundler/cli/open.rb +10 -6
  24. data/lib/bundler/cli/outdated.rb +85 -81
  25. data/lib/bundler/cli/plugin.rb +9 -2
  26. data/lib/bundler/cli/pristine.rb +1 -1
  27. data/lib/bundler/cli/show.rb +1 -1
  28. data/lib/bundler/cli/update.rb +31 -11
  29. data/lib/bundler/compact_index_client.rb +25 -9
  30. data/lib/bundler/compact_index_client/updater.rb +2 -6
  31. data/lib/bundler/current_ruby.rb +8 -7
  32. data/lib/bundler/definition.rb +36 -27
  33. data/lib/bundler/dependency.rb +16 -4
  34. data/lib/bundler/deployment.rb +2 -2
  35. data/lib/bundler/dsl.rb +19 -43
  36. data/lib/bundler/env.rb +8 -13
  37. data/lib/bundler/environment_preserver.rb +0 -1
  38. data/lib/bundler/feature_flag.rb +2 -14
  39. data/lib/bundler/fetcher.rb +16 -13
  40. data/lib/bundler/fetcher/compact_index.rb +26 -12
  41. data/lib/bundler/fetcher/dependency.rb +1 -1
  42. data/lib/bundler/fetcher/downloader.rb +5 -2
  43. data/lib/bundler/fetcher/index.rb +5 -3
  44. data/lib/bundler/friendly_errors.rb +6 -7
  45. data/lib/bundler/gem_helper.rb +39 -25
  46. data/lib/bundler/gem_helpers.rb +2 -4
  47. data/lib/bundler/gem_tasks.rb +1 -1
  48. data/lib/bundler/gem_version_promoter.rb +3 -3
  49. data/lib/bundler/graph.rb +2 -2
  50. data/lib/bundler/injector.rb +10 -8
  51. data/lib/bundler/inline.rb +40 -30
  52. data/lib/bundler/installer.rb +7 -14
  53. data/lib/bundler/installer/gem_installer.rb +5 -1
  54. data/lib/bundler/installer/parallel_installer.rb +4 -8
  55. data/lib/bundler/installer/standalone.rb +1 -2
  56. data/lib/bundler/lazy_specification.rb +2 -3
  57. data/lib/bundler/lockfile_parser.rb +14 -21
  58. data/lib/bundler/match_platform.rb +1 -1
  59. data/lib/bundler/mirror.rb +3 -3
  60. data/lib/bundler/plugin.rb +42 -29
  61. data/lib/bundler/plugin/api.rb +1 -1
  62. data/lib/bundler/plugin/api/source.rb +4 -6
  63. data/lib/bundler/plugin/index.rb +14 -3
  64. data/lib/bundler/plugin/installer.rb +28 -15
  65. data/lib/bundler/psyched_yaml.rb +1 -1
  66. data/lib/bundler/remote_specification.rb +0 -2
  67. data/lib/bundler/resolver.rb +72 -24
  68. data/lib/bundler/resolver/spec_group.rb +3 -2
  69. data/lib/bundler/retry.rb +2 -2
  70. data/lib/bundler/ruby_version.rb +4 -19
  71. data/lib/bundler/rubygems_ext.rb +11 -67
  72. data/lib/bundler/rubygems_gem_installer.rb +1 -1
  73. data/lib/bundler/rubygems_integration.rb +149 -399
  74. data/lib/bundler/runtime.rb +2 -9
  75. data/lib/bundler/settings.rb +22 -52
  76. data/lib/bundler/setup.rb +11 -12
  77. data/lib/bundler/shared_helpers.rb +51 -77
  78. data/lib/bundler/similarity_detector.rb +2 -2
  79. data/lib/bundler/source.rb +5 -5
  80. data/lib/bundler/source/git.rb +24 -17
  81. data/lib/bundler/source/git/git_proxy.rb +38 -41
  82. data/lib/bundler/source/metadata.rb +7 -2
  83. data/lib/bundler/source/path.rb +13 -8
  84. data/lib/bundler/source/rubygems.rb +14 -8
  85. data/lib/bundler/source/rubygems/remote.rb +2 -3
  86. data/lib/bundler/source_list.rb +9 -12
  87. data/lib/bundler/spec_set.rb +1 -6
  88. data/lib/bundler/stub_specification.rb +18 -30
  89. data/lib/bundler/templates/Executable.bundler +23 -14
  90. data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +3 -3
  91. data/lib/bundler/templates/newgem/Gemfile.tt +8 -0
  92. data/lib/bundler/templates/newgem/README.md.tt +4 -3
  93. data/lib/bundler/templates/newgem/newgem.gemspec.tt +6 -27
  94. data/lib/bundler/templates/newgem/test/test_helper.rb.tt +1 -1
  95. data/lib/bundler/templates/newgem/travis.yml.tt +0 -1
  96. data/lib/bundler/ui.rb +3 -3
  97. data/lib/bundler/ui/rg_proxy.rb +1 -1
  98. data/lib/bundler/ui/shell.rb +4 -8
  99. data/lib/bundler/uri_credentials_filter.rb +7 -3
  100. data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
  101. data/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
  102. data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
  103. data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
  104. data/lib/bundler/vendor/fileutils/lib/fileutils.rb +273 -147
  105. data/lib/bundler/vendor/molinillo/lib/molinillo.rb +6 -6
  106. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +2 -2
  107. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
  108. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
  109. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
  110. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
  111. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
  112. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
  113. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -1
  114. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +30 -8
  115. data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
  116. data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +4 -4
  117. data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
  118. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +270 -323
  119. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
  120. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
  121. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  122. data/lib/bundler/vendor/thor/lib/thor.rb +19 -4
  123. data/lib/bundler/vendor/thor/lib/thor/actions.rb +27 -12
  124. data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
  125. data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +1 -1
  126. data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +7 -17
  127. data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +16 -7
  128. data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +19 -8
  129. data/lib/bundler/vendor/thor/lib/thor/base.rb +54 -43
  130. data/lib/bundler/vendor/thor/lib/thor/command.rb +21 -14
  131. data/lib/bundler/vendor/thor/lib/thor/error.rb +78 -0
  132. data/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
  133. data/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -0
  134. data/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
  135. data/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +1 -1
  136. data/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
  137. data/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
  138. data/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
  139. data/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +2 -2
  140. data/lib/bundler/vendor/thor/lib/thor/parser/option.rb +20 -7
  141. data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +20 -5
  142. data/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
  143. data/lib/bundler/vendor/thor/lib/thor/runner.rb +15 -14
  144. data/lib/bundler/vendor/thor/lib/thor/shell.rb +4 -4
  145. data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +62 -8
  146. data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +6 -2
  147. data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -3
  148. data/lib/bundler/vendor/thor/lib/thor/util.rb +18 -2
  149. data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  150. data/lib/bundler/vendor/uri/lib/uri.rb +104 -0
  151. data/lib/bundler/vendor/uri/lib/uri/common.rb +744 -0
  152. data/lib/bundler/vendor/uri/lib/uri/file.rb +94 -0
  153. data/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
  154. data/lib/bundler/vendor/uri/lib/uri/generic.rb +1568 -0
  155. data/lib/bundler/vendor/uri/lib/uri/http.rb +88 -0
  156. data/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
  157. data/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
  158. data/lib/bundler/vendor/uri/lib/uri/ldaps.rb +21 -0
  159. data/lib/bundler/vendor/uri/lib/uri/mailto.rb +294 -0
  160. data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
  161. data/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +125 -0
  162. data/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
  163. data/lib/bundler/vendored_fileutils.rb +1 -6
  164. data/lib/bundler/vendored_molinillo.rb +1 -1
  165. data/lib/bundler/vendored_persistent.rb +7 -5
  166. data/lib/bundler/vendored_thor.rb +2 -2
  167. data/lib/bundler/vendored_uri.rb +4 -0
  168. data/lib/bundler/version.rb +1 -20
  169. data/lib/bundler/version_ranges.rb +51 -5
  170. data/lib/bundler/vlad.rb +3 -3
  171. data/lib/bundler/worker.rb +1 -3
  172. data/lib/bundler/yaml_serializer.rb +2 -3
  173. data/man/bundle-add.1 +10 -2
  174. data/man/bundle-add.1.txt +11 -5
  175. data/man/bundle-add.ronn +7 -1
  176. data/man/bundle-binstubs.1 +2 -2
  177. data/man/bundle-binstubs.1.txt +2 -2
  178. data/man/bundle-binstubs.ronn +1 -1
  179. data/man/bundle-cache.1 +55 -0
  180. data/man/bundle-cache.1.txt +78 -0
  181. data/man/{bundle-package.ronn → bundle-cache.ronn} +15 -15
  182. data/man/bundle-check.1 +1 -1
  183. data/man/bundle-check.1.txt +6 -6
  184. data/man/bundle-clean.1 +1 -1
  185. data/man/bundle-clean.1.txt +1 -1
  186. data/man/bundle-config.1 +36 -36
  187. data/man/bundle-config.1.txt +66 -67
  188. data/man/bundle-config.ronn +42 -40
  189. data/man/bundle-doctor.1 +1 -1
  190. data/man/bundle-doctor.1.txt +1 -1
  191. data/man/bundle-exec.1 +2 -2
  192. data/man/bundle-exec.1.txt +2 -2
  193. data/man/bundle-exec.ronn +1 -1
  194. data/man/bundle-gem.1 +1 -1
  195. data/man/bundle-gem.1.txt +3 -3
  196. data/man/bundle-info.1 +1 -1
  197. data/man/bundle-info.1.txt +1 -1
  198. data/man/bundle-init.1 +2 -2
  199. data/man/bundle-init.1.txt +2 -2
  200. data/man/bundle-init.ronn +1 -1
  201. data/man/bundle-inject.1 +1 -1
  202. data/man/bundle-inject.1.txt +1 -1
  203. data/man/bundle-install.1 +8 -5
  204. data/man/bundle-install.1.txt +56 -51
  205. data/man/bundle-install.ronn +9 -4
  206. data/man/bundle-list.1 +1 -1
  207. data/man/bundle-list.1.txt +1 -1
  208. data/man/bundle-lock.1 +1 -1
  209. data/man/bundle-lock.1.txt +16 -16
  210. data/man/bundle-open.1 +1 -1
  211. data/man/bundle-open.1.txt +1 -1
  212. data/man/bundle-outdated.1 +1 -1
  213. data/man/bundle-outdated.1.txt +1 -1
  214. data/man/bundle-platform.1 +1 -1
  215. data/man/bundle-platform.1.txt +1 -1
  216. data/man/bundle-pristine.1 +1 -1
  217. data/man/bundle-pristine.1.txt +1 -1
  218. data/man/bundle-remove.1 +1 -1
  219. data/man/bundle-remove.1.txt +1 -1
  220. data/man/bundle-show.1 +1 -1
  221. data/man/bundle-show.1.txt +1 -1
  222. data/man/bundle-update.1 +4 -4
  223. data/man/bundle-update.1.txt +64 -65
  224. data/man/bundle-update.ronn +3 -3
  225. data/man/bundle-viz.1 +1 -1
  226. data/man/bundle-viz.1.txt +1 -1
  227. data/man/bundle.1 +3 -3
  228. data/man/bundle.1.txt +8 -8
  229. data/man/bundle.ronn +2 -2
  230. data/man/gemfile.5 +13 -16
  231. data/man/gemfile.5.ronn +10 -14
  232. data/man/gemfile.5.txt +104 -108
  233. data/man/index.txt +1 -1
  234. metadata +33 -108
  235. data/exe/bundle_ruby +0 -60
  236. data/lib/bundler/cli/package.rb +0 -49
  237. data/lib/bundler/compatibility_guard.rb +0 -14
  238. data/lib/bundler/gem_remote_fetcher.rb +0 -43
  239. data/lib/bundler/ssl_certs/.document +0 -1
  240. data/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
  241. data/lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
  242. data/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  243. data/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  244. data/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
  245. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
  246. data/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -12
  247. data/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -129
  248. data/man/bundle-package.1 +0 -55
  249. data/man/bundle-package.1.txt +0 -79
data/LICENSE.md CHANGED
@@ -1,23 +1,22 @@
1
- Portions copyright (c) 2010 Andre Arko
2
- Portions copyright (c) 2009 Engine Yard
1
+ The MIT License
3
2
 
4
- MIT License
3
+ Portions copyright (c) 2010-2019 André Arko
4
+ Portions copyright (c) 2009 Engine Yard
5
5
 
6
- Permission is hereby granted, free of charge, to any person obtaining
7
- a copy of this software and associated documentation files (the
8
- "Software"), to deal in the Software without restriction, including
9
- without limitation the rights to use, copy, modify, merge, publish,
10
- distribute, sublicense, and/or sell copies of the Software, and to
11
- permit persons to whom the Software is furnished to do so, subject to
12
- the following conditions:
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
13
12
 
14
- The above copyright notice and this permission notice shall be
15
- included in all copies or substantial portions of the Software.
13
+ The above copyright notice and this permission notice shall be included in
14
+ all copies or substantial portions of the Software.
16
15
 
17
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
+ THE SOFTWARE.
data/README.md CHANGED
@@ -1,8 +1,7 @@
1
1
  [![Version ](https://img.shields.io/gem/v/bundler.svg?style=flat)](https://rubygems.org/gems/bundler)
2
2
  [![Build Status](https://img.shields.io/travis/bundler/bundler/master.svg?style=flat)](https://travis-ci.org/bundler/bundler)
3
- [![Code Climate](https://img.shields.io/codeclimate/github/bundler/bundler.svg?style=flat)](https://codeclimate.com/github/bundler/bundler)
4
- [![Inline docs ](http://inch-ci.org/github/bundler/bundler.svg?style=flat)](http://inch-ci.org/github/bundler/bundler)
5
- [![Slack ](http://bundler-slackin.herokuapp.com/badge.svg)](http://bundler-slackin.herokuapp.com)
3
+ [![Inline docs ](https://inch-ci.org/github/bundler/bundler.svg?style=flat)](https://inch-ci.org/github/bundler/bundler)
4
+ [![Slack ](https://bundler-slackin.herokuapp.com/badge.svg)](https://bundler-slackin.herokuapp.com)
6
5
 
7
6
  # Bundler: a gem to bundle gems
8
7
 
@@ -29,7 +28,7 @@ bundle install
29
28
  bundle exec rspec
30
29
  ```
31
30
 
32
- See [bundler.io](http://bundler.io) for the full documentation.
31
+ See [bundler.io](https://bundler.io) for the full documentation.
33
32
 
34
33
  ### Troubleshooting
35
34
 
@@ -45,9 +44,11 @@ To get in touch with the Bundler core team and other Bundler users, please see [
45
44
 
46
45
  ### Contributing
47
46
 
48
- If you'd like to contribute to Bundler, that's awesome, and we <3 you. There's a guide to contributing to Bundler (both code and general help) over in [our documentation section](doc/README.md).
47
+ If you'd like to contribute to Bundler, that's awesome, and we <3 you. We've put together [the Bundler contributor guide](https://github.com/bundler/bundler/blob/master/doc/contributing/README.md) with all of the information you need to get started.
49
48
 
50
- While some Bundler contributors are compensated by Ruby Together, the project maintainers make decisions independent of Ruby Together. As a project, we welcome contributions regardless of the author’s affiliation with Ruby Together.
49
+ If you'd like to request a substantial change to Bundler or to the Bundler documentation, refer to the [Bundler RFC process](https://github.com/bundler/rfcs) for more information.
50
+
51
+ While some Bundler contributors are compensated by Ruby Together, the project maintainers make decisions independent of Ruby Together. As a project, we welcome contributions regardless of the author's affiliation with Ruby Together.
51
52
 
52
53
  ### Supporting
53
54
 
@@ -56,8 +57,8 @@ While some Bundler contributors are compensated by Ruby Together, the project ma
56
57
 
57
58
  ### Code of Conduct
58
59
 
59
- Everyone interacting in the Bundler projects codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [Bundler code of conduct](https://github.com/bundler/bundler/blob/master/CODE_OF_CONDUCT.md).
60
+ Everyone interacting in the Bundler project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [Bundler code of conduct](https://github.com/bundler/bundler/blob/master/CODE_OF_CONDUCT.md).
60
61
 
61
62
  ### License
62
63
 
63
- [MIT License](https://github.com/bundler/bundler/blob/master/LICENSE.md)
64
+ Bundler is available under an [MIT License](https://github.com/bundler/bundler/blob/master/LICENSE.md).
data/bundler.gemspec CHANGED
@@ -1,11 +1,10 @@
1
- # coding: utf-8
2
1
  # frozen_string_literal: true
3
2
 
4
3
  begin
5
- require File.expand_path("../lib/bundler/version", __FILE__)
4
+ require_relative "lib/bundler/version"
6
5
  rescue LoadError
7
6
  # for Ruby core repository
8
- require File.expand_path("../bundler/version", __FILE__)
7
+ require_relative "version"
9
8
  end
10
9
 
11
10
  Gem::Specification.new do |s|
@@ -19,40 +18,24 @@ Gem::Specification.new do |s|
19
18
  "Yehuda Katz"
20
19
  ]
21
20
  s.email = ["team@bundler.io"]
22
- s.homepage = "http://bundler.io"
21
+ s.homepage = "https://bundler.io"
23
22
  s.summary = "The best way to manage your application's dependencies"
24
23
  s.description = "Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably"
25
24
 
26
25
  if s.respond_to?(:metadata=)
27
26
  s.metadata = {
28
- "bug_tracker_uri" => "http://github.com/bundler/bundler/issues",
27
+ "bug_tracker_uri" => "https://github.com/bundler/bundler/issues",
29
28
  "changelog_uri" => "https://github.com/bundler/bundler/blob/master/CHANGELOG.md",
30
29
  "homepage_uri" => "https://bundler.io/",
31
- "source_code_uri" => "http://github.com/bundler/bundler/",
30
+ "source_code_uri" => "https://github.com/bundler/bundler/",
32
31
  }
33
32
  end
34
33
 
35
- if s.version >= Gem::Version.new("2.a".dup)
36
- s.required_ruby_version = ">= 2.3.0"
37
- s.required_rubygems_version = ">= 2.5.0"
38
- else
39
- s.required_ruby_version = ">= 1.8.7"
40
- s.required_rubygems_version = ">= 1.3.6"
41
- end
42
-
43
- s.add_development_dependency "automatiek", "~> 0.1.0"
44
- s.add_development_dependency "mustache", "0.99.6"
45
- s.add_development_dependency "rake", "~> 10.0"
46
- s.add_development_dependency "rdiscount", "~> 2.2"
47
- s.add_development_dependency "ronn", "~> 0.7.3"
48
- s.add_development_dependency "rspec", "~> 3.6"
34
+ s.required_ruby_version = ">= 2.3.0"
35
+ s.required_rubygems_version = ">= 2.5.2"
49
36
 
50
- base_dir = File.dirname(__FILE__).gsub(%r{([^A-Za-z0-9_\-.,:\/@\n])}, "\\\\\\1")
51
- s.files = IO.popen("git -C #{base_dir} ls-files -z", &:read).split("\x0").select {|f| f.match(%r{^(lib|exe)/}) }
37
+ s.files = Dir.glob("{lib,man,exe}/**/*", File::FNM_DOTMATCH).reject {|f| File.directory?(f) }
52
38
 
53
- # we don't check in man pages, but we need to ship them because
54
- # we use them to generate the long-form help for each command.
55
- s.files += Dir.glob("man/**/*")
56
39
  # Include the CHANGELOG.md, LICENSE.md, README.md manually
57
40
  s.files += %w[CHANGELOG.md LICENSE.md README.md]
58
41
  # include the gemspec itself because warbler breaks w/o it
data/exe/bundle CHANGED
@@ -7,7 +7,14 @@ Signal.trap("INT") do
7
7
  exit 1
8
8
  end
9
9
 
10
- require "bundler"
10
+ base_path = File.expand_path("../lib", __dir__)
11
+
12
+ if File.exist?(base_path)
13
+ require_relative "../lib/bundler"
14
+ else
15
+ require "bundler"
16
+ end
17
+
11
18
  # Check if an older version of bundler is installed
12
19
  $LOAD_PATH.each do |path|
13
20
  next unless path =~ %r{/bundler-0\.(\d+)} && $1.to_i < 9
@@ -18,9 +25,18 @@ $LOAD_PATH.each do |path|
18
25
  abort(err)
19
26
  end
20
27
 
21
- require "bundler/friendly_errors"
28
+ if File.exist?(base_path)
29
+ require_relative "../lib/bundler/friendly_errors"
30
+ else
31
+ require "bundler/friendly_errors"
32
+ end
33
+
22
34
  Bundler.with_friendly_errors do
23
- require "bundler/cli"
35
+ if File.exist?(base_path)
36
+ require_relative "../lib/bundler/cli"
37
+ else
38
+ require "bundler/cli"
39
+ end
24
40
 
25
41
  # Allow any command to use --help flag to show help for that command
26
42
  help_flags = %w[--help -h]
data/lib/bundler.rb CHANGED
@@ -1,65 +1,80 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "bundler/compatibility_guard"
4
-
5
- require "bundler/vendored_fileutils"
3
+ require_relative "bundler/vendored_fileutils"
6
4
  require "pathname"
7
5
  require "rbconfig"
8
- require "thread"
9
-
10
- require "bundler/errors"
11
- require "bundler/environment_preserver"
12
- require "bundler/plugin"
13
- require "bundler/rubygems_ext"
14
- require "bundler/rubygems_integration"
15
- require "bundler/version"
16
- require "bundler/constants"
17
- require "bundler/current_ruby"
18
- require "bundler/build_metadata"
19
6
 
7
+ require_relative "bundler/errors"
8
+ require_relative "bundler/environment_preserver"
9
+ require_relative "bundler/plugin"
10
+ require_relative "bundler/rubygems_ext"
11
+ require_relative "bundler/rubygems_integration"
12
+ require_relative "bundler/version"
13
+ require_relative "bundler/constants"
14
+ require_relative "bundler/current_ruby"
15
+ require_relative "bundler/build_metadata"
16
+
17
+ # Bundler provides a consistent environment for Ruby projects by
18
+ # tracking and installing the exact gems and versions that are needed.
19
+ #
20
+ # Since Ruby 2.6, Bundler is a part of Ruby's standard library.
21
+ #
22
+ # Bunder is used by creating _gemfiles_ listing all the project dependencies
23
+ # and (optionally) their versions and then using
24
+ #
25
+ # require 'bundler/setup'
26
+ #
27
+ # or Bundler.setup to setup environment where only specified gems and their
28
+ # specified versions could be used.
29
+ #
30
+ # See {Bundler website}[https://bundler.io/docs.html] for extensive documentation
31
+ # on gemfiles creation and Bundler usage.
32
+ #
33
+ # As a standard library inside project, Bundler could be used for introspection
34
+ # of loaded and required modules.
35
+ #
20
36
  module Bundler
21
37
  environment_preserver = EnvironmentPreserver.new(ENV, EnvironmentPreserver::BUNDLER_KEYS)
22
38
  ORIGINAL_ENV = environment_preserver.restore
23
39
  ENV.replace(environment_preserver.backup)
24
40
  SUDO_MUTEX = Mutex.new
25
41
 
26
- autoload :Definition, "bundler/definition"
27
- autoload :Dependency, "bundler/dependency"
28
- autoload :DepProxy, "bundler/dep_proxy"
29
- autoload :Deprecate, "bundler/deprecate"
30
- autoload :Dsl, "bundler/dsl"
31
- autoload :EndpointSpecification, "bundler/endpoint_specification"
32
- autoload :Env, "bundler/env"
33
- autoload :Fetcher, "bundler/fetcher"
34
- autoload :FeatureFlag, "bundler/feature_flag"
35
- autoload :GemHelper, "bundler/gem_helper"
36
- autoload :GemHelpers, "bundler/gem_helpers"
37
- autoload :GemRemoteFetcher, "bundler/gem_remote_fetcher"
38
- autoload :GemVersionPromoter, "bundler/gem_version_promoter"
39
- autoload :Graph, "bundler/graph"
40
- autoload :Index, "bundler/index"
41
- autoload :Injector, "bundler/injector"
42
- autoload :Installer, "bundler/installer"
43
- autoload :LazySpecification, "bundler/lazy_specification"
44
- autoload :LockfileParser, "bundler/lockfile_parser"
45
- autoload :MatchPlatform, "bundler/match_platform"
46
- autoload :ProcessLock, "bundler/process_lock"
47
- autoload :RemoteSpecification, "bundler/remote_specification"
48
- autoload :Resolver, "bundler/resolver"
49
- autoload :Retry, "bundler/retry"
50
- autoload :RubyDsl, "bundler/ruby_dsl"
51
- autoload :RubyGemsGemInstaller, "bundler/rubygems_gem_installer"
52
- autoload :RubyVersion, "bundler/ruby_version"
53
- autoload :Runtime, "bundler/runtime"
54
- autoload :Settings, "bundler/settings"
55
- autoload :SharedHelpers, "bundler/shared_helpers"
56
- autoload :Source, "bundler/source"
57
- autoload :SourceList, "bundler/source_list"
58
- autoload :SpecSet, "bundler/spec_set"
59
- autoload :StubSpecification, "bundler/stub_specification"
60
- autoload :UI, "bundler/ui"
61
- autoload :URICredentialsFilter, "bundler/uri_credentials_filter"
62
- autoload :VersionRanges, "bundler/version_ranges"
42
+ autoload :Definition, File.expand_path("bundler/definition", __dir__)
43
+ autoload :Dependency, File.expand_path("bundler/dependency", __dir__)
44
+ autoload :DepProxy, File.expand_path("bundler/dep_proxy", __dir__)
45
+ autoload :Deprecate, File.expand_path("bundler/deprecate", __dir__)
46
+ autoload :Dsl, File.expand_path("bundler/dsl", __dir__)
47
+ autoload :EndpointSpecification, File.expand_path("bundler/endpoint_specification", __dir__)
48
+ autoload :Env, File.expand_path("bundler/env", __dir__)
49
+ autoload :Fetcher, File.expand_path("bundler/fetcher", __dir__)
50
+ autoload :FeatureFlag, File.expand_path("bundler/feature_flag", __dir__)
51
+ autoload :GemHelper, File.expand_path("bundler/gem_helper", __dir__)
52
+ autoload :GemHelpers, File.expand_path("bundler/gem_helpers", __dir__)
53
+ autoload :GemVersionPromoter, File.expand_path("bundler/gem_version_promoter", __dir__)
54
+ autoload :Graph, File.expand_path("bundler/graph", __dir__)
55
+ autoload :Index, File.expand_path("bundler/index", __dir__)
56
+ autoload :Injector, File.expand_path("bundler/injector", __dir__)
57
+ autoload :Installer, File.expand_path("bundler/installer", __dir__)
58
+ autoload :LazySpecification, File.expand_path("bundler/lazy_specification", __dir__)
59
+ autoload :LockfileParser, File.expand_path("bundler/lockfile_parser", __dir__)
60
+ autoload :MatchPlatform, File.expand_path("bundler/match_platform", __dir__)
61
+ autoload :ProcessLock, File.expand_path("bundler/process_lock", __dir__)
62
+ autoload :RemoteSpecification, File.expand_path("bundler/remote_specification", __dir__)
63
+ autoload :Resolver, File.expand_path("bundler/resolver", __dir__)
64
+ autoload :Retry, File.expand_path("bundler/retry", __dir__)
65
+ autoload :RubyDsl, File.expand_path("bundler/ruby_dsl", __dir__)
66
+ autoload :RubyGemsGemInstaller, File.expand_path("bundler/rubygems_gem_installer", __dir__)
67
+ autoload :RubyVersion, File.expand_path("bundler/ruby_version", __dir__)
68
+ autoload :Runtime, File.expand_path("bundler/runtime", __dir__)
69
+ autoload :Settings, File.expand_path("bundler/settings", __dir__)
70
+ autoload :SharedHelpers, File.expand_path("bundler/shared_helpers", __dir__)
71
+ autoload :Source, File.expand_path("bundler/source", __dir__)
72
+ autoload :SourceList, File.expand_path("bundler/source_list", __dir__)
73
+ autoload :SpecSet, File.expand_path("bundler/spec_set", __dir__)
74
+ autoload :StubSpecification, File.expand_path("bundler/stub_specification", __dir__)
75
+ autoload :UI, File.expand_path("bundler/ui", __dir__)
76
+ autoload :URICredentialsFilter, File.expand_path("bundler/uri_credentials_filter", __dir__)
77
+ autoload :VersionRanges, File.expand_path("bundler/version_ranges", __dir__)
63
78
 
64
79
  class << self
65
80
  def configure
@@ -67,11 +82,11 @@ module Bundler
67
82
  end
68
83
 
69
84
  def ui
70
- (defined?(@ui) && @ui) || (self.ui = UI::Silent.new)
85
+ (defined?(@ui) && @ui) || (self.ui = UI::Shell.new)
71
86
  end
72
87
 
73
88
  def ui=(ui)
74
- Bundler.rubygems.ui = ui ? UI::RGProxy.new(ui) : nil
89
+ Bundler.rubygems.ui = UI::RGProxy.new(ui)
75
90
  @ui = ui
76
91
  end
77
92
 
@@ -94,6 +109,33 @@ module Bundler
94
109
  end
95
110
  end
96
111
 
112
+ # Turns on the Bundler runtime. After +Bundler.setup+ call, all +load+ or
113
+ # +require+ of the gems would be allowed only if they are part of
114
+ # the Gemfile or Ruby's standard library. If the versions specified
115
+ # in Gemfile, only those versions would be loaded.
116
+ #
117
+ # Assuming Gemfile
118
+ #
119
+ # gem 'first_gem', '= 1.0'
120
+ # group :test do
121
+ # gem 'second_gem', '= 1.0'
122
+ # end
123
+ #
124
+ # The code using Bundler.setup works as follows:
125
+ #
126
+ # require 'third_gem' # allowed, required from global gems
127
+ # require 'first_gem' # allowed, loads the last installed version
128
+ # Bundler.setup
129
+ # require 'fourth_gem' # fails with LoadError
130
+ # require 'second_gem' # loads exactly version 1.0
131
+ #
132
+ # +Bundler.setup+ can be called only once, all subsequent calls are no-op.
133
+ #
134
+ # If _groups_ list is provided, only gems from specified groups would
135
+ # be allowed (gems specified outside groups belong to special +:default+ group).
136
+ #
137
+ # To require all gems from Gemfile (or only some groups), see Bundler.require.
138
+ #
97
139
  def setup(*groups)
98
140
  # Return if all groups are already loaded
99
141
  return @setup if defined?(@setup) && @setup
@@ -110,6 +152,24 @@ module Bundler
110
152
  end
111
153
  end
112
154
 
155
+ # Setups Bundler environment (see Bundler.setup) if it is not already set,
156
+ # and loads all gems from groups specified. Unlike ::setup, can be called
157
+ # multiple times with different groups (if they were allowed by setup).
158
+ #
159
+ # Assuming Gemfile
160
+ #
161
+ # gem 'first_gem', '= 1.0'
162
+ # group :test do
163
+ # gem 'second_gem', '= 1.0'
164
+ # end
165
+ #
166
+ # The code will work as follows:
167
+ #
168
+ # Bundler.setup # allow all groups
169
+ # Bundler.require(:default) # requires only first_gem
170
+ # # ...later
171
+ # Bundler.require(:test) # requires second_gem
172
+ #
113
173
  def require(*groups)
114
174
  setup(*groups).require(*groups)
115
175
  end
@@ -119,7 +179,7 @@ module Bundler
119
179
  end
120
180
 
121
181
  def environment
122
- SharedHelpers.major_deprecation 3, "Bundler.environment has been removed in favor of Bundler.load"
182
+ SharedHelpers.major_deprecation 2, "Bundler.environment has been removed in favor of Bundler.load", :print_caller_location => true
123
183
  load
124
184
  end
125
185
 
@@ -153,7 +213,7 @@ module Bundler
153
213
  end
154
214
 
155
215
  def ruby_scope
156
- "#{Bundler.rubygems.ruby_engine}/#{Bundler.rubygems.config_map[:ruby_version]}"
216
+ "#{Bundler.rubygems.ruby_engine}/#{RbConfig::CONFIG["ruby_version"]}"
157
217
  end
158
218
 
159
219
  def user_home
@@ -170,8 +230,7 @@ module Bundler
170
230
  end
171
231
 
172
232
  if warning
173
- Kernel.send(:require, "etc")
174
- user_home = tmp_home_path(Etc.getlogin, warning)
233
+ user_home = tmp_home_path(warning)
175
234
  Bundler.ui.warn "#{warning}\nBundler will use `#{user_home}' as your home directory temporarily.\n"
176
235
  user_home
177
236
  else
@@ -180,37 +239,22 @@ module Bundler
180
239
  end
181
240
  end
182
241
 
183
- def tmp_home_path(login, warning)
184
- login ||= "unknown"
185
- Kernel.send(:require, "tmpdir")
186
- path = Pathname.new(Dir.tmpdir).join("bundler", "home")
187
- SharedHelpers.filesystem_access(path) do |tmp_home_path|
188
- unless tmp_home_path.exist?
189
- tmp_home_path.mkpath
190
- tmp_home_path.chmod(0o777)
191
- end
192
- tmp_home_path.join(login).tap(&:mkpath)
193
- end
194
- rescue RuntimeError => e
195
- raise e.exception("#{warning}\nBundler also failed to create a temporary home directory at `#{path}':\n#{e}")
196
- end
197
-
198
242
  def user_bundle_path(dir = "home")
199
243
  env_var, fallback = case dir
200
244
  when "home"
201
- ["BUNDLE_USER_HOME", Pathname.new(user_home).join(".bundle")]
245
+ ["BUNDLE_USER_HOME", proc { Pathname.new(user_home).join(".bundle") }]
202
246
  when "cache"
203
- ["BUNDLE_USER_CACHE", user_bundle_path.join("cache")]
247
+ ["BUNDLE_USER_CACHE", proc { user_bundle_path.join("cache") }]
204
248
  when "config"
205
- ["BUNDLE_USER_CONFIG", user_bundle_path.join("config")]
249
+ ["BUNDLE_USER_CONFIG", proc { user_bundle_path.join("config") }]
206
250
  when "plugin"
207
- ["BUNDLE_USER_PLUGIN", user_bundle_path.join("plugin")]
251
+ ["BUNDLE_USER_PLUGIN", proc { user_bundle_path.join("plugin") }]
208
252
  else
209
253
  raise BundlerError, "Unknown user path requested: #{dir}"
210
254
  end
211
255
  # `fallback` will already be a Pathname, but Pathname.new() is
212
256
  # idempotent so it's OK
213
- Pathname.new(ENV.fetch(env_var, fallback))
257
+ Pathname.new(ENV.fetch(env_var, &fallback))
214
258
  end
215
259
 
216
260
  def user_cache
@@ -263,7 +307,7 @@ module Bundler
263
307
  message = <<EOF
264
308
  It is a security vulnerability to allow your home directory to be world-writable, and bundler can not continue.
265
309
  You should probably consider fixing this issue by running `chmod o-w ~` on *nix.
266
- Please refer to http://ruby-doc.org/stdlib-2.1.2/libdoc/fileutils/rdoc/FileUtils.html#method-c-remove_entry_secure for details.
310
+ Please refer to https://ruby-doc.org/stdlib-2.1.2/libdoc/fileutils/rdoc/FileUtils.html#method-c-remove_entry_secure for details.
267
311
  EOF
268
312
  File.world_writable?(path) ? Bundler.ui.warn(message) : raise
269
313
  raise PathError, "Please fix the world-writable issue with your #{path} directory"
@@ -280,10 +324,20 @@ EOF
280
324
  ORIGINAL_ENV.clone
281
325
  end
282
326
 
283
- # @deprecated Use `original_env` instead
284
- # @return [Hash] Environment with all bundler-related variables removed
327
+ # @deprecated Use `unbundled_env` instead
285
328
  def clean_env
286
- Bundler::SharedHelpers.major_deprecation(3, "`Bundler.clean_env` has weird edge cases, use `.original_env` instead")
329
+ Bundler::SharedHelpers.major_deprecation(
330
+ 2,
331
+ "`Bundler.clean_env` has been deprecated in favor of `Bundler.unbundled_env`. " \
332
+ "If you instead want the environment before bundler was originally loaded, use `Bundler.original_env`",
333
+ :print_caller_location => true
334
+ )
335
+
336
+ unbundled_env
337
+ end
338
+
339
+ # @return [Hash] Environment with all bundler-related variables removed
340
+ def unbundled_env
287
341
  env = original_env
288
342
 
289
343
  if env.key?("BUNDLER_ORIG_MANPATH")
@@ -305,20 +359,70 @@ EOF
305
359
  env
306
360
  end
307
361
 
362
+ # Run block with environment present before Bundler was activated
308
363
  def with_original_env
309
364
  with_env(original_env) { yield }
310
365
  end
311
366
 
367
+ # @deprecated Use `with_unbundled_env` instead
312
368
  def with_clean_env
313
- with_env(clean_env) { yield }
369
+ Bundler::SharedHelpers.major_deprecation(
370
+ 2,
371
+ "`Bundler.with_clean_env` has been deprecated in favor of `Bundler.with_unbundled_env`. " \
372
+ "If you instead want the environment before bundler was originally loaded, use `Bundler.with_original_env`",
373
+ :print_caller_location => true
374
+ )
375
+
376
+ with_env(unbundled_env) { yield }
377
+ end
378
+
379
+ # Run block with all bundler-related variables removed
380
+ def with_unbundled_env
381
+ with_env(unbundled_env) { yield }
314
382
  end
315
383
 
384
+ # Run subcommand with the environment present before Bundler was activated
385
+ def original_system(*args)
386
+ with_original_env { Kernel.system(*args) }
387
+ end
388
+
389
+ # @deprecated Use `unbundled_system` instead
316
390
  def clean_system(*args)
317
- with_clean_env { Kernel.system(*args) }
391
+ Bundler::SharedHelpers.major_deprecation(
392
+ 2,
393
+ "`Bundler.clean_system` has been deprecated in favor of `Bundler.unbundled_system`. " \
394
+ "If you instead want to run the command in the environment before bundler was originally loaded, use `Bundler.original_system`",
395
+ :print_caller_location => true
396
+ )
397
+
398
+ with_env(unbundled_env) { Kernel.system(*args) }
399
+ end
400
+
401
+ # Run subcommand in an environment with all bundler related variables removed
402
+ def unbundled_system(*args)
403
+ with_unbundled_env { Kernel.system(*args) }
318
404
  end
319
405
 
406
+ # Run a `Kernel.exec` to a subcommand with the environment present before Bundler was activated
407
+ def original_exec(*args)
408
+ with_original_env { Kernel.exec(*args) }
409
+ end
410
+
411
+ # @deprecated Use `unbundled_exec` instead
320
412
  def clean_exec(*args)
321
- with_clean_env { Kernel.exec(*args) }
413
+ Bundler::SharedHelpers.major_deprecation(
414
+ 2,
415
+ "`Bundler.clean_exec` has been deprecated in favor of `Bundler.unbundled_exec`. " \
416
+ "If you instead want to exec to a command in the environment before bundler was originally loaded, use `Bundler.original_exec`",
417
+ :print_caller_location => true
418
+ )
419
+
420
+ with_env(unbundled_env) { Kernel.exec(*args) }
421
+ end
422
+
423
+ # Run a `Kernel.exec` to a subcommand in an environment with all bundler related variables removed
424
+ def unbundled_exec(*args)
425
+ with_env(unbundled_env) { Kernel.exec(*args) }
322
426
  end
323
427
 
324
428
  def local_platform
@@ -343,7 +447,7 @@ EOF
343
447
  # system binaries. If you put '-n foo' in your .gemrc, RubyGems will
344
448
  # install binstubs there instead. Unfortunately, RubyGems doesn't expose
345
449
  # that directory at all, so rather than parse .gemrc ourselves, we allow
346
- # the directory to be set as well, via `bundle config bindir foo`.
450
+ # the directory to be set as well, via `bundle config set bindir foo`.
347
451
  Bundler.settings[:system_bindir] || Bundler.rubygems.gem_bindir
348
452
  end
349
453
 
@@ -509,7 +613,7 @@ EOF
509
613
  private
510
614
 
511
615
  def eval_yaml_gemspec(path, contents)
512
- Kernel.send(:require, "bundler/psyched_yaml")
616
+ require_relative "bundler/psyched_yaml"
513
617
 
514
618
  # If the YAML is invalid, Syck raises an ArgumentError, and Psych
515
619
  # raises a Psych::SyntaxError. See psyched_yaml.rb for more info.
@@ -523,7 +627,7 @@ EOF
523
627
  rescue ScriptError, StandardError => e
524
628
  msg = "There was an error while loading `#{path.basename}`: #{e.message}"
525
629
 
526
- if e.is_a?(LoadError) && RUBY_VERSION >= "1.9"
630
+ if e.is_a?(LoadError)
527
631
  msg += "\nDoes it try to require a relative path? That's been removed in Ruby 1.9"
528
632
  end
529
633
 
@@ -555,6 +659,17 @@ EOF
555
659
  Bundler.rubygems.clear_paths
556
660
  end
557
661
 
662
+ def tmp_home_path(warning)
663
+ Kernel.send(:require, "tmpdir")
664
+ SharedHelpers.filesystem_access(Dir.tmpdir) do
665
+ path = Bundler.tmp
666
+ at_exit { Bundler.rm_rf(path) }
667
+ path
668
+ end
669
+ rescue RuntimeError => e
670
+ raise e.exception("#{warning}\nBundler also failed to create a temporary home directory':\n#{e}")
671
+ end
672
+
558
673
  # @param env [Hash]
559
674
  def with_env(env)
560
675
  backup = ENV.to_hash