bundler 2.1.3 → 2.2.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1575 -1423
- data/README.md +6 -8
- data/bundler.gemspec +3 -3
- data/exe/bundle +3 -0
- data/lib/bundler.rb +35 -7
- data/lib/bundler/build_metadata.rb +3 -11
- data/lib/bundler/cli.rb +58 -21
- data/lib/bundler/cli/add.rb +1 -1
- data/lib/bundler/cli/binstubs.rb +6 -2
- data/lib/bundler/cli/cache.rb +1 -7
- data/lib/bundler/cli/clean.rb +1 -1
- data/lib/bundler/cli/common.rb +14 -0
- data/lib/bundler/cli/console.rb +1 -1
- data/lib/bundler/cli/doctor.rb +1 -1
- data/lib/bundler/cli/exec.rb +4 -4
- data/lib/bundler/cli/fund.rb +36 -0
- data/lib/bundler/cli/gem.rb +84 -11
- data/lib/bundler/cli/info.rb +15 -4
- data/lib/bundler/cli/init.rb +2 -2
- data/lib/bundler/cli/inject.rb +1 -1
- data/lib/bundler/cli/install.rb +9 -16
- data/lib/bundler/cli/issue.rb +2 -2
- data/lib/bundler/cli/list.rb +12 -10
- data/lib/bundler/cli/outdated.rb +87 -66
- data/lib/bundler/cli/plugin.rb +10 -0
- data/lib/bundler/cli/pristine.rb +5 -0
- data/lib/bundler/cli/show.rb +1 -1
- data/lib/bundler/cli/update.rb +2 -0
- data/lib/bundler/compact_index_client.rb +1 -1
- data/lib/bundler/compact_index_client/cache.rb +1 -1
- data/lib/bundler/compact_index_client/updater.rb +5 -5
- data/lib/bundler/definition.rb +49 -72
- data/lib/bundler/dep_proxy.rb +1 -1
- data/lib/bundler/dependency.rb +3 -10
- data/lib/bundler/dsl.rb +5 -9
- data/lib/bundler/endpoint_specification.rb +1 -1
- data/lib/bundler/env.rb +1 -1
- data/lib/bundler/environment_preserver.rb +26 -2
- data/lib/bundler/errors.rb +1 -0
- data/lib/bundler/feature_flag.rb +0 -3
- data/lib/bundler/fetcher.rb +4 -3
- data/lib/bundler/fetcher/base.rb +1 -1
- data/lib/bundler/fetcher/compact_index.rb +1 -1
- data/lib/bundler/fetcher/downloader.rb +1 -1
- data/lib/bundler/fetcher/index.rb +3 -4
- data/lib/bundler/friendly_errors.rb +22 -13
- data/lib/bundler/gem_helper.rb +32 -17
- data/lib/bundler/gem_helpers.rb +6 -1
- data/lib/bundler/gem_version_promoter.rb +2 -2
- data/lib/bundler/graph.rb +1 -1
- data/lib/bundler/index.rb +6 -2
- data/lib/bundler/injector.rb +22 -4
- data/lib/bundler/inline.rb +2 -2
- data/lib/bundler/installer.rb +35 -32
- data/lib/bundler/installer/gem_installer.rb +3 -3
- data/lib/bundler/installer/parallel_installer.rb +10 -10
- data/lib/bundler/installer/standalone.rb +2 -2
- data/lib/bundler/lazy_specification.rb +34 -9
- data/lib/bundler/lockfile_generator.rb +1 -1
- data/lib/bundler/lockfile_parser.rb +1 -1
- data/lib/bundler/man/.document +1 -0
- data/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
- data/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
- data/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
- data/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- data/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
- data/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +19 -30
- data/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- data/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
- data/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
- data/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- data/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
- data/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
- data/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
- data/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
- data/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- data/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
- data/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
- data/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
- data/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- data/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- data/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
- data/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
- data/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
- data/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
- data/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
- data/lib/bundler/mirror.rb +2 -2
- data/lib/bundler/plugin.rb +30 -5
- data/lib/bundler/plugin/api/source.rb +1 -1
- data/lib/bundler/plugin/dsl.rb +1 -1
- data/lib/bundler/plugin/index.rb +10 -1
- data/lib/bundler/plugin/installer.rb +1 -1
- data/lib/bundler/plugin/installer/rubygems.rb +1 -1
- data/lib/bundler/plugin/source_list.rb +1 -1
- data/lib/bundler/psyched_yaml.rb +0 -15
- data/lib/bundler/remote_specification.rb +5 -2
- data/lib/bundler/resolver.rb +35 -18
- data/lib/bundler/resolver/spec_group.rb +28 -11
- data/lib/bundler/retry.rb +1 -1
- data/lib/bundler/ruby_version.rb +1 -1
- data/lib/bundler/rubygems_ext.rb +53 -9
- data/lib/bundler/rubygems_gem_installer.rb +3 -9
- data/lib/bundler/rubygems_integration.rb +25 -55
- data/lib/bundler/runtime.rb +4 -14
- data/lib/bundler/settings.rb +49 -46
- data/lib/bundler/shared_helpers.rb +2 -2
- data/lib/bundler/similarity_detector.rb +1 -1
- data/lib/bundler/source.rb +1 -1
- data/lib/bundler/source/git.rb +5 -5
- data/lib/bundler/source/git/git_proxy.rb +57 -60
- data/lib/bundler/source/path.rb +7 -3
- data/lib/bundler/source/path/installer.rb +8 -10
- data/lib/bundler/source/rubygems.rb +13 -16
- data/lib/bundler/source/rubygems/remote.rb +1 -1
- data/lib/bundler/source_list.rb +2 -2
- data/lib/bundler/spec_set.rb +2 -1
- data/lib/bundler/stub_specification.rb +17 -7
- data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
- data/lib/bundler/templates/newgem/Gemfile.tt +9 -1
- data/lib/bundler/templates/newgem/README.md.tt +1 -2
- data/lib/bundler/templates/newgem/Rakefile.tt +19 -5
- data/lib/bundler/templates/newgem/bin/console.tt +1 -0
- data/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
- data/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
- data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
- data/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
- data/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
- data/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +14 -6
- data/lib/bundler/templates/newgem/rubocop.yml.tt +10 -0
- data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
- data/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
- data/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
- data/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
- data/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
- data/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
- data/lib/bundler/ui/shell.rb +5 -5
- data/lib/bundler/uri_credentials_filter.rb +3 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +34 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +38 -40
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +79 -208
- data/lib/bundler/vendor/thor/lib/thor.rb +0 -7
- data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
- data/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
- data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
- data/lib/bundler/vendored_persistent.rb +0 -7
- data/lib/bundler/vendored_tmpdir.rb +4 -0
- data/lib/bundler/version.rb +1 -1
- data/lib/bundler/worker.rb +1 -1
- data/lib/bundler/yaml_serializer.rb +1 -1
- data/man/bundle-add.1 +1 -1
- data/man/bundle-binstubs.1 +5 -3
- data/man/bundle-cache.1 +1 -1
- data/man/bundle-check.1 +1 -1
- data/man/bundle-clean.1 +1 -1
- data/man/bundle-config.1 +16 -25
- data/man/bundle-doctor.1 +1 -1
- data/man/bundle-exec.1 +1 -1
- data/man/bundle-gem.1 +25 -3
- data/man/bundle-info.1 +1 -1
- data/man/bundle-init.1 +1 -1
- data/man/bundle-inject.1 +1 -1
- data/man/bundle-install.1 +30 -3
- data/man/bundle-list.1 +7 -7
- data/man/bundle-lock.1 +1 -1
- data/man/bundle-open.1 +1 -1
- data/man/bundle-outdated.1 +1 -1
- data/man/bundle-platform.1 +1 -1
- data/man/bundle-pristine.1 +1 -1
- data/man/bundle-remove.1 +1 -1
- data/man/bundle-show.1 +1 -1
- data/man/bundle-update.1 +1 -1
- data/man/bundle-viz.1 +1 -1
- data/man/bundle.1 +1 -1
- data/man/gemfile.5 +4 -4
- metadata +43 -59
- data/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
- data/man/bundle-add.1.txt +0 -58
- data/man/bundle-binstubs.1.txt +0 -48
- data/man/bundle-cache.1.txt +0 -78
- data/man/bundle-check.1.txt +0 -33
- data/man/bundle-clean.1.txt +0 -26
- data/man/bundle-config.1.txt +0 -528
- data/man/bundle-doctor.1.txt +0 -44
- data/man/bundle-exec.1.txt +0 -178
- data/man/bundle-gem.1.txt +0 -91
- data/man/bundle-info.1.txt +0 -21
- data/man/bundle-init.1.txt +0 -34
- data/man/bundle-inject.1.txt +0 -32
- data/man/bundle-install.1.txt +0 -401
- data/man/bundle-list.1.txt +0 -43
- data/man/bundle-lock.1.txt +0 -93
- data/man/bundle-open.1.txt +0 -29
- data/man/bundle-outdated.1.txt +0 -131
- data/man/bundle-platform.1.txt +0 -57
- data/man/bundle-pristine.1.txt +0 -44
- data/man/bundle-remove.1.txt +0 -34
- data/man/bundle-show.1.txt +0 -27
- data/man/bundle-update.1.txt +0 -390
- data/man/bundle-viz.1.txt +0 -39
- data/man/bundle.1.txt +0 -116
- data/man/gemfile.5.txt +0 -649
data/lib/bundler/inline.rb
CHANGED
@@ -58,7 +58,7 @@ def gemfile(install = false, options = {}, &gemfile)
|
|
58
58
|
|
59
59
|
Bundler.ui = install ? ui : Bundler::UI::Silent.new
|
60
60
|
if install || definition.missing_specs?
|
61
|
-
Bundler.settings.temporary(:inline => true
|
61
|
+
Bundler.settings.temporary(:inline => true) do
|
62
62
|
installer = Bundler::Installer.install(Bundler.root, definition, :system => true)
|
63
63
|
installer.post_install_messages.each do |name, message|
|
64
64
|
Bundler.ui.info "Post-install message from #{name}:\n#{message}"
|
@@ -78,7 +78,7 @@ def gemfile(install = false, options = {}, &gemfile)
|
|
78
78
|
if old_gemfile
|
79
79
|
ENV["BUNDLE_GEMFILE"] = old_gemfile
|
80
80
|
else
|
81
|
-
ENV
|
81
|
+
ENV["BUNDLE_GEMFILE"] = ""
|
82
82
|
end
|
83
83
|
end
|
84
84
|
end
|
data/lib/bundler/installer.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "erb"
|
4
3
|
require "rubygems/dependency_installer"
|
5
4
|
require_relative "worker"
|
6
5
|
require_relative "installer/parallel_installer"
|
@@ -135,12 +134,18 @@ module Bundler
|
|
135
134
|
next
|
136
135
|
end
|
137
136
|
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
137
|
+
mode = Bundler::WINDOWS ? "wb:UTF-8" : "w"
|
138
|
+
require "erb"
|
139
|
+
content = if RUBY_VERSION >= "2.6"
|
140
|
+
ERB.new(template, :trim_mode => "-").result(binding)
|
141
|
+
else
|
142
|
+
ERB.new(template, nil, "-").result(binding)
|
143
|
+
end
|
144
|
+
|
145
|
+
File.write(binstub_path, content, :mode => mode, :perm => 0o777 & ~File.umask)
|
146
|
+
if Bundler::WINDOWS || options[:all_platforms]
|
147
|
+
prefix = "@ruby -x \"%~f0\" %*\n@exit /b %ERRORLEVEL%\n\n"
|
148
|
+
File.write("#{binstub_path}.cmd", prefix + content, :mode => mode)
|
144
149
|
end
|
145
150
|
end
|
146
151
|
|
@@ -159,7 +164,7 @@ module Bundler
|
|
159
164
|
end
|
160
165
|
end
|
161
166
|
|
162
|
-
def generate_standalone_bundler_executable_stubs(spec)
|
167
|
+
def generate_standalone_bundler_executable_stubs(spec, options = {})
|
163
168
|
# double-assignment to avoid warnings about variables that will be used by ERB
|
164
169
|
bin_path = Bundler.bin_path
|
165
170
|
unless path = Bundler.settings[:path]
|
@@ -175,17 +180,24 @@ module Bundler
|
|
175
180
|
next if executable == "bundle"
|
176
181
|
executable_path = Pathname(spec.full_gem_path).join(spec.bindir, executable).relative_path_from(bin_path)
|
177
182
|
executable_path = executable_path
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
183
|
+
|
184
|
+
mode = Bundler::WINDOWS ? "wb:UTF-8" : "w"
|
185
|
+
require "erb"
|
186
|
+
content = if RUBY_VERSION >= "2.6"
|
187
|
+
ERB.new(template, :trim_mode => "-").result(binding)
|
188
|
+
else
|
189
|
+
ERB.new(template, nil, "-").result(binding)
|
190
|
+
end
|
191
|
+
|
192
|
+
File.write("#{bin_path}/#{executable}", content, :mode => mode, :perm => 0o755)
|
193
|
+
if Bundler::WINDOWS || options[:all_platforms]
|
194
|
+
prefix = "@ruby -x \"%~f0\" %*\n@exit /b %ERRORLEVEL%\n\n"
|
195
|
+
File.write("#{bin_path}/#{executable}.cmd", prefix + content, :mode => mode)
|
184
196
|
end
|
185
197
|
end
|
186
198
|
end
|
187
199
|
|
188
|
-
|
200
|
+
private
|
189
201
|
|
190
202
|
# the order that the resolver provides is significant, since
|
191
203
|
# dependencies might affect the installation of a gem.
|
@@ -202,20 +214,14 @@ module Bundler
|
|
202
214
|
return jobs
|
203
215
|
end
|
204
216
|
|
205
|
-
return 1 unless can_install_in_parallel?
|
206
|
-
|
207
|
-
auto_config_jobs = Bundler.feature_flag.auto_config_jobs?
|
208
217
|
if jobs = Bundler.settings[:jobs]
|
209
|
-
|
210
|
-
jobs
|
211
|
-
else
|
212
|
-
[jobs.pred, 1].max
|
213
|
-
end
|
214
|
-
elsif auto_config_jobs
|
215
|
-
processor_count
|
216
|
-
else
|
217
|
-
1
|
218
|
+
return jobs
|
218
219
|
end
|
220
|
+
|
221
|
+
# Parallelization has some issues on Windows, so it's not yet the default
|
222
|
+
return 1 if Gem.win_platform?
|
223
|
+
|
224
|
+
processor_count
|
219
225
|
end
|
220
226
|
|
221
227
|
def processor_count
|
@@ -238,6 +244,7 @@ module Bundler
|
|
238
244
|
end
|
239
245
|
end.flatten
|
240
246
|
Bundler.rubygems.load_plugin_files(path_plugin_files)
|
247
|
+
Bundler.rubygems.load_env_plugins
|
241
248
|
end
|
242
249
|
|
243
250
|
def ensure_specs_are_compatible!
|
@@ -274,10 +281,6 @@ module Bundler
|
|
274
281
|
end
|
275
282
|
end
|
276
283
|
|
277
|
-
def can_install_in_parallel?
|
278
|
-
true
|
279
|
-
end
|
280
|
-
|
281
284
|
def install_in_parallel(size, standalone, force = false)
|
282
285
|
spec_installations = ParallelInstaller.call(self, @definition.specs, size, standalone, force)
|
283
286
|
spec_installations.each do |installation|
|
@@ -296,7 +299,7 @@ module Bundler
|
|
296
299
|
|
297
300
|
# returns whether or not a re-resolve was needed
|
298
301
|
def resolve_if_needed(options)
|
299
|
-
if !@definition.unlocking? && !options["force"] && !
|
302
|
+
if !@definition.unlocking? && !options["force"] && !Bundler.settings[:inline] && Bundler.default_lockfile.file?
|
300
303
|
return false if @definition.nothing_changed? && !@definition.missing_specs?
|
301
304
|
end
|
302
305
|
|
@@ -19,15 +19,15 @@ module Bundler
|
|
19
19
|
Bundler.ui.debug "#{worker}: #{spec.name} (#{spec.version}) from #{spec.loaded_from}"
|
20
20
|
generate_executable_stubs
|
21
21
|
return true, post_install_message
|
22
|
-
rescue Bundler::InstallHookError, Bundler::SecurityError, APIResponseMismatchError
|
22
|
+
rescue Bundler::InstallHookError, Bundler::SecurityError, Bundler::APIResponseMismatchError
|
23
23
|
raise
|
24
24
|
rescue Errno::ENOSPC
|
25
25
|
return false, out_of_space_message
|
26
|
-
rescue
|
26
|
+
rescue Bundler::BundlerError, Gem::InstallError, Bundler::APIResponseInvalidDependenciesError => e
|
27
27
|
return false, specific_failure_message(e)
|
28
28
|
end
|
29
29
|
|
30
|
-
|
30
|
+
private
|
31
31
|
|
32
32
|
def specific_failure_message(e)
|
33
33
|
message = "#{e.class}: #{e.message}\n"
|
@@ -99,7 +99,7 @@ module Bundler
|
|
99
99
|
install_serially
|
100
100
|
end
|
101
101
|
|
102
|
-
handle_error if
|
102
|
+
handle_error if failed_specs.any?
|
103
103
|
@specs
|
104
104
|
ensure
|
105
105
|
worker_pool && worker_pool.stop
|
@@ -130,7 +130,11 @@ module Bundler
|
|
130
130
|
Bundler.ui.warn(warning.join("\n"))
|
131
131
|
end
|
132
132
|
|
133
|
-
|
133
|
+
private
|
134
|
+
|
135
|
+
def failed_specs
|
136
|
+
@specs.select(&:failed?)
|
137
|
+
end
|
134
138
|
|
135
139
|
def install_with_worker
|
136
140
|
enqueue_specs
|
@@ -156,17 +160,13 @@ module Bundler
|
|
156
160
|
gem_installer = Bundler::GemInstaller.new(
|
157
161
|
spec_install.spec, @installer, @standalone, worker_num, @force
|
158
162
|
)
|
159
|
-
success, message =
|
160
|
-
gem_installer.install_from_spec
|
161
|
-
rescue RuntimeError => e
|
162
|
-
raise e, "#{e}\n\n#{require_tree_for_spec(spec_install.spec)}"
|
163
|
-
end
|
163
|
+
success, message = gem_installer.install_from_spec
|
164
164
|
if success
|
165
165
|
spec_install.state = :installed
|
166
166
|
spec_install.post_install_message = message unless message.nil?
|
167
167
|
else
|
168
|
-
spec_install.state = :failed
|
169
168
|
spec_install.error = "#{message}\n\n#{require_tree_for_spec(spec_install.spec)}"
|
169
|
+
spec_install.state = :failed
|
170
170
|
end
|
171
171
|
Plugin.hook(Plugin::Events::GEM_AFTER_INSTALL, spec_install)
|
172
172
|
spec_install
|
@@ -190,11 +190,11 @@ module Bundler
|
|
190
190
|
end
|
191
191
|
|
192
192
|
def handle_error
|
193
|
-
errors =
|
193
|
+
errors = failed_specs.map(&:error)
|
194
194
|
if exception = errors.find {|e| e.is_a?(Bundler::BundlerError) }
|
195
195
|
raise exception
|
196
196
|
end
|
197
|
-
raise Bundler::InstallError, errors.
|
197
|
+
raise Bundler::InstallError, errors.join("\n\n")
|
198
198
|
end
|
199
199
|
|
200
200
|
def require_tree_for_spec(spec)
|
@@ -16,12 +16,12 @@ module Bundler
|
|
16
16
|
file.puts "ruby_version = RbConfig::CONFIG[\"ruby_version\"]"
|
17
17
|
file.puts "path = File.expand_path('..', __FILE__)"
|
18
18
|
paths.each do |path|
|
19
|
-
file.puts %($:.unshift "\#{path}/#{path}")
|
19
|
+
file.puts %($:.unshift File.expand_path("\#{path}/#{path}"))
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
|
24
|
+
private
|
25
25
|
|
26
26
|
def paths
|
27
27
|
@specs.map do |spec|
|
@@ -12,7 +12,7 @@ module Bundler
|
|
12
12
|
[name, version, platform_string] <=> [other.name, other.version, other.platform_string]
|
13
13
|
end
|
14
14
|
|
15
|
-
|
15
|
+
protected
|
16
16
|
|
17
17
|
def platform_string
|
18
18
|
platform_string = platform.to_s
|
@@ -46,6 +46,14 @@ module Bundler
|
|
46
46
|
identifier == other.identifier
|
47
47
|
end
|
48
48
|
|
49
|
+
def eql?(other)
|
50
|
+
identifier.eql?(other.identifier)
|
51
|
+
end
|
52
|
+
|
53
|
+
def hash
|
54
|
+
identifier.hash
|
55
|
+
end
|
56
|
+
|
49
57
|
def satisfies?(dependency)
|
50
58
|
@name == dependency.name && dependency.requirement.satisfied_by?(Gem::Version.new(@version))
|
51
59
|
end
|
@@ -68,17 +76,20 @@ module Bundler
|
|
68
76
|
end
|
69
77
|
|
70
78
|
def __materialize__
|
71
|
-
search_object = Bundler.feature_flag.specific_platform? || Bundler.settings[:force_ruby_platform] ? self : Dependency.new(name, version)
|
72
79
|
@specification = if source.is_a?(Source::Gemspec) && source.gemspec.name == name
|
73
80
|
source.gemspec.tap {|s| s.source = source }
|
74
81
|
else
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
"To use the platform-specific version of the gem, run `bundle config set specific_platform true` and install again."
|
80
|
-
search = source.specs.search(self).last
|
82
|
+
search_object = if source.is_a?(Source::Path)
|
83
|
+
Dependency.new(name, version)
|
84
|
+
else
|
85
|
+
ruby_platform_materializes_to_ruby_platform? ? self : Dependency.new(name, version)
|
81
86
|
end
|
87
|
+
platform_object = Gem::Platform.new(platform)
|
88
|
+
candidates = source.specs.search(search_object)
|
89
|
+
same_platform_candidates = candidates.select do |spec|
|
90
|
+
MatchPlatform.platforms_match?(spec.platform, platform_object)
|
91
|
+
end
|
92
|
+
search = same_platform_candidates.last || candidates.last
|
82
93
|
search.dependencies = dependencies if search && (search.is_a?(RemoteSpecification) || search.is_a?(EndpointSpecification))
|
83
94
|
search
|
84
95
|
end
|
@@ -105,7 +116,7 @@ module Bundler
|
|
105
116
|
" #{source.revision[0..6]}"
|
106
117
|
end
|
107
118
|
|
108
|
-
|
119
|
+
private
|
109
120
|
|
110
121
|
def to_ary
|
111
122
|
nil
|
@@ -118,5 +129,19 @@ module Bundler
|
|
118
129
|
|
119
130
|
@specification.send(method, *args, &blk)
|
120
131
|
end
|
132
|
+
|
133
|
+
#
|
134
|
+
# Bundler 2.2.0 was the first version that records the full resolution
|
135
|
+
# including platform specific gems in the lockfile, which means that if a
|
136
|
+
# gem with RUBY platform is recorded, the RUBY platform version of the gem
|
137
|
+
# should be installed. Previously bundler would record only generic versions
|
138
|
+
# in the lockfile and then install the most specific platform variant if
|
139
|
+
# available.
|
140
|
+
#
|
141
|
+
def ruby_platform_materializes_to_ruby_platform?
|
142
|
+
locked_bundler_version = Bundler.locked_bundler_version
|
143
|
+
|
144
|
+
locked_bundler_version.nil? || Gem::Version.new(locked_bundler_version) >= Gem::Version.new("2.2.0")
|
145
|
+
end
|
121
146
|
end
|
122
147
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
# Ignore all files in this directory
|
File without changes
|
@@ -37,7 +37,5 @@ Calling binstubs with [GEM [GEM]] will create binstubs for all given gems.
|
|
37
37
|
* `--shebang`:
|
38
38
|
Specify a different shebang executable name than the default (default 'ruby')
|
39
39
|
|
40
|
-
|
41
|
-
|
42
|
-
To create binstubs for all the gems in the bundle you can use the `--binstubs`
|
43
|
-
flag in [bundle install(1)](bundle-install.1.html).
|
40
|
+
* `--all`:
|
41
|
+
Create binstubs for all gems in the bundle.
|
File without changes
|
File without changes
|
File without changes
|
@@ -11,7 +11,7 @@ This command allows you to interact with Bundler's configuration system.
|
|
11
11
|
|
12
12
|
Bundler loads configuration settings in this order:
|
13
13
|
|
14
|
-
1. Local config (
|
14
|
+
1. Local config (`<project_root>/.bundle/config` or `$BUNDLE_APP_CONFIG/config`)
|
15
15
|
2. Environmental variables (`ENV`)
|
16
16
|
3. Global config (`~/.bundle/config`)
|
17
17
|
4. Bundler default config
|
@@ -30,8 +30,10 @@ overridden and user will be warned.
|
|
30
30
|
|
31
31
|
Executing `bundle config set --global <name> <value>` works the same as above.
|
32
32
|
|
33
|
-
Executing `bundle config set --local <name> <value>` will set that configuration
|
34
|
-
the local application. The configuration will be stored in
|
33
|
+
Executing `bundle config set --local <name> <value>` will set that configuration
|
34
|
+
in the directory for the local application. The configuration will be stored in
|
35
|
+
`<project_root>/.bundle/config`. If `BUNDLE_APP_CONFIG` is set, the configuration
|
36
|
+
will be stored in `$BUNDLE_APP_CONFIG/config`.
|
35
37
|
|
36
38
|
Executing `bundle config unset <name>` will delete the configuration in both
|
37
39
|
local and global sources.
|
@@ -45,7 +47,7 @@ configuration only from the local application.
|
|
45
47
|
Executing bundle with the `BUNDLE_IGNORE_CONFIG` environment variable set will
|
46
48
|
cause it to ignore all configuration.
|
47
49
|
|
48
|
-
Executing `bundle config set disable_multisource true` upgrades the warning about
|
50
|
+
Executing `bundle config set --local disable_multisource true` upgrades the warning about
|
49
51
|
the Gemfile containing multiple primary sources to an error. Executing `bundle
|
50
52
|
config unset disable_multisource` downgrades this error to a warning.
|
51
53
|
|
@@ -57,7 +59,7 @@ application's configuration (normally, `./.bundle/config`).
|
|
57
59
|
|
58
60
|
However, this will be changed in bundler 3, so it's better not to rely on this
|
59
61
|
behavior. If these options must be remembered, it's better to set them using
|
60
|
-
`bundle config` (e.g., `bundle config set path foo`).
|
62
|
+
`bundle config` (e.g., `bundle config set --local path foo`).
|
61
63
|
|
62
64
|
The options that can be configured are:
|
63
65
|
|
@@ -101,7 +103,7 @@ pass configuration flags to `gem install` to specify where to find the
|
|
101
103
|
Since the specific location of that executable can change from machine
|
102
104
|
to machine, you can specify these flags on a per-machine basis.
|
103
105
|
|
104
|
-
bundle config set build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config
|
106
|
+
bundle config set --global build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config
|
105
107
|
|
106
108
|
After running this command, every time bundler needs to install the
|
107
109
|
`mysql` gem, it will pass along the flags you specified.
|
@@ -148,7 +150,8 @@ learn more about their operation in [bundle install(1)](bundle-install.1.html).
|
|
148
150
|
Install executables from gems in the bundle to the specified directory.
|
149
151
|
Defaults to `false`.
|
150
152
|
* `cache_all` (`BUNDLE_CACHE_ALL`):
|
151
|
-
Cache all gems, including path and git gems.
|
153
|
+
Cache all gems, including path and git gems. This needs to be explicitly
|
154
|
+
configured on bundler 1 and bundler 2, but will be the default on bundler 3.
|
152
155
|
* `cache_all_platforms` (`BUNDLE_CACHE_ALL_PLATFORMS`):
|
153
156
|
Cache gems for all platforms.
|
154
157
|
* `cache_path` (`BUNDLE_CACHE_PATH`):
|
@@ -179,8 +182,6 @@ learn more about their operation in [bundle install(1)](bundle-install.1.html).
|
|
179
182
|
When set, Gemfiles containing multiple sources will produce errors
|
180
183
|
instead of warnings.
|
181
184
|
Use `bundle config unset disable_multisource` to unset.
|
182
|
-
* `disable_platform_warnings` (`BUNDLE_DISABLE_PLATFORM_WARNINGS`):
|
183
|
-
Disable warnings during bundle install when a dependency is unused on the current platform.
|
184
185
|
* `disable_shared_gems` (`BUNDLE_DISABLE_SHARED_GEMS`):
|
185
186
|
Stop Bundler from accessing gems installed to RubyGems' normal location.
|
186
187
|
* `disable_version_check` (`BUNDLE_DISABLE_VERSION_CHECK`):
|
@@ -249,17 +250,6 @@ learn more about their operation in [bundle install(1)](bundle-install.1.html).
|
|
249
250
|
be changed in the next major version.
|
250
251
|
* `silence_root_warning` (`BUNDLE_SILENCE_ROOT_WARNING`):
|
251
252
|
Silence the warning Bundler prints when installing gems as root.
|
252
|
-
* `skip_default_git_sources` (`BUNDLE_SKIP_DEFAULT_GIT_SOURCES`):
|
253
|
-
Whether Bundler should skip adding default git source shortcuts to the
|
254
|
-
Gemfile DSL.
|
255
|
-
* `specific_platform` (`BUNDLE_SPECIFIC_PLATFORM`):
|
256
|
-
Allow bundler to resolve for the specific running platform and store it in
|
257
|
-
the lockfile, instead of only using a generic platform.
|
258
|
-
A specific platform is the exact platform triple reported by
|
259
|
-
`Gem::Platform.local`, such as `x86_64-darwin-16` or `universal-java-1.8`.
|
260
|
-
On the other hand, generic platforms are those such as `ruby`, `mswin`, or
|
261
|
-
`java`. In this example, `x86_64-darwin-16` would map to `ruby` and
|
262
|
-
`universal-java-1.8` to `java`.
|
263
253
|
* `ssl_ca_cert` (`BUNDLE_SSL_CA_CERT`):
|
264
254
|
Path to a designated CA certificate file or folder containing multiple
|
265
255
|
certificates for trusted CAs in PEM format.
|
@@ -302,11 +292,11 @@ Bundler also allows you to work against a git repository locally
|
|
302
292
|
instead of using the remote version. This can be achieved by setting
|
303
293
|
up a local override:
|
304
294
|
|
305
|
-
bundle config set local.GEM_NAME /path/to/local/git/repository
|
295
|
+
bundle config set --local local.GEM_NAME /path/to/local/git/repository
|
306
296
|
|
307
297
|
For example, in order to use a local Rack repository, a developer could call:
|
308
298
|
|
309
|
-
bundle config set local.rack ~/Work/git/rack
|
299
|
+
bundle config set --local local.rack ~/Work/git/rack
|
310
300
|
|
311
301
|
Now instead of checking out the remote git repository, the local
|
312
302
|
override will be used. Similar to a path source, every time the local
|
@@ -336,21 +326,21 @@ Bundler supports overriding gem sources with mirrors. This allows you to
|
|
336
326
|
configure rubygems.org as the gem source in your Gemfile while still using your
|
337
327
|
mirror to fetch gems.
|
338
328
|
|
339
|
-
bundle config set mirror.SOURCE_URL MIRROR_URL
|
329
|
+
bundle config set --global mirror.SOURCE_URL MIRROR_URL
|
340
330
|
|
341
331
|
For example, to use a mirror of rubygems.org hosted at rubygems-mirror.org:
|
342
332
|
|
343
|
-
bundle config set mirror.http://rubygems.org http://rubygems-mirror.org
|
333
|
+
bundle config set --global mirror.http://rubygems.org http://rubygems-mirror.org
|
344
334
|
|
345
335
|
Each mirror also provides a fallback timeout setting. If the mirror does not
|
346
336
|
respond within the fallback timeout, Bundler will try to use the original
|
347
337
|
server instead of the mirror.
|
348
338
|
|
349
|
-
bundle config set mirror.SOURCE_URL.fallback_timeout TIMEOUT
|
339
|
+
bundle config set --global mirror.SOURCE_URL.fallback_timeout TIMEOUT
|
350
340
|
|
351
341
|
For example, to fall back to rubygems.org after 3 seconds:
|
352
342
|
|
353
|
-
bundle config set mirror.https://rubygems.org.fallback_timeout 3
|
343
|
+
bundle config set --global mirror.https://rubygems.org.fallback_timeout 3
|
354
344
|
|
355
345
|
The default fallback timeout is 0.1 seconds, but the setting can currently
|
356
346
|
only accept whole seconds (for example, 1, 15, or 30).
|
@@ -360,12 +350,12 @@ only accept whole seconds (for example, 1, 15, or 30).
|
|
360
350
|
Bundler allows you to configure credentials for any gem source, which allows
|
361
351
|
you to avoid putting secrets into your Gemfile.
|
362
352
|
|
363
|
-
bundle config set SOURCE_HOSTNAME USERNAME:PASSWORD
|
353
|
+
bundle config set --global SOURCE_HOSTNAME USERNAME:PASSWORD
|
364
354
|
|
365
355
|
For example, to save the credentials of user `claudette` for the gem source at
|
366
356
|
`gems.longerous.com`, you would run:
|
367
357
|
|
368
|
-
bundle config set gems.longerous.com claudette:s00pers3krit
|
358
|
+
bundle config set --global gems.longerous.com claudette:s00pers3krit
|
369
359
|
|
370
360
|
Or you can set the credentials as an environment variable like this:
|
371
361
|
|
@@ -373,7 +363,7 @@ Or you can set the credentials as an environment variable like this:
|
|
373
363
|
|
374
364
|
For gems with a git source with HTTP(S) URL you can specify credentials like so:
|
375
365
|
|
376
|
-
bundle config set https://github.com/
|
366
|
+
bundle config set --global https://github.com/rubygems/rubygems.git username:password
|
377
367
|
|
378
368
|
Or you can set the credentials as an environment variable like so:
|
379
369
|
|
@@ -396,4 +386,3 @@ outlines the available environment variables and their default values
|
|
396
386
|
BUNDLE_USER_CACHE : $BUNDLE_USER_HOME/cache
|
397
387
|
BUNDLE_USER_CONFIG : $BUNDLE_USER_HOME/config
|
398
388
|
BUNDLE_USER_PLUGIN : $BUNDLE_USER_HOME/plugin
|
399
|
-
|