bundler 1.17.2 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of bundler might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +799 -571
- data/LICENSE.md +18 -19
- data/README.md +9 -8
- data/bundler.gemspec +8 -25
- data/exe/bundle +19 -3
- data/lib/bundler.rb +202 -87
- data/lib/bundler/build_metadata.rb +3 -3
- data/lib/bundler/capistrano.rb +4 -4
- data/lib/bundler/cli.rb +178 -140
- data/lib/bundler/cli/add.rb +28 -16
- data/lib/bundler/cli/cache.rb +25 -13
- data/lib/bundler/cli/common.rb +11 -12
- data/lib/bundler/cli/config.rb +161 -86
- data/lib/bundler/cli/console.rb +1 -1
- data/lib/bundler/cli/doctor.rb +4 -4
- data/lib/bundler/cli/exec.rb +15 -18
- data/lib/bundler/cli/gem.rb +5 -5
- data/lib/bundler/cli/info.rb +17 -5
- data/lib/bundler/cli/init.rb +1 -1
- data/lib/bundler/cli/install.rb +11 -10
- data/lib/bundler/cli/issue.rb +3 -3
- data/lib/bundler/cli/open.rb +10 -6
- data/lib/bundler/cli/outdated.rb +85 -81
- data/lib/bundler/cli/plugin.rb +9 -2
- data/lib/bundler/cli/pristine.rb +1 -1
- data/lib/bundler/cli/show.rb +1 -1
- data/lib/bundler/cli/update.rb +32 -12
- data/lib/bundler/compact_index_client.rb +25 -9
- data/lib/bundler/compact_index_client/updater.rb +2 -6
- data/lib/bundler/current_ruby.rb +9 -7
- data/lib/bundler/definition.rb +35 -26
- data/lib/bundler/dependency.rb +16 -4
- data/lib/bundler/deployment.rb +1 -1
- data/lib/bundler/dsl.rb +16 -40
- data/lib/bundler/env.rb +8 -13
- data/lib/bundler/environment_preserver.rb +0 -1
- data/lib/bundler/feature_flag.rb +23 -34
- data/lib/bundler/fetcher.rb +16 -13
- data/lib/bundler/fetcher/compact_index.rb +26 -12
- data/lib/bundler/fetcher/dependency.rb +1 -1
- data/lib/bundler/fetcher/downloader.rb +5 -2
- data/lib/bundler/fetcher/index.rb +5 -3
- data/lib/bundler/friendly_errors.rb +6 -7
- data/lib/bundler/gem_helper.rb +40 -25
- data/lib/bundler/gem_helpers.rb +2 -4
- data/lib/bundler/gem_tasks.rb +1 -1
- data/lib/bundler/gem_version_promoter.rb +3 -3
- data/lib/bundler/graph.rb +2 -2
- data/lib/bundler/injector.rb +10 -8
- data/lib/bundler/inline.rb +40 -30
- data/lib/bundler/installer.rb +7 -14
- data/lib/bundler/installer/gem_installer.rb +5 -1
- data/lib/bundler/installer/parallel_installer.rb +4 -8
- data/lib/bundler/installer/standalone.rb +1 -2
- data/lib/bundler/lazy_specification.rb +2 -3
- data/lib/bundler/lockfile_parser.rb +14 -21
- data/lib/bundler/match_platform.rb +1 -1
- data/lib/bundler/mirror.rb +3 -3
- data/lib/bundler/plugin.rb +42 -29
- data/lib/bundler/plugin/api.rb +1 -1
- data/lib/bundler/plugin/api/source.rb +4 -6
- data/lib/bundler/plugin/index.rb +14 -3
- data/lib/bundler/plugin/installer.rb +28 -15
- data/lib/bundler/psyched_yaml.rb +1 -1
- data/lib/bundler/remote_specification.rb +0 -2
- data/lib/bundler/resolver.rb +72 -24
- data/lib/bundler/resolver/spec_group.rb +3 -2
- data/lib/bundler/retry.rb +2 -2
- data/lib/bundler/ruby_version.rb +4 -19
- data/lib/bundler/rubygems_ext.rb +11 -67
- data/lib/bundler/rubygems_gem_installer.rb +1 -1
- data/lib/bundler/rubygems_integration.rb +142 -402
- data/lib/bundler/runtime.rb +2 -9
- data/lib/bundler/settings.rb +22 -51
- data/lib/bundler/setup.rb +7 -13
- data/lib/bundler/shared_helpers.rb +51 -77
- data/lib/bundler/similarity_detector.rb +2 -2
- data/lib/bundler/source.rb +5 -5
- data/lib/bundler/source/git.rb +24 -17
- data/lib/bundler/source/git/git_proxy.rb +38 -41
- data/lib/bundler/source/metadata.rb +9 -5
- data/lib/bundler/source/path.rb +13 -8
- data/lib/bundler/source/rubygems.rb +14 -8
- data/lib/bundler/source/rubygems/remote.rb +2 -3
- data/lib/bundler/source_list.rb +9 -12
- data/lib/bundler/spec_set.rb +23 -12
- data/lib/bundler/stub_specification.rb +18 -30
- data/lib/bundler/templates/Executable.bundler +23 -14
- data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +3 -3
- data/lib/bundler/templates/newgem/Gemfile.tt +8 -2
- data/lib/bundler/templates/newgem/README.md.tt +4 -3
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +6 -27
- data/lib/bundler/templates/newgem/test/test_helper.rb.tt +1 -1
- data/lib/bundler/templates/newgem/travis.yml.tt +0 -1
- data/lib/bundler/ui.rb +3 -3
- data/lib/bundler/ui/rg_proxy.rb +1 -1
- data/lib/bundler/ui/shell.rb +4 -8
- data/lib/bundler/uri_credentials_filter.rb +7 -3
- data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
- data/lib/bundler/vendor/fileutils/lib/fileutils.rb +273 -147
- data/lib/bundler/vendor/molinillo/lib/molinillo.rb +6 -6
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +2 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +30 -8
- data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +4 -4
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +273 -304
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
- data/lib/bundler/vendor/thor/lib/thor.rb +19 -4
- data/lib/bundler/vendor/thor/lib/thor/actions.rb +27 -12
- data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +7 -17
- data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +16 -7
- data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +19 -8
- data/lib/bundler/vendor/thor/lib/thor/base.rb +54 -43
- data/lib/bundler/vendor/thor/lib/thor/command.rb +21 -14
- data/lib/bundler/vendor/thor/lib/thor/error.rb +78 -0
- data/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
- data/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -0
- data/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
- data/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
- data/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
- data/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
- data/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +2 -2
- data/lib/bundler/vendor/thor/lib/thor/parser/option.rb +20 -7
- data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +20 -5
- data/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
- data/lib/bundler/vendor/thor/lib/thor/runner.rb +15 -14
- data/lib/bundler/vendor/thor/lib/thor/shell.rb +4 -4
- data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +62 -8
- data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +6 -2
- data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -3
- data/lib/bundler/vendor/thor/lib/thor/util.rb +18 -2
- data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/lib/bundler/vendor/uri/lib/uri.rb +104 -0
- data/lib/bundler/vendor/uri/lib/uri/common.rb +744 -0
- data/lib/bundler/vendor/uri/lib/uri/file.rb +94 -0
- data/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
- data/lib/bundler/vendor/uri/lib/uri/generic.rb +1568 -0
- data/lib/bundler/vendor/uri/lib/uri/http.rb +88 -0
- data/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
- data/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
- data/lib/bundler/vendor/uri/lib/uri/ldaps.rb +21 -0
- data/lib/bundler/vendor/uri/lib/uri/mailto.rb +294 -0
- data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
- data/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +125 -0
- data/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
- data/lib/bundler/vendored_fileutils.rb +1 -6
- data/lib/bundler/vendored_molinillo.rb +1 -1
- data/lib/bundler/vendored_persistent.rb +7 -5
- data/lib/bundler/vendored_thor.rb +2 -2
- data/lib/bundler/vendored_uri.rb +4 -0
- data/lib/bundler/version.rb +1 -20
- data/lib/bundler/version_ranges.rb +51 -5
- data/lib/bundler/vlad.rb +2 -2
- data/lib/bundler/worker.rb +1 -3
- data/lib/bundler/yaml_serializer.rb +2 -3
- data/man/bundle-add.1 +10 -2
- data/man/bundle-add.1.txt +11 -5
- data/man/bundle-add.ronn +7 -1
- data/man/bundle-binstubs.1 +2 -2
- data/man/bundle-binstubs.1.txt +2 -2
- data/man/bundle-binstubs.ronn +1 -1
- data/man/bundle-cache.1 +55 -0
- data/man/bundle-cache.1.txt +78 -0
- data/man/{bundle-package.ronn → bundle-cache.ronn} +15 -15
- data/man/bundle-check.1 +1 -1
- data/man/bundle-check.1.txt +6 -6
- data/man/bundle-clean.1 +1 -1
- data/man/bundle-clean.1.txt +1 -1
- data/man/bundle-config.1 +36 -36
- data/man/bundle-config.1.txt +66 -67
- data/man/bundle-config.ronn +42 -40
- data/man/bundle-doctor.1 +1 -1
- data/man/bundle-doctor.1.txt +1 -1
- data/man/bundle-exec.1 +2 -2
- data/man/bundle-exec.1.txt +2 -2
- data/man/bundle-exec.ronn +1 -1
- data/man/bundle-gem.1 +1 -1
- data/man/bundle-gem.1.txt +3 -3
- data/man/bundle-info.1 +1 -1
- data/man/bundle-info.1.txt +1 -1
- data/man/bundle-init.1 +2 -2
- data/man/bundle-init.1.txt +2 -2
- data/man/bundle-init.ronn +1 -1
- data/man/bundle-inject.1 +1 -1
- data/man/bundle-inject.1.txt +1 -1
- data/man/bundle-install.1 +8 -5
- data/man/bundle-install.1.txt +56 -51
- data/man/bundle-install.ronn +9 -4
- data/man/bundle-list.1 +1 -1
- data/man/bundle-list.1.txt +1 -1
- data/man/bundle-lock.1 +1 -1
- data/man/bundle-lock.1.txt +16 -16
- data/man/bundle-open.1 +1 -1
- data/man/bundle-open.1.txt +1 -1
- data/man/bundle-outdated.1 +1 -1
- data/man/bundle-outdated.1.txt +1 -1
- data/man/bundle-platform.1 +1 -1
- data/man/bundle-platform.1.txt +1 -1
- data/man/bundle-pristine.1 +1 -1
- data/man/bundle-pristine.1.txt +1 -1
- data/man/bundle-remove.1 +1 -1
- data/man/bundle-remove.1.txt +1 -1
- data/man/bundle-show.1 +1 -1
- data/man/bundle-show.1.txt +1 -1
- data/man/bundle-update.1 +4 -4
- data/man/bundle-update.1.txt +64 -65
- data/man/bundle-update.ronn +3 -3
- data/man/bundle-viz.1 +1 -1
- data/man/bundle-viz.1.txt +1 -1
- data/man/bundle.1 +7 -3
- data/man/bundle.1.txt +11 -8
- data/man/bundle.ronn +5 -2
- data/man/gemfile.5 +17 -20
- data/man/gemfile.5.ronn +14 -18
- data/man/gemfile.5.txt +108 -112
- data/man/index.txt +1 -1
- metadata +34 -110
- data/exe/bundle_ruby +0 -60
- data/lib/bundler/cli/package.rb +0 -49
- data/lib/bundler/compatibility_guard.rb +0 -14
- data/lib/bundler/gem_remote_fetcher.rb +0 -43
- data/lib/bundler/ssl_certs/.document +0 -1
- data/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
- data/lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
- data/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
- data/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -12
- data/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -129
- data/man/bundle-package.1 +0 -55
- data/man/bundle-package.1.txt +0 -79
data/LICENSE.md
CHANGED
@@ -1,23 +1,22 @@
|
|
1
|
-
|
2
|
-
Portions copyright (c) 2009 Engine Yard
|
1
|
+
The MIT License
|
3
2
|
|
4
|
-
|
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
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
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
|
-
|
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
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
OF
|
23
|
-
|
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
|
-
[![
|
4
|
-
[![
|
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](
|
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.
|
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
|
-
|
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 project
|
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,15 +1,12 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
begin
|
5
|
-
|
4
|
+
require_relative "lib/bundler/version"
|
6
5
|
rescue LoadError
|
7
6
|
# for Ruby core repository
|
8
|
-
|
7
|
+
require_relative "version"
|
9
8
|
end
|
10
9
|
|
11
|
-
require "shellwords"
|
12
|
-
|
13
10
|
Gem::Specification.new do |s|
|
14
11
|
s.name = "bundler"
|
15
12
|
s.version = Bundler::VERSION
|
@@ -21,38 +18,24 @@ Gem::Specification.new do |s|
|
|
21
18
|
"Yehuda Katz"
|
22
19
|
]
|
23
20
|
s.email = ["team@bundler.io"]
|
24
|
-
s.homepage = "
|
21
|
+
s.homepage = "https://bundler.io"
|
25
22
|
s.summary = "The best way to manage your application's dependencies"
|
26
23
|
s.description = "Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably"
|
27
24
|
|
28
25
|
if s.respond_to?(:metadata=)
|
29
26
|
s.metadata = {
|
30
|
-
"bug_tracker_uri" => "
|
27
|
+
"bug_tracker_uri" => "https://github.com/bundler/bundler/issues",
|
31
28
|
"changelog_uri" => "https://github.com/bundler/bundler/blob/master/CHANGELOG.md",
|
32
29
|
"homepage_uri" => "https://bundler.io/",
|
33
|
-
"source_code_uri" => "
|
30
|
+
"source_code_uri" => "https://github.com/bundler/bundler/",
|
34
31
|
}
|
35
32
|
end
|
36
33
|
|
37
|
-
|
38
|
-
|
39
|
-
s.required_rubygems_version = ">= 2.5.0"
|
40
|
-
else
|
41
|
-
s.required_ruby_version = ">= 1.8.7"
|
42
|
-
s.required_rubygems_version = ">= 1.3.6"
|
43
|
-
end
|
34
|
+
s.required_ruby_version = ">= 2.3.0"
|
35
|
+
s.required_rubygems_version = ">= 2.5.2"
|
44
36
|
|
45
|
-
s.
|
46
|
-
s.add_development_dependency "mustache", "0.99.6"
|
47
|
-
s.add_development_dependency "rake", "~> 10.0"
|
48
|
-
s.add_development_dependency "rdiscount", "~> 2.2"
|
49
|
-
s.add_development_dependency "ronn", "~> 0.7.3"
|
50
|
-
s.add_development_dependency "rspec", "~> 3.6"
|
37
|
+
s.files = Dir.glob("{lib,man,exe}/**/*", File::FNM_DOTMATCH).reject {|f| File.directory?(f) }
|
51
38
|
|
52
|
-
s.files = `git ls-files -z`.split("\x0").select {|f| f.match(%r{^(lib|exe)/}) }
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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 :
|
38
|
-
autoload :
|
39
|
-
autoload :
|
40
|
-
autoload :
|
41
|
-
autoload :
|
42
|
-
autoload :
|
43
|
-
autoload :
|
44
|
-
autoload :
|
45
|
-
autoload :
|
46
|
-
autoload :
|
47
|
-
autoload :
|
48
|
-
autoload :
|
49
|
-
autoload :
|
50
|
-
autoload :
|
51
|
-
autoload :
|
52
|
-
autoload :
|
53
|
-
autoload :
|
54
|
-
autoload :
|
55
|
-
autoload :
|
56
|
-
autoload :
|
57
|
-
autoload :
|
58
|
-
autoload :
|
59
|
-
autoload :
|
60
|
-
autoload :
|
61
|
-
autoload :
|
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::
|
85
|
+
(defined?(@ui) && @ui) || (self.ui = UI::Shell.new)
|
71
86
|
end
|
72
87
|
|
73
88
|
def ui=(ui)
|
74
|
-
Bundler.rubygems.ui =
|
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 2, "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}/#{
|
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
|
-
|
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
|
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 `
|
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(
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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)
|
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
|