Module: Bundler
- Defined in:
- lib/bundler.rb,
lib/bundler/ui.rb,
lib/bundler/cli.rb,
lib/bundler/dsl.rb,
lib/bundler/env.rb,
lib/bundler/graph.rb,
lib/bundler/index.rb,
lib/bundler/retry.rb,
lib/bundler/digest.rb,
lib/bundler/errors.rb,
lib/bundler/mirror.rb,
lib/bundler/plugin.rb,
lib/bundler/source.rb,
lib/bundler/worker.rb,
lib/bundler/cli/add.rb,
lib/bundler/cli/gem.rb,
lib/bundler/cli/viz.rb,
lib/bundler/fetcher.rb,
lib/bundler/runtime.rb,
lib/bundler/version.rb,
lib/bundler/cli/exec.rb,
lib/bundler/cli/fund.rb,
lib/bundler/cli/info.rb,
lib/bundler/cli/init.rb,
lib/bundler/cli/list.rb,
lib/bundler/cli/lock.rb,
lib/bundler/cli/open.rb,
lib/bundler/cli/show.rb,
lib/bundler/injector.rb,
lib/bundler/resolver.rb,
lib/bundler/ruby_dsl.rb,
lib/bundler/settings.rb,
lib/bundler/spec_set.rb,
lib/bundler/ui/shell.rb,
lib/bundler/cli/cache.rb,
lib/bundler/cli/check.rb,
lib/bundler/cli/clean.rb,
lib/bundler/cli/issue.rb,
lib/bundler/constants.rb,
lib/bundler/deprecate.rb,
lib/bundler/installer.rb,
lib/bundler/ui/silent.rb,
lib/bundler/cli/common.rb,
lib/bundler/cli/config.rb,
lib/bundler/cli/doctor.rb,
lib/bundler/cli/inject.rb,
lib/bundler/cli/plugin.rb,
lib/bundler/cli/remove.rb,
lib/bundler/cli/update.rb,
lib/bundler/definition.rb,
lib/bundler/dependency.rb,
lib/bundler/deployment.rb,
lib/bundler/gem_helper.rb,
lib/bundler/plugin/api.rb,
lib/bundler/plugin/dsl.rb,
lib/bundler/source/git.rb,
lib/bundler/source_map.rb,
lib/bundler/cli/console.rb,
lib/bundler/cli/install.rb,
lib/bundler/gem_helpers.rb,
lib/bundler/source/path.rb,
lib/bundler/source_list.rb,
lib/bundler/ui/rg_proxy.rb,
lib/bundler/cli/binstubs.rb,
lib/bundler/cli/outdated.rb,
lib/bundler/cli/platform.rb,
lib/bundler/cli/pristine.rb,
lib/bundler/current_ruby.rb,
lib/bundler/feature_flag.rb,
lib/bundler/fetcher/base.rb,
lib/bundler/plugin/index.rb,
lib/bundler/process_lock.rb,
lib/bundler/ruby_version.rb,
lib/bundler/self_manager.rb,
lib/bundler/vendored_uri.rb,
lib/bundler/fetcher/index.rb,
lib/bundler/plugin/events.rb,
lib/bundler/resolver/base.rb,
lib/bundler/resolver/root.rb,
lib/bundler/vendored_thor.rb,
lib/bundler/build_metadata.rb,
lib/bundler/force_platform.rb,
lib/bundler/match_metadata.rb,
lib/bundler/match_platform.rb,
lib/bundler/shared_helpers.rb,
lib/bundler/source/gemspec.rb,
lib/bundler/uri_normalizer.rb,
lib/bundler/vendored_tsort.rb,
lib/bundler/friendly_errors.rb,
lib/bundler/lockfile_parser.rb,
lib/bundler/source/metadata.rb,
lib/bundler/source/rubygems.rb,
lib/bundler/yaml_serializer.rb,
lib/bundler/plugin/installer.rb,
lib/bundler/resolver/package.rb,
lib/bundler/plugin/api/source.rb,
lib/bundler/vendored_pub_grub.rb,
lib/bundler/fetcher/dependency.rb,
lib/bundler/fetcher/downloader.rb,
lib/bundler/lazy_specification.rb,
lib/bundler/lockfile_generator.rb,
lib/bundler/plugin/source_list.rb,
lib/bundler/resolver/candidate.rb,
lib/bundler/settings/validator.rb,
lib/bundler/stub_specification.rb,
lib/bundler/vendored_fileutils.rb,
lib/bundler/resolver/spec_group.rb,
lib/bundler/similarity_detector.rb,
lib/bundler/vendored_persistent.rb,
lib/bundler/vendored_persistent.rb,
lib/bundler/compact_index_client.rb,
lib/bundler/gem_version_promoter.rb,
lib/bundler/installer/standalone.rb,
lib/bundler/plugin/installer/git.rb,
lib/bundler/remote_specification.rb,
lib/bundler/rubygems_integration.rb,
lib/bundler/source/git/git_proxy.rb,
lib/bundler/environment_preserver.rb,
lib/bundler/fetcher/compact_index.rb,
lib/bundler/match_remote_metadata.rb,
lib/bundler/source/path/installer.rb,
lib/bundler/endpoint_specification.rb,
lib/bundler/rubygems_gem_installer.rb,
lib/bundler/source/rubygems/remote.rb,
lib/bundler/uri_credentials_filter.rb,
lib/bundler/installer/gem_installer.rb,
lib/bundler/incomplete_specification.rb,
lib/bundler/resolver/incompatibility.rb,
lib/bundler/plugin/installer/rubygems.rb,
lib/bundler/source/rubygems_aggregate.rb,
lib/bundler/vendor/uri/lib/uri/common.rb,
lib/bundler/compact_index_client/cache.rb,
lib/bundler/compact_index_client/updater.rb,
lib/bundler/installer/parallel_installer.rb,
lib/bundler/compact_index_client/gem_parser.rb
Overview
Defined Under Namespace
Modules: BuildMetadata, Digest, FetchMetadata, FileUtils, ForcePlatform, FriendlyErrors, GemHelpers, MatchMetadata, MatchPlatform, MatchRemoteMetadata, Persistent, Plugin, PubGrub, RubyDsl, SharedHelpers, TSort, UI, URI, URICredentialsFilter, URINormalizer, YAMLSerializer
Classes: APIResponseInvalidDependenciesError, APIResponseMismatchError, BundlerError, CLI, CompactIndexClient, ConnectionPool, CurrentRuby, CyclicDependencyError, Definition, Dependency, Deployment, Deprecate, DeprecatedError, DirectoryRemovalError, Dsl, EndpointSpecification, Env, EnvironmentPreserver, FeatureFlag, Fetcher, GemHelper, GemInstaller, GemNotFound, GemRequireError, GemVersionPromoter, GemfileError, GemfileEvalError, GemfileLockNotFound, GemfileNotFound, GemspecError, GenericSystemCallError, GitError, Graph, HTTPError, IncompleteSpecification, Index, Injector, InstallError, InstallHookError, Installer, InvalidOption, LazySpecification, LockfileError, LockfileGenerator, LockfileParser, MarshalError, MirrorSockets, NoSpaceOnDeviceError, OperationNotSupportedError, ParallelInstaller, PathError, PermissionError, PluginError, ProcessLock, ProductionError, RemoteSpecification, Resolver, Retry, RubyGemsGemInstaller, RubyVersion, RubyVersionMismatch, RubygemsIntegration, Runtime, SecurityError, SelfManager, Settings, SimilarityDetector, SocketAddress, SolveFailure, Source, SourceList, SourceMap, SpecSet, Standalone, StubSpecification, TemporaryResourceError, Thor, ThreadCreationError, VirtualProtocolError, Worker, YamlSyntaxError
Constant Summary
collapse
- ORIGINAL_ENV =
environment_preserver.restore
- SUDO_MUTEX =
Thread::Mutex.new
- SAFE_MARSHAL_CLASSES =
[Symbol, TrueClass, String, Array, Hash, Gem::Version, Gem::Specification].freeze
- SAFE_MARSHAL_ERROR =
"Unexpected class %s present in marshaled data. Only %s are allowed."
- SAFE_MARSHAL_PROC =
proc do |object|
object.tap do
unless SAFE_MARSHAL_CLASSES.include?(object.class)
raise TypeError, format(SAFE_MARSHAL_ERROR, object.class, SAFE_MARSHAL_CLASSES.join(", "))
end
end
end
- VERSION =
"2.4.9".freeze
- WINDOWS =
RbConfig::CONFIG["host_os"] =~ /(msdos|mswin|djgpp|mingw)/
- FREEBSD =
RbConfig::CONFIG["host_os"].to_s.include?("bsd")
- NULL =
WINDOWS ? "NUL" : "/dev/null"
- PersistentHTTP =
Persistent::Net::HTTP::Persistent
Class Method Summary
collapse
Class Method Details
.app_cache(custom_path = nil) ⇒ Object
330
331
332
333
|
# File 'lib/bundler.rb', line 330
def app_cache(custom_path = nil)
path = custom_path || root
Pathname.new(path).join(settings.app_cache_path)
end
|
.app_config_path ⇒ Object
316
317
318
319
320
321
322
323
324
325
326
327
328
|
# File 'lib/bundler.rb', line 316
def app_config_path
if app_config = ENV["BUNDLE_APP_CONFIG"]
app_config_pathname = Pathname.new(app_config)
if app_config_pathname.absolute?
app_config_pathname
else
app_config_pathname.expand_path(root)
end
else
root.join(".bundle")
end
end
|
.bin_path ⇒ Object
Returns absolute location of where binstubs are installed to.
126
127
128
129
130
131
132
133
|
# File 'lib/bundler.rb', line 126
def bin_path
@bin_path ||= begin
path = settings[:bin] || "bin"
path = Pathname.new(path).expand_path(root).expand_path
SharedHelpers.filesystem_access(path) {|p| FileUtils.mkdir_p(p) }
path
end
end
|
.bundle_path ⇒ Object
Returns absolute path of where gems are installed on the filesystem.
106
107
108
|
# File 'lib/bundler.rb', line 106
def bundle_path
@bundle_path ||= Pathname.new(configured_bundle_path.path).expand_path(root)
end
|
.bundler_major_version ⇒ Object
6
7
8
|
# File 'lib/bundler/version.rb', line 6
def self.bundler_major_version
@bundler_major_version ||= VERSION.split(".").first.to_i
end
|
.clean_env ⇒ Object
Deprecated.
Use ‘unbundled_env` instead
364
365
366
367
368
369
370
371
372
373
|
# File 'lib/bundler.rb', line 364
def clean_env
Bundler::SharedHelpers.major_deprecation(
2,
"`Bundler.clean_env` has been deprecated in favor of `Bundler.unbundled_env`. " \
"If you instead want the environment before bundler was originally loaded, use `Bundler.original_env`",
:print_caller_location => true
)
unbundled_env
end
|
.clean_exec(*args) ⇒ Object
Deprecated.
Use ‘unbundled_exec` instead
451
452
453
454
455
456
457
458
459
460
|
# File 'lib/bundler.rb', line 451
def clean_exec(*args)
Bundler::SharedHelpers.major_deprecation(
2,
"`Bundler.clean_exec` has been deprecated in favor of `Bundler.unbundled_exec`. " \
"If you instead want to exec to a command in the environment before bundler was originally loaded, use `Bundler.original_exec`",
:print_caller_location => true
)
with_env(unbundled_env) { Kernel.exec(*args) }
end
|
.clean_system(*args) ⇒ Object
Deprecated.
Use ‘unbundled_system` instead
429
430
431
432
433
434
435
436
437
438
|
# File 'lib/bundler.rb', line 429
def clean_system(*args)
Bundler::SharedHelpers.major_deprecation(
2,
"`Bundler.clean_system` has been deprecated in favor of `Bundler.unbundled_system`. " \
"If you instead want to run the command in the environment before bundler was originally loaded, use `Bundler.original_system`",
:print_caller_location => true
)
with_env(unbundled_env) { Kernel.system(*args) }
end
|
.clear_gemspec_cache ⇒ Object
557
558
559
|
# File 'lib/bundler.rb', line 557
def clear_gemspec_cache
@gemspec_cache = {}
end
|
92
93
94
|
# File 'lib/bundler.rb', line 92
def configure
@configured ||= configure_gem_home_and_path
end
|
603
604
605
606
607
|
# File 'lib/bundler.rb', line 603
def configure_gem_home_and_path(path = bundle_path)
configure_gem_path
configure_gem_home(path)
Bundler.rubygems.clear_paths
end
|
121
122
123
|
# File 'lib/bundler.rb', line 121
def configured_bundle_path
@configured_bundle_path ||= settings.path.tap(&:validate!)
end
|
.create_bundle_path ⇒ Object
110
111
112
113
114
115
116
117
118
119
|
# File 'lib/bundler.rb', line 110
def create_bundle_path
SharedHelpers.filesystem_access(bundle_path.to_s) do |p|
mkdir_p(p)
end unless bundle_path.exist?
@bundle_path = bundle_path.realpath
rescue Errno::EEXIST
raise PathError, "Could not install to path `#{bundle_path}` " \
"because a file already exists at that path. Either remove or rename the file so the directory can be created."
end
|
Returns current version of Ruby
7
8
9
|
# File 'lib/bundler/current_ruby.rb', line 7
def self.current_ruby
@current_ruby ||= CurrentRuby.new
end
|
.default_bundle_dir ⇒ Object
.default_gemfile ⇒ Object
.default_lockfile ⇒ Object
Returns an instance of Bundler::Definition for given Gemfile and lockfile
214
215
216
217
218
219
220
|
# File 'lib/bundler.rb', line 214
def definition(unlock = nil)
@definition = nil if unlock
@definition ||= begin
configure
Definition.build(default_gemfile, default_lockfile, unlock)
end
end
|
.environment ⇒ Object
204
205
206
207
|
# File 'lib/bundler.rb', line 204
def environment
SharedHelpers.major_deprecation 2, "Bundler.environment has been removed in favor of Bundler.load", :print_caller_location => true
load
end
|
.feature_flag ⇒ Object
566
567
568
|
# File 'lib/bundler.rb', line 566
def feature_flag
@feature_flag ||= FeatureFlag.new(VERSION)
end
|
.frozen_bundle? ⇒ Boolean
222
223
224
225
226
|
# File 'lib/bundler.rb', line 222
def frozen_bundle?
frozen = settings[:deployment]
frozen ||= settings[:frozen]
frozen
end
|
.gem_version ⇒ Object
10
11
12
|
# File 'lib/bundler/version.rb', line 10
def self.gem_version
@gem_version ||= Gem::Version.create(VERSION)
end
|
.git_present? ⇒ Boolean
561
562
563
564
|
# File 'lib/bundler.rb', line 561
def git_present?
return @git_present if defined?(@git_present)
@git_present = Bundler.which("git#{RbConfig::CONFIG["EXEEXT"]}")
end
|
.home ⇒ Object
294
295
296
|
# File 'lib/bundler.rb', line 294
def home
bundle_path.join("bundler")
end
|
.install_path ⇒ Object
298
299
300
|
# File 'lib/bundler.rb', line 298
def install_path
home.join("gems")
end
|
.load ⇒ Object
200
201
202
|
# File 'lib/bundler.rb', line 200
def load
@load ||= Runtime.new(root, definition)
end
|
.load_gemspec(file, validate = false) ⇒ Object
530
531
532
533
534
535
536
537
|
# File 'lib/bundler.rb', line 530
def load_gemspec(file, validate = false)
@gemspec_cache ||= {}
key = File.expand_path(file)
@gemspec_cache[key] ||= load_gemspec_uncached(file, validate)
@gemspec_cache[key].dup if @gemspec_cache[key]
end
|
.load_gemspec_uncached(file, validate = false) ⇒ Object
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
|
# File 'lib/bundler.rb', line 539
def load_gemspec_uncached(file, validate = false)
path = Pathname.new(file)
contents = read_file(file)
spec = if contents.start_with?("---") eval_yaml_gemspec(path, contents)
else
SharedHelpers.chdir(path.dirname.to_s) do
eval_gemspec(path, contents)
end
end
return unless spec
spec.loaded_from = path.expand_path.to_s
Bundler.rubygems.validate(spec) if validate
spec
end
|
467
468
469
470
|
# File 'lib/bundler.rb', line 467
def local_platform
return Gem::Platform::RUBY if settings[:force_ruby_platform]
Gem::Platform.local
end
|
.mkdir_p(path, options = {}) ⇒ Object
238
239
240
241
242
|
# File 'lib/bundler.rb', line 238
def most_specific_locked_platform?(platform)
return false unless defined?(@definition) && @definition
definition.most_specific_locked_platform == platform
end
|
.original_env ⇒ Hash
Returns Environment present before Bundler was activated.
359
360
361
|
# File 'lib/bundler.rb', line 359
def original_env
ORIGINAL_ENV.clone
end
|
.original_exec(*args) ⇒ Object
Run a ‘Kernel.exec` to a subcommand with the environment present before Bundler was activated
446
447
448
|
# File 'lib/bundler.rb', line 446
def original_exec(*args)
with_original_env { Kernel.exec(*args) }
end
|
.original_system(*args) ⇒ Object
Run subcommand with the environment present before Bundler was activated
424
425
426
|
# File 'lib/bundler.rb', line 424
def original_system(*args)
with_original_env { Kernel.system(*args) }
end
|
.preferred_gemfile_name ⇒ Object
493
494
495
|
# File 'lib/bundler.rb', line 493
def preferred_gemfile_name
Bundler.settings[:init_gems_rb] ? "gems.rb" : "Gemfile"
end
|
.read_file(file) ⇒ Object
520
521
522
523
524
|
# File 'lib/bundler.rb', line 520
def read_file(file)
SharedHelpers.filesystem_access(file, :read) do
File.open(file, "r:UTF-8", &:read)
end
end
|
.require(*groups) ⇒ Object
Setups Bundler environment (see Bundler.setup) if it is not already set, and loads all gems from groups specified. Unlike ::setup, can be called multiple times with different groups (if they were allowed by setup).
Assuming Gemfile
gem 'first_gem', '= 1.0'
group :test do
gem 'second_gem', '= 1.0'
end
The code will work as follows:
Bundler.setup Bundler.require(:default) Bundler.require(:test)
196
197
198
|
# File 'lib/bundler.rb', line 196
def require(*groups)
setup(*groups).require(*groups)
end
|
.require_thor_actions ⇒ Object
4
5
6
|
# File 'lib/bundler/vendored_thor.rb', line 4
def self.require_thor_actions
require_relative "vendor/thor/lib/thor/actions"
end
|
.reset! ⇒ Object
570
571
572
573
574
|
# File 'lib/bundler.rb', line 570
def reset!
reset_paths!
Plugin.reset!
reset_rubygems!
end
|
.reset_paths! ⇒ Object
581
582
583
584
585
586
587
588
589
590
591
592
593
594
|
# File 'lib/bundler.rb', line 581
def reset_paths!
@bin_path = nil
@bundler_major_version = nil
@bundle_path = nil
@configured = nil
@configured_bundle_path = nil
@definition = nil
@load = nil
@locked_gems = nil
@root = nil
@settings = nil
@setup = nil
@user_home = nil
end
|
.reset_rubygems! ⇒ Object
596
597
598
599
600
601
|
# File 'lib/bundler.rb', line 596
def reset_rubygems!
return unless defined?(@rubygems) && @rubygems
rubygems.undo_replacements
rubygems.reset
@rubygems = nil
end
|
.reset_settings_and_root! ⇒ Object
576
577
578
579
|
# File 'lib/bundler.rb', line 576
def reset_settings_and_root!
@settings = nil
@root = nil
end
|
.rm_rf(path) ⇒ Object
340
341
342
343
344
345
346
347
348
349
350
|
# File 'lib/bundler.rb', line 340
def rm_rf(path)
FileUtils.remove_entry_secure(path) if path && File.exist?(path)
rescue ArgumentError
message = <<EOF
It is a security vulnerability to allow your home directory to be world-writable, and bundler cannot continue.
You should probably consider fixing this issue by running `chmod o-w ~` on *nix.
Please refer to https://ruby-doc.org/stdlib-3.1.2/libdoc/fileutils/rdoc/FileUtils.html#method-c-remove_entry_secure for details.
EOF
File.world_writable?(path) ? Bundler.ui.warn(message) : raise
raise PathError, "Please fix the world-writable issue with your #{path} directory"
end
|
.root ⇒ Object
306
307
308
309
310
311
312
313
314
|
# File 'lib/bundler.rb', line 306
def root
@root ||= begin
SharedHelpers.root
rescue GemfileNotFound
bundle_dir = default_bundle_dir
raise GemfileNotFound, "Could not locate Gemfile or .bundle/ directory" unless bundle_dir
Pathname.new(File.expand_path("..", bundle_dir))
end
end
|
.ruby_scope ⇒ Object
244
245
246
|
# File 'lib/bundler.rb', line 244
def ruby_scope
"#{Bundler.rubygems.ruby_engine}/#{RbConfig::CONFIG["ruby_version"]}"
end
|
.rubygems ⇒ Object
559
560
561
|
# File 'lib/bundler/rubygems_integration.rb', line 559
def self.rubygems
@rubygems ||= RubygemsIntegration.new
end
|
.safe_load_marshal(data) ⇒ Object
526
527
528
|
# File 'lib/bundler.rb', line 526
def safe_load_marshal(data)
load_marshal(data, :marshal_proc => SAFE_MARSHAL_PROC)
end
|
.self_manager ⇒ Object
609
610
611
612
613
614
|
# File 'lib/bundler.rb', line 609
def self_manager
@self_manager ||= begin
require_relative "bundler/self_manager"
Bundler::SelfManager.new
end
end
|
.settings ⇒ Object
352
353
354
355
356
|
# File 'lib/bundler.rb', line 352
def settings
@settings ||= Settings.new(app_config_path)
rescue GemfileNotFound
@settings = Settings.new(Pathname.new(".bundle").expand_path)
end
|
.setup(*groups) ⇒ Object
Turns on the Bundler runtime. After Bundler.setup
call, all load
or require
of the gems would be allowed only if they are part of the Gemfile or Ruby’s standard library. If the versions specified in Gemfile, only those versions would be loaded.
Assuming Gemfile
gem 'first_gem', '= 1.0'
group :test do
gem 'second_gem', '= 1.0'
end
The code using Bundler.setup works as follows:
require 'third_gem' require 'first_gem' Bundler.setup
require 'fourth_gem' require 'second_gem'
Bundler.setup
can be called only once, all subsequent calls are no-op.
If groups list is provided, only gems from specified groups would be allowed (gems specified outside groups belong to special :default
group).
To require all gems from Gemfile (or only some groups), see Bundler.require.
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
|
# File 'lib/bundler.rb', line 162
def setup(*groups)
return @setup if defined?(@setup) && @setup
definition.validate_runtime!
SharedHelpers.print_major_deprecations!
if groups.empty?
@setup = load.setup
else
load.setup(*groups)
end
end
|
.specs_path ⇒ Object
302
303
304
|
# File 'lib/bundler.rb', line 302
def specs_path
bundle_path.join("specifications")
end
|
.system_bindir ⇒ Object
484
485
486
487
488
489
490
491
|
# File 'lib/bundler.rb', line 484
def system_bindir
Bundler.settings[:system_bindir] || Bundler.rubygems.gem_bindir
end
|
.tmp(name = Process.pid.to_s) ⇒ Object
335
336
337
338
|
# File 'lib/bundler.rb', line 335
def tmp(name = Process.pid.to_s)
Kernel.send(:require, "tmpdir")
Pathname.new(Dir.mktmpdir(["bundler", name]))
end
|
.ui ⇒ Object
96
97
98
|
# File 'lib/bundler.rb', line 96
def ui
(defined?(@ui) && @ui) || (self.ui = UI::Shell.new)
end
|
.unbundled_env ⇒ Hash
Returns Environment with all bundler-related variables removed.
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
|
# File 'lib/bundler.rb', line 376
def unbundled_env
env = original_env
if env.key?("BUNDLER_ORIG_MANPATH")
env["MANPATH"] = env["BUNDLER_ORIG_MANPATH"]
end
env.delete_if {|k, _| k[0, 7] == "BUNDLE_" }
if env.key?("RUBYOPT")
rubyopt = env["RUBYOPT"].split(" ")
rubyopt.delete("-r#{File.expand_path("bundler/setup", __dir__)}")
rubyopt.delete("-rbundler/setup")
env["RUBYOPT"] = rubyopt.join(" ")
end
if env.key?("RUBYLIB")
rubylib = env["RUBYLIB"].split(File::PATH_SEPARATOR)
rubylib.delete(__dir__)
env["RUBYLIB"] = rubylib.join(File::PATH_SEPARATOR)
end
env
end
|
.unbundled_exec(*args) ⇒ Object
Run a ‘Kernel.exec` to a subcommand in an environment with all bundler related variables removed
463
464
465
|
# File 'lib/bundler.rb', line 463
def unbundled_exec(*args)
with_env(unbundled_env) { Kernel.exec(*args) }
end
|
.unbundled_system(*args) ⇒ Object
Run subcommand in an environment with all bundler related variables removed
441
442
443
|
# File 'lib/bundler.rb', line 441
def unbundled_system(*args)
with_unbundled_env { Kernel.system(*args) }
end
|
.URI(uri) ⇒ Object
Returns uri
converted to an Bundler::URI object.
718
719
720
721
722
723
724
725
726
727
|
# File 'lib/bundler/vendor/uri/lib/uri/common.rb', line 718
def URI(uri)
if uri.is_a?(Bundler::URI::Generic)
uri
elsif uri = String.try_convert(uri)
Bundler::URI.parse(uri)
else
raise ArgumentError,
"bad argument (expected Bundler::URI object or Bundler::URI string)"
end
end
|
.use_system_gems? ⇒ Boolean
497
498
499
|
# File 'lib/bundler.rb', line 497
def use_system_gems?
configured_bundle_path.use_system_gems?
end
|
.user_bundle_path(dir = "home") ⇒ Object
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
|
# File 'lib/bundler.rb', line 272
def user_bundle_path(dir = "home")
env_var, fallback = case dir
when "home"
["BUNDLE_USER_HOME", proc { Pathname.new(user_home).join(".bundle") }]
when "cache"
["BUNDLE_USER_CACHE", proc { user_bundle_path.join("cache") }]
when "config"
["BUNDLE_USER_CONFIG", proc { user_bundle_path.join("config") }]
when "plugin"
["BUNDLE_USER_PLUGIN", proc { user_bundle_path.join("plugin") }]
else
raise BundlerError, "Unknown user path requested: #{dir}"
end
Pathname.new(ENV.fetch(env_var, &fallback))
end
|
.user_cache ⇒ Object
290
291
292
|
# File 'lib/bundler.rb', line 290
def user_cache
user_bundle_path("cache")
end
|
.user_home ⇒ Object
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
|
# File 'lib/bundler.rb', line 248
def user_home
@user_home ||= begin
home = Bundler.rubygems.user_home
bundle_home = home ? File.join(home, ".bundle") : nil
warning = if home.nil?
"Your home directory is not set."
elsif !File.directory?(home)
"`#{home}` is not a directory."
elsif !File.writable?(home) && (!File.directory?(bundle_home) || !File.writable?(bundle_home))
"`#{home}` is not writable."
end
if warning
Bundler.ui.warn "#{warning}\n"
user_home = tmp_home_path
Bundler.ui.warn "Bundler will use `#{user_home}' as your home directory temporarily.\n"
user_home
else
Pathname.new(home)
end
end
end
|
.which(executable) ⇒ Object
507
508
509
510
511
512
513
514
515
516
517
518
|
# File 'lib/bundler.rb', line 507
def which(executable)
if File.file?(executable) && File.executable?(executable)
executable
elsif paths = ENV["PATH"]
quote = '"'
paths.split(File::PATH_SEPARATOR).find do |path|
path = path[1..-2] if path.start_with?(quote) && path.end_with?(quote)
executable_path = File.expand_path(executable, path)
return executable_path if File.file?(executable_path) && File.executable?(executable_path)
end
end
end
|
.with_clean_env ⇒ Object
Deprecated.
Use ‘with_unbundled_env` instead
407
408
409
410
411
412
413
414
415
416
|
# File 'lib/bundler.rb', line 407
def with_clean_env
Bundler::SharedHelpers.major_deprecation(
2,
"`Bundler.with_clean_env` has been deprecated in favor of `Bundler.with_unbundled_env`. " \
"If you instead want the environment before bundler was originally loaded, use `Bundler.with_original_env`",
:print_caller_location => true
)
with_env(unbundled_env) { yield }
end
|
.with_friendly_errors ⇒ Object
.with_original_env ⇒ Object
Run block with environment present before Bundler was activated
402
403
404
|
# File 'lib/bundler.rb', line 402
def with_original_env
with_env(original_env) { yield }
end
|
.with_unbundled_env ⇒ Object
Run block with all bundler-related variables removed
419
420
421
|
# File 'lib/bundler.rb', line 419
def with_unbundled_env
with_env(unbundled_env) { yield }
end
|