File: C:/Ruby27-x64/share/doc/ruby/html/Bundler.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module Bundler - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "./";
var index_rel_prefix = "./";
</script>
<script src="./js/navigation.js" defer></script>
<script src="./js/search.js" defer></script>
<script src="./js/search_index.js" defer></script>
<script src="./js/searcher.js" defer></script>
<script src="./js/darkfish.js" defer></script>
<link href="./css/fonts.css" rel="stylesheet">
<link href="./css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="./index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="./table_of_contents.html#pages">Pages</a>
<a href="./table_of_contents.html#classes">Classes</a>
<a href="./table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-URI">::URI</a>
<li ><a href="#method-c-app_cache">::app_cache</a>
<li ><a href="#method-c-app_config_path">::app_config_path</a>
<li ><a href="#method-c-bin_path">::bin_path</a>
<li ><a href="#method-c-bundle_path">::bundle_path</a>
<li ><a href="#method-c-bundler_major_version">::bundler_major_version</a>
<li ><a href="#method-c-clean_env">::clean_env</a>
<li ><a href="#method-c-clean_exec">::clean_exec</a>
<li ><a href="#method-c-clean_system">::clean_system</a>
<li ><a href="#method-c-clear_gemspec_cache">::clear_gemspec_cache</a>
<li ><a href="#method-c-configure">::configure</a>
<li ><a href="#method-c-configure_gem_home">::configure_gem_home</a>
<li ><a href="#method-c-configure_gem_home_and_path">::configure_gem_home_and_path</a>
<li ><a href="#method-c-configure_gem_path">::configure_gem_path</a>
<li ><a href="#method-c-configured_bundle_path">::configured_bundle_path</a>
<li ><a href="#method-c-current_ruby">::current_ruby</a>
<li ><a href="#method-c-default_bundle_dir">::default_bundle_dir</a>
<li ><a href="#method-c-default_gemfile">::default_gemfile</a>
<li ><a href="#method-c-default_lockfile">::default_lockfile</a>
<li ><a href="#method-c-definition">::definition</a>
<li ><a href="#method-c-environment">::environment</a>
<li ><a href="#method-c-eval_gemspec">::eval_gemspec</a>
<li ><a href="#method-c-eval_yaml_gemspec">::eval_yaml_gemspec</a>
<li ><a href="#method-c-feature_flag">::feature_flag</a>
<li ><a href="#method-c-frozen_bundle-3F">::frozen_bundle?</a>
<li ><a href="#method-c-git_present-3F">::git_present?</a>
<li ><a href="#method-c-home">::home</a>
<li ><a href="#method-c-install_path">::install_path</a>
<li ><a href="#method-c-load">::load</a>
<li ><a href="#method-c-load_gemspec">::load_gemspec</a>
<li ><a href="#method-c-load_gemspec_uncached">::load_gemspec_uncached</a>
<li ><a href="#method-c-load_marshal">::load_marshal</a>
<li ><a href="#method-c-local_platform">::local_platform</a>
<li ><a href="#method-c-locked_gems">::locked_gems</a>
<li ><a href="#method-c-mkdir_p">::mkdir_p</a>
<li ><a href="#method-c-original_env">::original_env</a>
<li ><a href="#method-c-original_exec">::original_exec</a>
<li ><a href="#method-c-original_system">::original_system</a>
<li ><a href="#method-c-read_file">::read_file</a>
<li ><a href="#method-c-require">::require</a>
<li ><a href="#method-c-require_thor_actions">::require_thor_actions</a>
<li ><a href="#method-c-requires_sudo-3F">::requires_sudo?</a>
<li ><a href="#method-c-reset-21">::reset!</a>
<li ><a href="#method-c-reset_paths-21">::reset_paths!</a>
<li ><a href="#method-c-reset_rubygems-21">::reset_rubygems!</a>
<li ><a href="#method-c-rm_rf">::rm_rf</a>
<li ><a href="#method-c-root">::root</a>
<li ><a href="#method-c-ruby_scope">::ruby_scope</a>
<li ><a href="#method-c-rubygems">::rubygems</a>
<li ><a href="#method-c-settings">::settings</a>
<li ><a href="#method-c-setup">::setup</a>
<li ><a href="#method-c-specs_path">::specs_path</a>
<li ><a href="#method-c-sudo">::sudo</a>
<li ><a href="#method-c-system_bindir">::system_bindir</a>
<li ><a href="#method-c-tmp">::tmp</a>
<li ><a href="#method-c-tmp_home_path">::tmp_home_path</a>
<li ><a href="#method-c-ui">::ui</a>
<li ><a href="#method-c-ui-3D">::ui=</a>
<li ><a href="#method-c-unbundled_env">::unbundled_env</a>
<li ><a href="#method-c-unbundled_exec">::unbundled_exec</a>
<li ><a href="#method-c-unbundled_system">::unbundled_system</a>
<li ><a href="#method-c-use_system_gems-3F">::use_system_gems?</a>
<li ><a href="#method-c-user_bundle_path">::user_bundle_path</a>
<li ><a href="#method-c-user_cache">::user_cache</a>
<li ><a href="#method-c-user_home">::user_home</a>
<li ><a href="#method-c-which">::which</a>
<li ><a href="#method-c-with_clean_env">::with_clean_env</a>
<li ><a href="#method-c-with_env">::with_env</a>
<li ><a href="#method-c-with_friendly_errors">::with_friendly_errors</a>
<li ><a href="#method-c-with_original_env">::with_original_env</a>
<li ><a href="#method-c-with_unbundled_env">::with_unbundled_env</a>
<li ><a href="#method-i-URI">#URI</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="module-Bundler">
<h1 id="module-Bundler" class="module">
module Bundler
</h1>
<section class="description">
<p><a href="Bundler.html"><code>Bundler</code></a> provides a consistent environment for Ruby projects by tracking and installing the exact gems and versions that are needed.</p>
<p>Since Ruby 2.6, <a href="Bundler.html"><code>Bundler</code></a> is a part of Ruby's standard library.</p>
<p>Bunder is used by creating <em>gemfiles</em> listing all the project dependencies and (optionally) their versions and then using</p>
<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">'bundler/setup'</span>
</pre>
<p>or <a href="Bundler.html#method-c-setup"><code>Bundler.setup</code></a> to setup environment where only specified gems and their specified versions could be used.</p>
<p>See <a href="https://bundler.io/docs.html">Bundler website</a> for extensive documentation on gemfiles creation and <a href="Bundler.html"><code>Bundler</code></a> usage.</p>
<p>As a standard library inside project, <a href="Bundler.html"><code>Bundler</code></a> could be used for introspection of loaded and required modules.</p>
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section class="constants-list">
<header>
<h3>Constants</h3>
</header>
<dl>
<dt id="Deprecate">Deprecate
<dd>
<dt id="FREEBSD">FREEBSD
<dd>
<dt id="NULL">NULL
<dd>
<dt id="ORIGINAL_ENV">ORIGINAL_ENV
<dd>
<dt id="SUDO_MUTEX">SUDO_MUTEX
<dd>
<dt id="VERSION">VERSION
<dd>
<dt id="WINDOWS">WINDOWS
<dd>
<dt id="YamlLibrarySyntaxError">YamlLibrarySyntaxError
<dd>
</dl>
</section>
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-URI" class="method-detail ">
<div class="method-heading">
<span class="method-name">URI</span><span
class="method-args">(uri)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns <code>uri</code> converted to an <a href="Bundler/URI.html"><code>Bundler::URI</code></a> object.</p>
<div class="method-source-code" id="URI-source">
<pre><span class="ruby-comment"># File lib/bundler/vendor/uri/lib/uri/common.rb, line 733</span>
<span class="ruby-keyword">def</span> <span class="ruby-constant">URI</span>(<span class="ruby-identifier ruby-title">uri</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Bundler</span><span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">uri</span>
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">uri</span> = <span class="ruby-constant">String</span>.<span class="ruby-identifier">try_convert</span>(<span class="ruby-identifier">uri</span>)
<span class="ruby-constant">Bundler</span><span class="ruby-operator">::</span><span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">uri</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>,
<span class="ruby-string">"bad argument (expected Bundler::URI object or Bundler::URI string)"</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-app_cache" class="method-detail ">
<div class="method-heading">
<span class="method-name">app_cache</span><span
class="method-args">(custom_path = nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="app_cache-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 294</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">app_cache</span>(<span class="ruby-identifier">custom_path</span> = <span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">path</span> = <span class="ruby-identifier">custom_path</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">root</span>
<span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">path</span>).<span class="ruby-identifier">join</span>(<span class="ruby-identifier">settings</span>.<span class="ruby-identifier">app_cache_path</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-app_config_path" class="method-detail ">
<div class="method-heading">
<span class="method-name">app_config_path</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="app_config_path-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 286</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">app_config_path</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">app_config</span> = <span class="ruby-constant">ENV</span>[<span class="ruby-string">"BUNDLE_APP_CONFIG"</span>]
<span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">app_config</span>).<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">root</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">root</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">".bundle"</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-bin_path" class="method-detail ">
<div class="method-heading">
<span class="method-name">bin_path</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns absolute location of where binstubs are installed to.</p>
<div class="method-source-code" id="bin_path-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 103</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">bin_path</span>
<span class="ruby-ivar">@bin_path</span> <span class="ruby-operator">||=</span> <span class="ruby-keyword">begin</span>
<span class="ruby-identifier">path</span> = <span class="ruby-identifier">settings</span>[<span class="ruby-value">:bin</span>] <span class="ruby-operator">||</span> <span class="ruby-string">"bin"</span>
<span class="ruby-identifier">path</span> = <span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">path</span>).<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">root</span>).<span class="ruby-identifier">expand_path</span>
<span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">filesystem_access</span>(<span class="ruby-identifier">path</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mkdir_p</span>(<span class="ruby-identifier">p</span>) }
<span class="ruby-identifier">path</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-bundle_path" class="method-detail ">
<div class="method-heading">
<span class="method-name">bundle_path</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns absolute path of where gems are installed on the filesystem.</p>
<div class="method-source-code" id="bundle_path-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 94</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">bundle_path</span>
<span class="ruby-ivar">@bundle_path</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">configured_bundle_path</span>.<span class="ruby-identifier">path</span>).<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">root</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-bundler_major_version" class="method-detail ">
<div class="method-heading">
<span class="method-name">bundler_major_version</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="bundler_major_version-source">
<pre><span class="ruby-comment"># File lib/bundler/version.rb, line 6</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">bundler_major_version</span>
<span class="ruby-ivar">@bundler_major_version</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">VERSION</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">"."</span>).<span class="ruby-identifier">first</span>.<span class="ruby-identifier">to_i</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-clean_env" class="method-detail ">
<div class="method-heading">
<span class="method-name">clean_env</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>@deprecated Use `unbundled_env` instead</p>
<div class="method-source-code" id="clean_env-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 328</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">clean_env</span>
<span class="ruby-constant">Bundler</span><span class="ruby-operator">::</span><span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">major_deprecation</span>(
<span class="ruby-value">2</span>,
<span class="ruby-string">"`Bundler.clean_env` has been deprecated in favor of `Bundler.unbundled_env`. "</span> \
<span class="ruby-string">"If you instead want the environment before bundler was originally loaded, use `Bundler.original_env`"</span>,
<span class="ruby-value">:print_caller_location</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>
)
<span class="ruby-identifier">unbundled_env</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-clean_exec" class="method-detail ">
<div class="method-heading">
<span class="method-name">clean_exec</span><span
class="method-args">(*args)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>@deprecated Use `unbundled_exec` instead</p>
<div class="method-source-code" id="clean_exec-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 412</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">clean_exec</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-constant">Bundler</span><span class="ruby-operator">::</span><span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">major_deprecation</span>(
<span class="ruby-value">2</span>,
<span class="ruby-string">"`Bundler.clean_exec` has been deprecated in favor of `Bundler.unbundled_exec`. "</span> \
<span class="ruby-string">"If you instead want to exec to a command in the environment before bundler was originally loaded, use `Bundler.original_exec`"</span>,
<span class="ruby-value">:print_caller_location</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>
)
<span class="ruby-identifier">with_env</span>(<span class="ruby-identifier">unbundled_env</span>) { <span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">exec</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>) }
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-clean_system" class="method-detail ">
<div class="method-heading">
<span class="method-name">clean_system</span><span
class="method-args">(*args)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>@deprecated Use `unbundled_system` instead</p>
<div class="method-source-code" id="clean_system-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 390</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">clean_system</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-constant">Bundler</span><span class="ruby-operator">::</span><span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">major_deprecation</span>(
<span class="ruby-value">2</span>,
<span class="ruby-string">"`Bundler.clean_system` has been deprecated in favor of `Bundler.unbundled_system`. "</span> \
<span class="ruby-string">"If you instead want to run the command in the environment before bundler was originally loaded, use `Bundler.original_system`"</span>,
<span class="ruby-value">:print_caller_location</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>
)
<span class="ruby-identifier">with_env</span>(<span class="ruby-identifier">unbundled_env</span>) { <span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">system</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>) }
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-clear_gemspec_cache" class="method-detail ">
<div class="method-heading">
<span class="method-name">clear_gemspec_cache</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="clear_gemspec_cache-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 572</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">clear_gemspec_cache</span>
<span class="ruby-ivar">@gemspec_cache</span> = {}
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-configure" class="method-detail ">
<div class="method-heading">
<span class="method-name">configure</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="configure-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 80</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">configure</span>
<span class="ruby-ivar">@configured</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">configure_gem_home_and_path</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-configured_bundle_path" class="method-detail ">
<div class="method-heading">
<span class="method-name">configured_bundle_path</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="configured_bundle_path-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 98</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">configured_bundle_path</span>
<span class="ruby-ivar">@configured_bundle_path</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">settings</span>.<span class="ruby-identifier">path</span>.<span class="ruby-identifier">tap</span>(<span class="ruby-operator">&</span><span class="ruby-value">:validate!</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-current_ruby" class="method-detail ">
<div class="method-heading">
<span class="method-name">current_ruby</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns current version of Ruby</p>
<p>@return [CurrentRuby] Current version of Ruby</p>
<div class="method-source-code" id="current_ruby-source">
<pre><span class="ruby-comment"># File lib/bundler/current_ruby.rb, line 7</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">current_ruby</span>
<span class="ruby-ivar">@current_ruby</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">CurrentRuby</span>.<span class="ruby-identifier">new</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-default_bundle_dir" class="method-detail ">
<div class="method-heading">
<span class="method-name">default_bundle_dir</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="default_bundle_dir-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 441</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">default_bundle_dir</span>
<span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">default_bundle_dir</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-default_gemfile" class="method-detail ">
<div class="method-heading">
<span class="method-name">default_gemfile</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="default_gemfile-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 433</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">default_gemfile</span>
<span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">default_gemfile</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-default_lockfile" class="method-detail ">
<div class="method-heading">
<span class="method-name">default_lockfile</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="default_lockfile-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 437</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">default_lockfile</span>
<span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">default_lockfile</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-definition" class="method-detail ">
<div class="method-heading">
<span class="method-name">definition</span><span
class="method-args">(unlock = nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns an instance of <a href="Bundler/Definition.html"><code>Bundler::Definition</code></a> for given Gemfile and lockfile</p>
<p>@param unlock [Hash, Boolean, nil] Gems that have been requested</p>
<pre class="ruby"><span class="ruby-identifier">to</span> <span class="ruby-identifier">be</span> <span class="ruby-identifier">updated</span> <span class="ruby-keyword">or</span> <span class="ruby-keyword">true</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">all</span> <span class="ruby-identifier">gems</span> <span class="ruby-identifier">should</span> <span class="ruby-identifier">be</span> <span class="ruby-identifier">updated</span>
</pre>
<p>@return [Bundler::Definition]</p>
<div class="method-source-code" id="definition-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 191</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">definition</span>(<span class="ruby-identifier">unlock</span> = <span class="ruby-keyword">nil</span>)
<span class="ruby-ivar">@definition</span> = <span class="ruby-keyword">nil</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">unlock</span>
<span class="ruby-ivar">@definition</span> <span class="ruby-operator">||=</span> <span class="ruby-keyword">begin</span>
<span class="ruby-identifier">configure</span>
<span class="ruby-constant">Definition</span>.<span class="ruby-identifier">build</span>(<span class="ruby-identifier">default_gemfile</span>, <span class="ruby-identifier">default_lockfile</span>, <span class="ruby-identifier">unlock</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-environment" class="method-detail ">
<div class="method-heading">
<span class="method-name">environment</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="environment-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 181</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">environment</span>
<span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">major_deprecation</span> <span class="ruby-value">2</span>, <span class="ruby-string">"Bundler.environment has been removed in favor of Bundler.load"</span>, <span class="ruby-value">:print_caller_location</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>
<span class="ruby-identifier">load</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-feature_flag" class="method-detail ">
<div class="method-heading">
<span class="method-name">feature_flag</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="feature_flag-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 581</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">feature_flag</span>
<span class="ruby-ivar">@feature_flag</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">FeatureFlag</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">VERSION</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-frozen_bundle-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">frozen_bundle?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="frozen_bundle-3F-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 199</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">frozen_bundle?</span>
<span class="ruby-identifier">frozen</span> = <span class="ruby-identifier">settings</span>[<span class="ruby-value">:deployment</span>]
<span class="ruby-identifier">frozen</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">settings</span>[<span class="ruby-value">:frozen</span>] <span class="ruby-keyword">unless</span> <span class="ruby-identifier">feature_flag</span>.<span class="ruby-identifier">deployment_means_frozen?</span>
<span class="ruby-identifier">frozen</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-git_present-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">git_present?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="git_present-3F-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 576</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">git_present?</span>
<span class="ruby-keyword">return</span> <span class="ruby-ivar">@git_present</span> <span class="ruby-keyword">if</span> <span class="ruby-keyword">defined?</span>(<span class="ruby-ivar">@git_present</span>)
<span class="ruby-ivar">@git_present</span> = <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">which</span>(<span class="ruby-string">"git"</span>) <span class="ruby-operator">||</span> <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">which</span>(<span class="ruby-string">"git.exe"</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-home" class="method-detail ">
<div class="method-heading">
<span class="method-name">home</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="home-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 264</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">home</span>
<span class="ruby-identifier">bundle_path</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">"bundler"</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-install_path" class="method-detail ">
<div class="method-heading">
<span class="method-name">install_path</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="install_path-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 268</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">install_path</span>
<span class="ruby-identifier">home</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">"gems"</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-load" class="method-detail ">
<div class="method-heading">
<span class="method-name">load</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="load-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 177</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">load</span>
<span class="ruby-ivar">@load</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Runtime</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">root</span>, <span class="ruby-identifier">definition</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-load_gemspec" class="method-detail ">
<div class="method-heading">
<span class="method-name">load_gemspec</span><span
class="method-args">(file, validate = false)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="load_gemspec-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 545</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">load_gemspec</span>(<span class="ruby-identifier">file</span>, <span class="ruby-identifier">validate</span> = <span class="ruby-keyword">false</span>)
<span class="ruby-ivar">@gemspec_cache</span> <span class="ruby-operator">||=</span> {}
<span class="ruby-identifier">key</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">file</span>)
<span class="ruby-ivar">@gemspec_cache</span>[<span class="ruby-identifier">key</span>] <span class="ruby-operator">||=</span> <span class="ruby-identifier">load_gemspec_uncached</span>(<span class="ruby-identifier">file</span>, <span class="ruby-identifier">validate</span>)
<span class="ruby-comment"># Protect against caching side-effected gemspecs by returning a</span>
<span class="ruby-comment"># new instance each time.</span>
<span class="ruby-ivar">@gemspec_cache</span>[<span class="ruby-identifier">key</span>].<span class="ruby-identifier">dup</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@gemspec_cache</span>[<span class="ruby-identifier">key</span>]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-load_gemspec_uncached" class="method-detail ">
<div class="method-heading">
<span class="method-name">load_gemspec_uncached</span><span
class="method-args">(file, validate = false)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="load_gemspec_uncached-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 554</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">load_gemspec_uncached</span>(<span class="ruby-identifier">file</span>, <span class="ruby-identifier">validate</span> = <span class="ruby-keyword">false</span>)
<span class="ruby-identifier">path</span> = <span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">file</span>)
<span class="ruby-identifier">contents</span> = <span class="ruby-identifier">read_file</span>(<span class="ruby-identifier">file</span>)
<span class="ruby-identifier">spec</span> = <span class="ruby-keyword">if</span> <span class="ruby-identifier">contents</span>.<span class="ruby-identifier">start_with?</span>(<span class="ruby-string">"---"</span>) <span class="ruby-comment"># YAML header</span>
<span class="ruby-identifier">eval_yaml_gemspec</span>(<span class="ruby-identifier">path</span>, <span class="ruby-identifier">contents</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-comment"># Eval the gemspec from its parent directory, because some gemspecs</span>
<span class="ruby-comment"># depend on "./" relative paths.</span>
<span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">chdir</span>(<span class="ruby-identifier">path</span>.<span class="ruby-identifier">dirname</span>.<span class="ruby-identifier">to_s</span>) <span class="ruby-keyword">do</span>
<span class="ruby-identifier">eval_gemspec</span>(<span class="ruby-identifier">path</span>, <span class="ruby-identifier">contents</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">spec</span>
<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">loaded_from</span> = <span class="ruby-identifier">path</span>.<span class="ruby-identifier">expand_path</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rubygems</span>.<span class="ruby-identifier">validate</span>(<span class="ruby-identifier">spec</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">validate</span>
<span class="ruby-identifier">spec</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-load_marshal" class="method-detail ">
<div class="method-heading">
<span class="method-name">load_marshal</span><span
class="method-args">(data)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="load_marshal-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 539</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">load_marshal</span>(<span class="ruby-identifier">data</span>)
<span class="ruby-constant">Marshal</span>.<span class="ruby-identifier">load</span>(<span class="ruby-identifier">data</span>)
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">StandardError</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">e</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">MarshalError</span>, <span class="ruby-node">"#{e.class}: #{e.message}"</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-local_platform" class="method-detail ">
<div class="method-heading">
<span class="method-name">local_platform</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="local_platform-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 428</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">local_platform</span>
<span class="ruby-keyword">return</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Platform</span><span class="ruby-operator">::</span><span class="ruby-constant">RUBY</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">settings</span>[<span class="ruby-value">:force_ruby_platform</span>]
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Platform</span>.<span class="ruby-identifier">local</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-locked_gems" class="method-detail ">
<div class="method-heading">
<span class="method-name">locked_gems</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="locked_gems-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 205</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">locked_gems</span>
<span class="ruby-ivar">@locked_gems</span> <span class="ruby-operator">||=</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">defined?</span>(<span class="ruby-ivar">@definition</span>) <span class="ruby-operator">&&</span> <span class="ruby-ivar">@definition</span>
<span class="ruby-identifier">definition</span>.<span class="ruby-identifier">locked_gems</span>
<span class="ruby-keyword">elsif</span> <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">default_lockfile</span>.<span class="ruby-identifier">file?</span>
<span class="ruby-identifier">lock</span> = <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">read_file</span>(<span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">default_lockfile</span>)
<span class="ruby-constant">LockfileParser</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">lock</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-mkdir_p" class="method-detail ">
<div class="method-heading">
<span class="method-name">mkdir_p</span><span
class="method-args">(path, options = {})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="mkdir_p-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 486</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">mkdir_p</span>(<span class="ruby-identifier">path</span>, <span class="ruby-identifier">options</span> = {})
<span class="ruby-keyword">if</span> <span class="ruby-identifier">requires_sudo?</span> <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-identifier">options</span>[<span class="ruby-value">:no_sudo</span>]
<span class="ruby-identifier">sudo</span> <span class="ruby-node">"mkdir -p '#{path}'"</span> <span class="ruby-keyword">unless</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">path</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">filesystem_access</span>(<span class="ruby-identifier">path</span>, <span class="ruby-value">:write</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span>
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mkdir_p</span>(<span class="ruby-identifier">p</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-original_env" class="method-detail ">
<div class="method-heading">
<span class="method-name">original_env</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>@return [Hash] Environment present before <a href="Bundler.html"><code>Bundler</code></a> was activated</p>
<div class="method-source-code" id="original_env-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 323</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">original_env</span>
<span class="ruby-constant">ORIGINAL_ENV</span>.<span class="ruby-identifier">clone</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-original_exec" class="method-detail ">
<div class="method-heading">
<span class="method-name">original_exec</span><span
class="method-args">(*args)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Run a `Kernel.exec` to a subcommand with the environment present before <a href="Bundler.html"><code>Bundler</code></a> was activated</p>
<div class="method-source-code" id="original_exec-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 407</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">original_exec</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-identifier">with_original_env</span> { <span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">exec</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>) }
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-original_system" class="method-detail ">
<div class="method-heading">
<span class="method-name">original_system</span><span
class="method-args">(*args)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Run subcommand with the environment present before <a href="Bundler.html"><code>Bundler</code></a> was activated</p>
<div class="method-source-code" id="original_system-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 385</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">original_system</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-identifier">with_original_env</span> { <span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">system</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>) }
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-read_file" class="method-detail ">
<div class="method-heading">
<span class="method-name">read_file</span><span
class="method-args">(file)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="read_file-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 533</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">read_file</span>(<span class="ruby-identifier">file</span>)
<span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">filesystem_access</span>(<span class="ruby-identifier">file</span>, <span class="ruby-value">:read</span>) <span class="ruby-keyword">do</span>
<span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">file</span>, <span class="ruby-string">"r:UTF-8"</span>, <span class="ruby-operator">&</span><span class="ruby-value">:read</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-require" class="method-detail ">
<div class="method-heading">
<span class="method-name">require</span><span
class="method-args">(*groups)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Setups <a href="Bundler.html"><code>Bundler</code></a> environment (see <a href="Bundler.html#method-c-setup"><code>Bundler.setup</code></a>) if it is not already set, and loads all gems from groups specified. Unlike <a href="Bundler.html#method-c-setup"><code>::setup</code></a>, can be called multiple times with different groups (if they were allowed by setup).</p>
<p>Assuming Gemfile</p>
<pre class="ruby"><span class="ruby-identifier">gem</span> <span class="ruby-string">'first_gem'</span>, <span class="ruby-string">'= 1.0'</span>
<span class="ruby-identifier">group</span> <span class="ruby-value">:test</span> <span class="ruby-keyword">do</span>
<span class="ruby-identifier">gem</span> <span class="ruby-string">'second_gem'</span>, <span class="ruby-string">'= 1.0'</span>
<span class="ruby-keyword">end</span>
</pre>
<p>The code will work as follows:</p>
<pre class="ruby"><span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">setup</span> <span class="ruby-comment"># allow all groups</span>
<span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">require</span>(<span class="ruby-value">:default</span>) <span class="ruby-comment"># requires only first_gem</span>
<span class="ruby-comment"># ...later</span>
<span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">require</span>(<span class="ruby-value">:test</span>) <span class="ruby-comment"># requires second_gem</span>
</pre>
<div class="method-source-code" id="require-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 173</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">require</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">groups</span>)
<span class="ruby-identifier">setup</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">groups</span>).<span class="ruby-identifier">require</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">groups</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-require_thor_actions" class="method-detail ">
<div class="method-heading">
<span class="method-name">require_thor_actions</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="require_thor_actions-source">
<pre><span class="ruby-comment"># File lib/bundler/vendored_thor.rb, line 4</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">require_thor_actions</span>
<span class="ruby-identifier">require_relative</span> <span class="ruby-string">"vendor/thor/lib/thor/actions"</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-requires_sudo-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">requires_sudo?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="requires_sudo-3F-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 458</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">requires_sudo?</span>
<span class="ruby-keyword">return</span> <span class="ruby-ivar">@requires_sudo</span> <span class="ruby-keyword">if</span> <span class="ruby-keyword">defined?</span>(<span class="ruby-ivar">@requires_sudo_ran</span>)
<span class="ruby-identifier">sudo_present</span> = <span class="ruby-identifier">which</span> <span class="ruby-string">"sudo"</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">settings</span>.<span class="ruby-identifier">allow_sudo?</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">sudo_present</span>
<span class="ruby-comment"># the bundle path and subdirectories need to be writable for RubyGems</span>
<span class="ruby-comment"># to be able to unpack and install gems without exploding</span>
<span class="ruby-identifier">path</span> = <span class="ruby-identifier">bundle_path</span>
<span class="ruby-identifier">path</span> = <span class="ruby-identifier">path</span>.<span class="ruby-identifier">parent</span> <span class="ruby-keyword">until</span> <span class="ruby-identifier">path</span>.<span class="ruby-identifier">exist?</span>
<span class="ruby-comment"># bins are written to a different location on OS X</span>
<span class="ruby-identifier">bin_dir</span> = <span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">system_bindir</span>)
<span class="ruby-identifier">bin_dir</span> = <span class="ruby-identifier">bin_dir</span>.<span class="ruby-identifier">parent</span> <span class="ruby-keyword">until</span> <span class="ruby-identifier">bin_dir</span>.<span class="ruby-identifier">exist?</span>
<span class="ruby-comment"># if any directory is not writable, we need sudo</span>
<span class="ruby-identifier">files</span> = [<span class="ruby-identifier">path</span>, <span class="ruby-identifier">bin_dir</span>] <span class="ruby-operator">|</span> <span class="ruby-constant">Dir</span>[<span class="ruby-identifier">bundle_path</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">"build_info/*"</span>).<span class="ruby-identifier">to_s</span>] <span class="ruby-operator">|</span> <span class="ruby-constant">Dir</span>[<span class="ruby-identifier">bundle_path</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">"*"</span>).<span class="ruby-identifier">to_s</span>]
<span class="ruby-identifier">unwritable_files</span> = <span class="ruby-identifier">files</span>.<span class="ruby-identifier">reject</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">writable?</span>(<span class="ruby-identifier">f</span>) }
<span class="ruby-identifier">sudo_needed</span> = <span class="ruby-operator">!</span><span class="ruby-identifier">unwritable_files</span>.<span class="ruby-identifier">empty?</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">sudo_needed</span>
<span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">ui</span>.<span class="ruby-identifier">warn</span> <span class="ruby-node">"Following files may not be writable, so sudo is needed:\n #{unwritable_files.map(&:to_s).sort.join("\n ")}"</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@requires_sudo_ran</span> = <span class="ruby-keyword">true</span>
<span class="ruby-ivar">@requires_sudo</span> = <span class="ruby-identifier">settings</span>.<span class="ruby-identifier">allow_sudo?</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">sudo_present</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">sudo_needed</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-reset-21" class="method-detail ">
<div class="method-heading">
<span class="method-name">reset!</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="reset-21-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 585</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">reset!</span>
<span class="ruby-identifier">reset_paths!</span>
<span class="ruby-constant">Plugin</span>.<span class="ruby-identifier">reset!</span>
<span class="ruby-identifier">reset_rubygems!</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-reset_paths-21" class="method-detail ">
<div class="method-heading">
<span class="method-name">reset_paths!</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="reset_paths-21-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 591</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">reset_paths!</span>
<span class="ruby-ivar">@bin_path</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@bundler_major_version</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@bundle_path</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@configured</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@configured_bundle_path</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@definition</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@load</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@locked_gems</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@root</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@settings</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@setup</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@user_home</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-reset_rubygems-21" class="method-detail ">
<div class="method-heading">
<span class="method-name">reset_rubygems!</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="reset_rubygems-21-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 606</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">reset_rubygems!</span>
<span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-keyword">defined?</span>(<span class="ruby-ivar">@rubygems</span>) <span class="ruby-operator">&&</span> <span class="ruby-ivar">@rubygems</span>
<span class="ruby-identifier">rubygems</span>.<span class="ruby-identifier">undo_replacements</span>
<span class="ruby-identifier">rubygems</span>.<span class="ruby-identifier">reset</span>
<span class="ruby-ivar">@rubygems</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-rm_rf" class="method-detail ">
<div class="method-heading">
<span class="method-name">rm_rf</span><span
class="method-args">(path)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="rm_rf-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 304</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">rm_rf</span>(<span class="ruby-identifier">path</span>)
<span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">remove_entry_secure</span>(<span class="ruby-identifier">path</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">path</span> <span class="ruby-operator">&&</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">path</span>)
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">ArgumentError</span>
<span class="ruby-identifier">message</span> = <span class="ruby-identifier"><<EOF</span>
<span class="ruby-value">It is a security vulnerability to allow your home directory to be world-writable, and bundler can not continue.
You should probably consider fixing this issue by running `chmod o-w ~` on *nix.
Please refer to https://ruby-doc.org/stdlib-2.1.2/libdoc/fileutils/rdoc/FileUtils.html#method-c-remove_entry_secure for details.
</span><span class="ruby-identifier">EOF</span>
<span class="ruby-constant">File</span>.<span class="ruby-identifier">world_writable?</span>(<span class="ruby-identifier">path</span>) <span class="ruby-operator">?</span> <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">ui</span>.<span class="ruby-identifier">warn</span>(<span class="ruby-identifier">message</span>) <span class="ruby-operator">:</span> <span class="ruby-identifier">raise</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">PathError</span>, <span class="ruby-node">"Please fix the world-writable issue with your #{path} directory"</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-root" class="method-detail ">
<div class="method-heading">
<span class="method-name">root</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="root-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 276</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">root</span>
<span class="ruby-ivar">@root</span> <span class="ruby-operator">||=</span> <span class="ruby-keyword">begin</span>
<span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">root</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">GemfileNotFound</span>
<span class="ruby-identifier">bundle_dir</span> = <span class="ruby-identifier">default_bundle_dir</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">GemfileNotFound</span>, <span class="ruby-string">"Could not locate Gemfile or .bundle/ directory"</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">bundle_dir</span>
<span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-string">".."</span>, <span class="ruby-identifier">bundle_dir</span>))
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-ruby_scope" class="method-detail ">
<div class="method-heading">
<span class="method-name">ruby_scope</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="ruby_scope-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 215</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">ruby_scope</span>
<span class="ruby-node">"#{Bundler.rubygems.ruby_engine}/#{RbConfig::CONFIG["ruby_version"]}"</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-rubygems" class="method-detail ">
<div class="method-heading">
<span class="method-name">rubygems</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="rubygems-source">
<pre><span class="ruby-comment"># File lib/bundler/rubygems_integration.rb, line 645</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">rubygems</span>
<span class="ruby-ivar">@rubygems</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">RubygemsIntegration</span>.<span class="ruby-identifier">new</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-settings" class="method-detail ">
<div class="method-heading">
<span class="method-name">settings</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="settings-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 316</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">settings</span>
<span class="ruby-ivar">@settings</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Settings</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">app_config_path</span>)
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">GemfileNotFound</span>
<span class="ruby-ivar">@settings</span> = <span class="ruby-constant">Settings</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-string">".bundle"</span>).<span class="ruby-identifier">expand_path</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-setup" class="method-detail ">
<div class="method-heading">
<span class="method-name">setup</span><span
class="method-args">(*groups)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Turns on the <a href="Bundler.html"><code>Bundler</code></a> runtime. After <code>Bundler.setup</code> call, all <code>load</code> or <code>require</code> 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.</p>
<p>Assuming Gemfile</p>
<pre class="ruby"><span class="ruby-identifier">gem</span> <span class="ruby-string">'first_gem'</span>, <span class="ruby-string">'= 1.0'</span>
<span class="ruby-identifier">group</span> <span class="ruby-value">:test</span> <span class="ruby-keyword">do</span>
<span class="ruby-identifier">gem</span> <span class="ruby-string">'second_gem'</span>, <span class="ruby-string">'= 1.0'</span>
<span class="ruby-keyword">end</span>
</pre>
<p>The code using <a href="Bundler.html#method-c-setup"><code>Bundler.setup</code></a> works as follows:</p>
<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">'third_gem'</span> <span class="ruby-comment"># allowed, required from global gems</span>
<span class="ruby-identifier">require</span> <span class="ruby-string">'first_gem'</span> <span class="ruby-comment"># allowed, loads the last installed version</span>
<span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">setup</span>
<span class="ruby-identifier">require</span> <span class="ruby-string">'fourth_gem'</span> <span class="ruby-comment"># fails with LoadError</span>
<span class="ruby-identifier">require</span> <span class="ruby-string">'second_gem'</span> <span class="ruby-comment"># loads exactly version 1.0</span>
</pre>
<p><code>Bundler.setup</code> can be called only once, all subsequent calls are no-op.</p>
<p>If <em>groups</em> list is provided, only gems from specified groups would be allowed (gems specified outside groups belong to special <code>:default</code> group).</p>
<p>To require all gems from Gemfile (or only some groups), see <a href="Bundler.html#method-c-require"><code>Bundler.require</code></a>.</p>
<div class="method-source-code" id="setup-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 139</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">setup</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">groups</span>)
<span class="ruby-comment"># Return if all groups are already loaded</span>
<span class="ruby-keyword">return</span> <span class="ruby-ivar">@setup</span> <span class="ruby-keyword">if</span> <span class="ruby-keyword">defined?</span>(<span class="ruby-ivar">@setup</span>) <span class="ruby-operator">&&</span> <span class="ruby-ivar">@setup</span>
<span class="ruby-identifier">definition</span>.<span class="ruby-identifier">validate_runtime!</span>
<span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">print_major_deprecations!</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">groups</span>.<span class="ruby-identifier">empty?</span>
<span class="ruby-comment"># Load all groups, but only once</span>
<span class="ruby-ivar">@setup</span> = <span class="ruby-identifier">load</span>.<span class="ruby-identifier">setup</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">load</span>.<span class="ruby-identifier">setup</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">groups</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-specs_path" class="method-detail ">
<div class="method-heading">
<span class="method-name">specs_path</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="specs_path-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 272</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">specs_path</span>
<span class="ruby-identifier">bundle_path</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">"specifications"</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-sudo" class="method-detail ">
<div class="method-heading">
<span class="method-name">sudo</span><span
class="method-args">(str)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="sudo-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 509</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">sudo</span>(<span class="ruby-identifier">str</span>)
<span class="ruby-constant">SUDO_MUTEX</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword">do</span>
<span class="ruby-identifier">prompt</span> = <span class="ruby-string">"\n\n"</span> <span class="ruby-operator">+</span> <span class="ruby-identifier"><<-PROMPT</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/^ {6}/</span>, <span class="ruby-string">""</span>).<span class="ruby-identifier">strip</span> <span class="ruby-operator">+</span> <span class="ruby-string">" "</span>
<span class="ruby-value"> Your user account isn't allowed to install to the system RubyGems.
You can cancel this installation and run:
bundle install --path vendor/bundle
to install the gems into ./vendor/bundle/, or you can enter your password
and install the bundled gems to RubyGems using sudo.
Password:
</span><span class="ruby-identifier"> PROMPT</span>
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@prompted_for_sudo</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">system</span>(<span class="ruby-node">%(sudo -k -p "#{prompt}" true)</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">SudoNotPermittedError</span>,
<span class="ruby-string">"Bundler requires sudo access to install at the moment. "</span> \
<span class="ruby-string">"Try installing again, granting Bundler sudo access when prompted, or installing into a different path."</span>
<span class="ruby-keyword">end</span>
<span class="ruby-node">`sudo -p "#{prompt}" #{str}`</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-system_bindir" class="method-detail ">
<div class="method-heading">
<span class="method-name">system_bindir</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="system_bindir-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 445</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">system_bindir</span>
<span class="ruby-comment"># Gem.bindir doesn't always return the location that RubyGems will install</span>
<span class="ruby-comment"># system binaries. If you put '-n foo' in your .gemrc, RubyGems will</span>
<span class="ruby-comment"># install binstubs there instead. Unfortunately, RubyGems doesn't expose</span>
<span class="ruby-comment"># that directory at all, so rather than parse .gemrc ourselves, we allow</span>
<span class="ruby-comment"># the directory to be set as well, via `bundle config set bindir foo`.</span>
<span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">settings</span>[<span class="ruby-value">:system_bindir</span>] <span class="ruby-operator">||</span> <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rubygems</span>.<span class="ruby-identifier">gem_bindir</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-tmp" class="method-detail ">
<div class="method-heading">
<span class="method-name">tmp</span><span
class="method-args">(name = Process.pid.to_s)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="tmp-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 299</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">tmp</span>(<span class="ruby-identifier">name</span> = <span class="ruby-constant">Process</span>.<span class="ruby-identifier">pid</span>.<span class="ruby-identifier">to_s</span>)
<span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">send</span>(<span class="ruby-value">:require</span>, <span class="ruby-string">"tmpdir"</span>)
<span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Dir</span>.<span class="ruby-identifier">mktmpdir</span>([<span class="ruby-string">"bundler"</span>, <span class="ruby-identifier">name</span>]))
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-ui" class="method-detail ">
<div class="method-heading">
<span class="method-name">ui</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="ui-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 84</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">ui</span>
(<span class="ruby-keyword">defined?</span>(<span class="ruby-ivar">@ui</span>) <span class="ruby-operator">&&</span> <span class="ruby-ivar">@ui</span>) <span class="ruby-operator">||</span> (<span class="ruby-keyword">self</span>.<span class="ruby-identifier">ui</span> = <span class="ruby-constant">UI</span><span class="ruby-operator">::</span><span class="ruby-constant">Shell</span>.<span class="ruby-identifier">new</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-ui-3D" class="method-detail ">
<div class="method-heading">
<span class="method-name">ui=</span><span
class="method-args">(ui)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="ui-3D-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 88</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">ui=</span>(<span class="ruby-identifier">ui</span>)
<span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rubygems</span>.<span class="ruby-identifier">ui</span> = <span class="ruby-constant">UI</span><span class="ruby-operator">::</span><span class="ruby-constant">RGProxy</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">ui</span>)
<span class="ruby-ivar">@ui</span> = <span class="ruby-identifier">ui</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-unbundled_env" class="method-detail ">
<div class="method-heading">
<span class="method-name">unbundled_env</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>@return [Hash] Environment with all bundler-related variables removed</p>
<div class="method-source-code" id="unbundled_env-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 340</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">unbundled_env</span>
<span class="ruby-identifier">env</span> = <span class="ruby-identifier">original_env</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">env</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-string">"BUNDLER_ORIG_MANPATH"</span>)
<span class="ruby-identifier">env</span>[<span class="ruby-string">"MANPATH"</span>] = <span class="ruby-identifier">env</span>[<span class="ruby-string">"BUNDLER_ORIG_MANPATH"</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">env</span>.<span class="ruby-identifier">delete_if</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>, <span class="ruby-identifier">_</span><span class="ruby-operator">|</span> <span class="ruby-identifier">k</span>[<span class="ruby-value">0</span>, <span class="ruby-value">7</span>] <span class="ruby-operator">==</span> <span class="ruby-string">"BUNDLE_"</span> }
<span class="ruby-keyword">if</span> <span class="ruby-identifier">env</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-string">"RUBYOPT"</span>)
<span class="ruby-identifier">env</span>[<span class="ruby-string">"RUBYOPT"</span>] = <span class="ruby-identifier">env</span>[<span class="ruby-string">"RUBYOPT"</span>].<span class="ruby-identifier">sub</span> <span class="ruby-string">"-rbundler/setup"</span>, <span class="ruby-string">""</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">env</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-string">"RUBYLIB"</span>)
<span class="ruby-identifier">rubylib</span> = <span class="ruby-identifier">env</span>[<span class="ruby-string">"RUBYLIB"</span>].<span class="ruby-identifier">split</span>(<span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">PATH_SEPARATOR</span>)
<span class="ruby-identifier">rubylib</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-string">".."</span>, <span class="ruby-keyword">__FILE__</span>))
<span class="ruby-identifier">env</span>[<span class="ruby-string">"RUBYLIB"</span>] = <span class="ruby-identifier">rubylib</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">PATH_SEPARATOR</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">env</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-unbundled_exec" class="method-detail ">
<div class="method-heading">
<span class="method-name">unbundled_exec</span><span
class="method-args">(*args)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Run a `Kernel.exec` to a subcommand in an environment with all bundler related variables removed</p>
<div class="method-source-code" id="unbundled_exec-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 424</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">unbundled_exec</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-identifier">with_env</span>(<span class="ruby-identifier">unbundled_env</span>) { <span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">exec</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>) }
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-unbundled_system" class="method-detail ">
<div class="method-heading">
<span class="method-name">unbundled_system</span><span
class="method-args">(*args)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Run subcommand in an environment with all bundler related variables removed</p>
<div class="method-source-code" id="unbundled_system-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 402</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">unbundled_system</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-identifier">with_unbundled_env</span> { <span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">system</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>) }
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-use_system_gems-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">use_system_gems?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="use_system_gems-3F-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 454</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">use_system_gems?</span>
<span class="ruby-identifier">configured_bundle_path</span>.<span class="ruby-identifier">use_system_gems?</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-user_bundle_path" class="method-detail ">
<div class="method-heading">
<span class="method-name">user_bundle_path</span><span
class="method-args">(dir = "home")</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="user_bundle_path-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 242</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">user_bundle_path</span>(<span class="ruby-identifier">dir</span> = <span class="ruby-string">"home"</span>)
<span class="ruby-identifier">env_var</span>, <span class="ruby-identifier">fallback</span> = <span class="ruby-keyword">case</span> <span class="ruby-identifier">dir</span>
<span class="ruby-keyword">when</span> <span class="ruby-string">"home"</span>
[<span class="ruby-string">"BUNDLE_USER_HOME"</span>, <span class="ruby-identifier">proc</span> { <span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">user_home</span>).<span class="ruby-identifier">join</span>(<span class="ruby-string">".bundle"</span>) }]
<span class="ruby-keyword">when</span> <span class="ruby-string">"cache"</span>
[<span class="ruby-string">"BUNDLE_USER_CACHE"</span>, <span class="ruby-identifier">proc</span> { <span class="ruby-identifier">user_bundle_path</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">"cache"</span>) }]
<span class="ruby-keyword">when</span> <span class="ruby-string">"config"</span>
[<span class="ruby-string">"BUNDLE_USER_CONFIG"</span>, <span class="ruby-identifier">proc</span> { <span class="ruby-identifier">user_bundle_path</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">"config"</span>) }]
<span class="ruby-keyword">when</span> <span class="ruby-string">"plugin"</span>
[<span class="ruby-string">"BUNDLE_USER_PLUGIN"</span>, <span class="ruby-identifier">proc</span> { <span class="ruby-identifier">user_bundle_path</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">"plugin"</span>) }]
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">BundlerError</span>, <span class="ruby-node">"Unknown user path requested: #{dir}"</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment"># `fallback` will already be a Pathname, but Pathname.new() is</span>
<span class="ruby-comment"># idempotent so it's OK</span>
<span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">ENV</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-identifier">env_var</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">fallback</span>))
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-user_cache" class="method-detail ">
<div class="method-heading">
<span class="method-name">user_cache</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="user_cache-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 260</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">user_cache</span>
<span class="ruby-identifier">user_bundle_path</span>(<span class="ruby-string">"cache"</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-user_home" class="method-detail ">
<div class="method-heading">
<span class="method-name">user_home</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="user_home-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 219</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">user_home</span>
<span class="ruby-ivar">@user_home</span> <span class="ruby-operator">||=</span> <span class="ruby-keyword">begin</span>
<span class="ruby-identifier">home</span> = <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rubygems</span>.<span class="ruby-identifier">user_home</span>
<span class="ruby-identifier">bundle_home</span> = <span class="ruby-identifier">home</span> <span class="ruby-operator">?</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">home</span>, <span class="ruby-string">".bundle"</span>) <span class="ruby-operator">:</span> <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">warning</span> = <span class="ruby-keyword">if</span> <span class="ruby-identifier">home</span>.<span class="ruby-identifier">nil?</span>
<span class="ruby-string">"Your home directory is not set."</span>
<span class="ruby-keyword">elsif</span> <span class="ruby-operator">!</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">directory?</span>(<span class="ruby-identifier">home</span>)
<span class="ruby-node">"`#{home}` is not a directory."</span>
<span class="ruby-keyword">elsif</span> <span class="ruby-operator">!</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">writable?</span>(<span class="ruby-identifier">home</span>) <span class="ruby-operator">&&</span> (<span class="ruby-operator">!</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">directory?</span>(<span class="ruby-identifier">bundle_home</span>) <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">writable?</span>(<span class="ruby-identifier">bundle_home</span>))
<span class="ruby-node">"`#{home}` is not writable."</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">warning</span>
<span class="ruby-identifier">user_home</span> = <span class="ruby-identifier">tmp_home_path</span>(<span class="ruby-identifier">warning</span>)
<span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">ui</span>.<span class="ruby-identifier">warn</span> <span class="ruby-node">"#{warning}\nBundler will use `#{user_home}' as your home directory temporarily.\n"</span>
<span class="ruby-identifier">user_home</span>
<span class="ruby-keyword">else</span>
<span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">home</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-which" class="method-detail ">
<div class="method-heading">
<span class="method-name">which</span><span
class="method-args">(executable)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="which-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 496</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">which</span>(<span class="ruby-identifier">executable</span>)
<span class="ruby-keyword">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">file?</span>(<span class="ruby-identifier">executable</span>) <span class="ruby-operator">&&</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">executable?</span>(<span class="ruby-identifier">executable</span>)
<span class="ruby-identifier">executable</span>
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">paths</span> = <span class="ruby-constant">ENV</span>[<span class="ruby-string">"PATH"</span>]
<span class="ruby-identifier">quote</span> = <span class="ruby-string">'"'</span>.<span class="ruby-identifier">freeze</span>
<span class="ruby-identifier">paths</span>.<span class="ruby-identifier">split</span>(<span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">PATH_SEPARATOR</span>).<span class="ruby-identifier">find</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">path</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">path</span> = <span class="ruby-identifier">path</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-2</span>] <span class="ruby-keyword">if</span> <span class="ruby-identifier">path</span>.<span class="ruby-identifier">start_with?</span>(<span class="ruby-identifier">quote</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">path</span>.<span class="ruby-identifier">end_with?</span>(<span class="ruby-identifier">quote</span>)
<span class="ruby-identifier">executable_path</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">executable</span>, <span class="ruby-identifier">path</span>)
<span class="ruby-keyword">return</span> <span class="ruby-identifier">executable_path</span> <span class="ruby-keyword">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">file?</span>(<span class="ruby-identifier">executable_path</span>) <span class="ruby-operator">&&</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">executable?</span>(<span class="ruby-identifier">executable_path</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-with_clean_env" class="method-detail ">
<div class="method-heading">
<span class="method-name">with_clean_env</span><span
class="method-args">() { || ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>@deprecated Use `with_unbundled_env` instead</p>
<div class="method-source-code" id="with_clean_env-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 368</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">with_clean_env</span>
<span class="ruby-constant">Bundler</span><span class="ruby-operator">::</span><span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">major_deprecation</span>(
<span class="ruby-value">2</span>,
<span class="ruby-string">"`Bundler.with_clean_env` has been deprecated in favor of `Bundler.with_unbundled_env`. "</span> \
<span class="ruby-string">"If you instead want the environment before bundler was originally loaded, use `Bundler.with_original_env`"</span>,
<span class="ruby-value">:print_caller_location</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>
)
<span class="ruby-identifier">with_env</span>(<span class="ruby-identifier">unbundled_env</span>) { <span class="ruby-keyword">yield</span> }
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-with_friendly_errors" class="method-detail ">
<div class="method-heading">
<span class="method-name">with_friendly_errors</span><span
class="method-args">() { || ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="with_friendly_errors-source">
<pre><span class="ruby-comment"># File lib/bundler/friendly_errors.rb, line 122</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">with_friendly_errors</span>
<span class="ruby-keyword">yield</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">SignalException</span>
<span class="ruby-identifier">raise</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">e</span> <span class="ruby-comment"># rubocop:disable Lint/RescueException</span>
<span class="ruby-constant">FriendlyErrors</span>.<span class="ruby-identifier">log_error</span>(<span class="ruby-identifier">e</span>)
<span class="ruby-identifier">exit</span> <span class="ruby-constant">FriendlyErrors</span>.<span class="ruby-identifier">exit_status</span>(<span class="ruby-identifier">e</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-with_original_env" class="method-detail ">
<div class="method-heading">
<span class="method-name">with_original_env</span><span
class="method-args">() { || ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Run block with environment present before <a href="Bundler.html"><code>Bundler</code></a> was activated</p>
<div class="method-source-code" id="with_original_env-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 363</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">with_original_env</span>
<span class="ruby-identifier">with_env</span>(<span class="ruby-identifier">original_env</span>) { <span class="ruby-keyword">yield</span> }
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-with_unbundled_env" class="method-detail ">
<div class="method-heading">
<span class="method-name">with_unbundled_env</span><span
class="method-args">() { || ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Run block with all bundler-related variables removed</p>
<div class="method-source-code" id="with_unbundled_env-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 380</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">with_unbundled_env</span>
<span class="ruby-identifier">with_env</span>(<span class="ruby-identifier">unbundled_env</span>) { <span class="ruby-keyword">yield</span> }
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="private-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Private Class Methods</h3>
</header>
<div id="method-c-configure_gem_home" class="method-detail ">
<div class="method-heading">
<span class="method-name">configure_gem_home</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="configure_gem_home-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 657</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">configure_gem_home</span>
<span class="ruby-constant">Bundler</span><span class="ruby-operator">::</span><span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">set_env</span> <span class="ruby-string">"GEM_HOME"</span>, <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">bundle_path</span>, <span class="ruby-identifier">root</span>)
<span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rubygems</span>.<span class="ruby-identifier">clear_paths</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-configure_gem_home_and_path" class="method-detail ">
<div class="method-heading">
<span class="method-name">configure_gem_home_and_path</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="configure_gem_home_and_path-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 637</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">configure_gem_home_and_path</span>
<span class="ruby-identifier">configure_gem_path</span>
<span class="ruby-identifier">configure_gem_home</span>
<span class="ruby-identifier">bundle_path</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-configure_gem_path" class="method-detail ">
<div class="method-heading">
<span class="method-name">configure_gem_path</span><span
class="method-args">(env = ENV)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="configure_gem_path-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 643</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">configure_gem_path</span>(<span class="ruby-identifier">env</span> = <span class="ruby-constant">ENV</span>)
<span class="ruby-identifier">blank_home</span> = <span class="ruby-identifier">env</span>[<span class="ruby-string">"GEM_HOME"</span>].<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">env</span>[<span class="ruby-string">"GEM_HOME"</span>].<span class="ruby-identifier">empty?</span>
<span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">use_system_gems?</span>
<span class="ruby-comment"># this needs to be empty string to cause</span>
<span class="ruby-comment"># PathSupport.split_gem_path to only load up the</span>
<span class="ruby-comment"># Bundler --path setting as the GEM_PATH.</span>
<span class="ruby-identifier">env</span>[<span class="ruby-string">"GEM_PATH"</span>] = <span class="ruby-string">""</span>
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">blank_home</span>
<span class="ruby-identifier">possibles</span> = [<span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rubygems</span>.<span class="ruby-identifier">gem_dir</span>, <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rubygems</span>.<span class="ruby-identifier">gem_path</span>]
<span class="ruby-identifier">paths</span> = <span class="ruby-identifier">possibles</span>.<span class="ruby-identifier">flatten</span>.<span class="ruby-identifier">compact</span>.<span class="ruby-identifier">uniq</span>.<span class="ruby-identifier">reject</span>(<span class="ruby-operator">&</span><span class="ruby-value">:empty?</span>)
<span class="ruby-identifier">env</span>[<span class="ruby-string">"GEM_PATH"</span>] = <span class="ruby-identifier">paths</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">PATH_SEPARATOR</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-eval_gemspec" class="method-detail ">
<div class="method-heading">
<span class="method-name">eval_gemspec</span><span
class="method-args">(path, contents)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="eval_gemspec-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 625</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">eval_gemspec</span>(<span class="ruby-identifier">path</span>, <span class="ruby-identifier">contents</span>)
<span class="ruby-identifier">eval</span>(<span class="ruby-identifier">contents</span>, <span class="ruby-constant">TOPLEVEL_BINDING</span>.<span class="ruby-identifier">dup</span>, <span class="ruby-identifier">path</span>.<span class="ruby-identifier">expand_path</span>.<span class="ruby-identifier">to_s</span>)
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">ScriptError</span>, <span class="ruby-constant">StandardError</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">e</span>
<span class="ruby-identifier">msg</span> = <span class="ruby-node">"There was an error while loading `#{path.basename}`: #{e.message}"</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">LoadError</span>)
<span class="ruby-identifier">msg</span> <span class="ruby-operator">+=</span> <span class="ruby-string">"\nDoes it try to require a relative path? That's been removed in Ruby 1.9"</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">GemspecError</span>, <span class="ruby-constant">Dsl</span><span class="ruby-operator">::</span><span class="ruby-constant">DSLError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">msg</span>, <span class="ruby-identifier">path</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">backtrace</span>, <span class="ruby-identifier">contents</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-eval_yaml_gemspec" class="method-detail ">
<div class="method-heading">
<span class="method-name">eval_yaml_gemspec</span><span
class="method-args">(path, contents)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="eval_yaml_gemspec-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 615</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">eval_yaml_gemspec</span>(<span class="ruby-identifier">path</span>, <span class="ruby-identifier">contents</span>)
<span class="ruby-identifier">require_relative</span> <span class="ruby-string">"bundler/psyched_yaml"</span>
<span class="ruby-comment"># If the YAML is invalid, Syck raises an ArgumentError, and Psych</span>
<span class="ruby-comment"># raises a Psych::SyntaxError. See psyched_yaml.rb for more info.</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">from_yaml</span>(<span class="ruby-identifier">contents</span>)
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">YamlLibrarySyntaxError</span>, <span class="ruby-constant">ArgumentError</span>, <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">EndOfYAMLException</span>, <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Exception</span>
<span class="ruby-identifier">eval_gemspec</span>(<span class="ruby-identifier">path</span>, <span class="ruby-identifier">contents</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-tmp_home_path" class="method-detail ">
<div class="method-heading">
<span class="method-name">tmp_home_path</span><span
class="method-args">(warning)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="tmp_home_path-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 662</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">tmp_home_path</span>(<span class="ruby-identifier">warning</span>)
<span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">send</span>(<span class="ruby-value">:require</span>, <span class="ruby-string">"tmpdir"</span>)
<span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">filesystem_access</span>(<span class="ruby-constant">Dir</span>.<span class="ruby-identifier">tmpdir</span>) <span class="ruby-keyword">do</span>
<span class="ruby-identifier">path</span> = <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">tmp</span>
<span class="ruby-identifier">at_exit</span> { <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rm_rf</span>(<span class="ruby-identifier">path</span>) }
<span class="ruby-identifier">path</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">RuntimeError</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">e</span>
<span class="ruby-identifier">raise</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">exception</span>(<span class="ruby-node">"#{warning}\nBundler also failed to create a temporary home directory':\n#{e}"</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-with_env" class="method-detail ">
<div class="method-heading">
<span class="method-name">with_env</span><span
class="method-args">(env) { || ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>@param env [Hash]</p>
<div class="method-source-code" id="with_env-source">
<pre><span class="ruby-comment"># File lib/bundler.rb, line 674</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">with_env</span>(<span class="ruby-identifier">env</span>)
<span class="ruby-identifier">backup</span> = <span class="ruby-constant">ENV</span>.<span class="ruby-identifier">to_hash</span>
<span class="ruby-constant">ENV</span>.<span class="ruby-identifier">replace</span>(<span class="ruby-identifier">env</span>)
<span class="ruby-keyword">yield</span>
<span class="ruby-keyword">ensure</span>
<span class="ruby-constant">ENV</span>.<span class="ruby-identifier">replace</span>(<span class="ruby-identifier">backup</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="private-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Private Instance Methods</h3>
</header>
<div id="method-i-URI" class="method-detail ">
<div class="method-heading">
<span class="method-name">URI</span><span
class="method-args">(uri)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns <code>uri</code> converted to an <a href="Bundler/URI.html"><code>Bundler::URI</code></a> object.</p>
<div class="method-source-code" id="URI-source">
<pre><span class="ruby-comment"># File lib/bundler/vendor/uri/lib/uri/common.rb, line 733</span>
<span class="ruby-keyword">def</span> <span class="ruby-constant">URI</span>(<span class="ruby-identifier ruby-title">uri</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Bundler</span><span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">uri</span>
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">uri</span> = <span class="ruby-constant">String</span>.<span class="ruby-identifier">try_convert</span>(<span class="ruby-identifier">uri</span>)
<span class="ruby-constant">Bundler</span><span class="ruby-operator">::</span><span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">uri</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>,
<span class="ruby-string">"bad argument (expected Bundler::URI object or Bundler::URI string)"</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.2.1.1.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>