HEX
Server: Apache
System: Windows NT MAGNETO-ARM 10.0 build 22000 (Windows 10) AMD64
User: Michel (0)
PHP: 7.4.7
Disabled: NONE
Upload Files
File: C:/Ruby27-x64/share/doc/ruby/html/Bundler/Source/Rubygems.html
<!DOCTYPE html>

<html>
<head>
<meta charset="UTF-8">

<title>class Bundler::Source::Rubygems - 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="class">
<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">
    
    <div id="parent-class-section" class="nav-section">
  <h3>Parent</h3>

  
  <p class="link"><a href="../Source.html">Bundler::Source</a>
  
</div>

    
    
    <!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
  <h3>Methods</h3>

  <ul class="link-list" role="directory">
    
    <li ><a href="#method-c-from_lock">::from_lock</a>
    
    <li ><a href="#method-c-new">::new</a>
    
    <li ><a href="#method-i-3D-3D">#==</a>
    
    <li ><a href="#method-i-add_remote">#add_remote</a>
    
    <li ><a href="#method-i-api_fetchers">#api_fetchers</a>
    
    <li ><a href="#method-i-builtin_gem-3F">#builtin_gem?</a>
    
    <li ><a href="#method-i-cache">#cache</a>
    
    <li ><a href="#method-i-cache_globally">#cache_globally</a>
    
    <li ><a href="#method-i-cache_path">#cache_path</a>
    
    <li ><a href="#method-i-cached-21">#cached!</a>
    
    <li ><a href="#method-i-cached_built_in_gem">#cached_built_in_gem</a>
    
    <li ><a href="#method-i-cached_gem">#cached_gem</a>
    
    <li ><a href="#method-i-cached_path">#cached_path</a>
    
    <li ><a href="#method-i-cached_specs">#cached_specs</a>
    
    <li class="calls-super" ><a href="#method-i-can_lock-3F">#can_lock?</a>
    
    <li ><a href="#method-i-credless_remotes">#credless_remotes</a>
    
    <li ><a href="#method-i-dependency_names_to_double_check">#dependency_names_to_double_check</a>
    
    <li ><a href="#method-i-double_check_for">#double_check_for</a>
    
    <li ><a href="#method-i-download_cache_path">#download_cache_path</a>
    
    <li ><a href="#method-i-download_gem">#download_gem</a>
    
    <li ><a href="#method-i-eql-3F">#eql?</a>
    
    <li ><a href="#method-i-equivalent_remotes-3F">#equivalent_remotes?</a>
    
    <li ><a href="#method-i-extension_cache_slug">#extension_cache_slug</a>
    
    <li ><a href="#method-i-fetch_gem">#fetch_gem</a>
    
    <li ><a href="#method-i-fetch_names">#fetch_names</a>
    
    <li ><a href="#method-i-fetchers">#fetchers</a>
    
    <li ><a href="#method-i-hash">#hash</a>
    
    <li ><a href="#method-i-include-3F">#include?</a>
    
    <li ><a href="#method-i-install">#install</a>
    
    <li ><a href="#method-i-installed-3F">#installed?</a>
    
    <li ><a href="#method-i-installed_specs">#installed_specs</a>
    
    <li ><a href="#method-i-loaded_from">#loaded_from</a>
    
    <li ><a href="#method-i-name">#name</a>
    
    <li ><a href="#method-i-normalize_uri">#normalize_uri</a>
    
    <li ><a href="#method-i-options">#options</a>
    
    <li ><a href="#method-i-remote-21">#remote!</a>
    
    <li ><a href="#method-i-remote_specs">#remote_specs</a>
    
    <li ><a href="#method-i-remotes_for_spec">#remotes_for_spec</a>
    
    <li ><a href="#method-i-remove_auth">#remove_auth</a>
    
    <li ><a href="#method-i-replace_remotes">#replace_remotes</a>
    
    <li ><a href="#method-i-requires_sudo-3F">#requires_sudo?</a>
    
    <li ><a href="#method-i-rubygems_dir">#rubygems_dir</a>
    
    <li ><a href="#method-i-specs">#specs</a>
    
    <li ><a href="#method-i-suppress_configured_credentials">#suppress_configured_credentials</a>
    
    <li ><a href="#method-i-to_lock">#to_lock</a>
    
    <li ><a href="#method-i-to_s">#to_s</a>
    
    <li ><a href="#method-i-unmet_deps">#unmet_deps</a>
    
  </ul>
</div>

  </div>
</nav>

<main role="main" aria-labelledby="class-Bundler::Source::Rubygems">
  <h1 id="class-Bundler::Source::Rubygems" class="class">
    class Bundler::Source::Rubygems
  </h1>

  <section class="description">
    
  </section>

  
  <section id="5Buntitled-5D" class="documentation-section">
    

    

    
    <section class="constants-list">
      <header>
        <h3>Constants</h3>
      </header>
      <dl>
      
        <dt id="API_REQUEST_LIMIT">API_REQUEST_LIMIT
        
        <dd><p>Use the API when installing less than X gems</p>
        
      
        <dt id="API_REQUEST_SIZE">API_REQUEST_SIZE
        
        <dd><p>Ask for X gems per API request</p>
        
      
      </dl>
    </section>
    

    
    <section class="attribute-method-details" class="method-section">
      <header>
        <h3>Attributes</h3>
      </header>

      
      <div id="attribute-i-caches" class="method-detail">
        <div class="method-heading attribute-method-heading">
          <span class="method-name">caches</span><span
            class="attribute-access-type">[R]</span>
        </div>

        <div class="method-description">
        
        
        
        </div>
      </div>
      
      <div id="attribute-i-remotes" class="method-detail">
        <div class="method-heading attribute-method-heading">
          <span class="method-name">remotes</span><span
            class="attribute-access-type">[R]</span>
        </div>

        <div class="method-description">
        
        
        
        </div>
      </div>
      
    </section>
    

    
     <section id="public-class-5Buntitled-5D-method-details" class="method-section">
       <header>
         <h3>Public Class Methods</h3>
       </header>

    
      <div id="method-c-from_lock" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">from_lock</span><span
            class="method-args">(options)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="from_lock-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 61</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">from_lock</span>(<span class="ruby-identifier">options</span>)
  <span class="ruby-identifier">new</span>(<span class="ruby-identifier">options</span>)
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-new" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">new</span><span
            class="method-args">(options = {})</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="new-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 17</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">options</span> = {})
  <span class="ruby-ivar">@options</span> = <span class="ruby-identifier">options</span>
  <span class="ruby-ivar">@remotes</span> = []
  <span class="ruby-ivar">@dependency_names</span> = []
  <span class="ruby-ivar">@allow_remote</span> = <span class="ruby-keyword">false</span>
  <span class="ruby-ivar">@allow_cached</span> = <span class="ruby-keyword">false</span>
  <span class="ruby-ivar">@caches</span> = [<span class="ruby-identifier">cache_path</span>, <span class="ruby-operator">*</span><span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rubygems</span>.<span class="ruby-identifier">gem_cache</span>]

  <span class="ruby-constant">Array</span>(<span class="ruby-identifier">options</span>[<span class="ruby-string">&quot;remotes&quot;</span>] <span class="ruby-operator">||</span> []).<span class="ruby-identifier">reverse_each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span> <span class="ruby-identifier">add_remote</span>(<span class="ruby-identifier">r</span>) }
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
    </section>
  
     <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
       <header>
         <h3>Public Instance Methods</h3>
       </header>

    
      <div id="method-i-3D-3D" class="method-detail method-alias">
        
        <div class="method-heading">
          <span class="method-name">==</span><span
            class="method-args">(other)</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
        </div>

        

        
        <div class="aliases">
          Alias for: <a href="Rubygems.html#method-i-eql-3F">eql?</a>
        </div>
        
      </div>

    
      <div id="method-i-add_remote" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">add_remote</span><span
            class="method-args">(source)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="add_remote-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 225</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">add_remote</span>(<span class="ruby-identifier">source</span>)
  <span class="ruby-identifier">uri</span> = <span class="ruby-identifier">normalize_uri</span>(<span class="ruby-identifier">source</span>)
  <span class="ruby-ivar">@remotes</span>.<span class="ruby-identifier">unshift</span>(<span class="ruby-identifier">uri</span>) <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@remotes</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">uri</span>)
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-cache" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">cache</span><span
            class="method-args">(spec, 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="cache-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 197</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">cache</span>(<span class="ruby-identifier">spec</span>, <span class="ruby-identifier">custom_path</span> = <span class="ruby-keyword">nil</span>)
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">builtin_gem?</span>(<span class="ruby-identifier">spec</span>)
    <span class="ruby-identifier">cached_path</span> = <span class="ruby-identifier">cached_built_in_gem</span>(<span class="ruby-identifier">spec</span>)
  <span class="ruby-keyword">else</span>
    <span class="ruby-identifier">cached_path</span> = <span class="ruby-identifier">cached_gem</span>(<span class="ruby-identifier">spec</span>)
  <span class="ruby-keyword">end</span>
  <span class="ruby-identifier">raise</span> <span class="ruby-constant">GemNotFound</span>, <span class="ruby-node">&quot;Missing gem file &#39;#{spec.full_name}.gem&#39;.&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">cached_path</span>
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span>(<span class="ruby-identifier">cached_path</span>) <span class="ruby-operator">==</span> <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">app_cache</span>.<span class="ruby-identifier">to_s</span>
  <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">ui</span>.<span class="ruby-identifier">info</span> <span class="ruby-node">&quot;  * #{File.basename(cached_path)}&quot;</span>
  <span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">cp</span>(<span class="ruby-identifier">cached_path</span>, <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">app_cache</span>(<span class="ruby-identifier">custom_path</span>))
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">EACCES</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">e</span>
  <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">ui</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-identifier">e</span>)
  <span class="ruby-identifier">raise</span> <span class="ruby-constant">InstallError</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">message</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-cached-21" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">cached!</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="cached-21-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 33</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">cached!</span>
  <span class="ruby-ivar">@specs</span> = <span class="ruby-keyword">nil</span>
  <span class="ruby-ivar">@allow_cached</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-cached_built_in_gem" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">cached_built_in_gem</span><span
            class="method-args">(spec)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="cached_built_in_gem-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 212</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">cached_built_in_gem</span>(<span class="ruby-identifier">spec</span>)
  <span class="ruby-identifier">cached_path</span> = <span class="ruby-identifier">cached_path</span>(<span class="ruby-identifier">spec</span>)
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">cached_path</span>.<span class="ruby-identifier">nil?</span>
    <span class="ruby-identifier">remote_spec</span> = <span class="ruby-identifier">remote_specs</span>.<span class="ruby-identifier">search</span>(<span class="ruby-identifier">spec</span>).<span class="ruby-identifier">first</span>
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">remote_spec</span>
      <span class="ruby-identifier">cached_path</span> = <span class="ruby-identifier">fetch_gem</span>(<span class="ruby-identifier">remote_spec</span>)
    <span class="ruby-keyword">else</span>
      <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">ui</span>.<span class="ruby-identifier">warn</span> <span class="ruby-node">&quot;#{spec.full_name} is built in to Ruby, and can&#39;t be cached because your Gemfile doesn&#39;t have any sources that contain it.&quot;</span>
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">end</span>
  <span class="ruby-identifier">cached_path</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-can_lock-3F" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">can_lock?</span><span
            class="method-args">(spec)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          
            <div class="method-calls-super">
              Calls superclass method
              <a href="../Source.html#method-i-can_lock-3F"><code>Bundler::Source#can_lock?</code></a>
            </div>
          

          
          <div class="method-source-code" id="can_lock-3F-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 52</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">can_lock?</span>(<span class="ruby-identifier">spec</span>)
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">super</span> <span class="ruby-keyword">if</span> <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">feature_flag</span>.<span class="ruby-identifier">disable_multisource?</span>
  <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">source</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Rubygems</span>)
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-dependency_names_to_double_check" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">dependency_names_to_double_check</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="dependency_names_to_double_check-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 281</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">dependency_names_to_double_check</span>
  <span class="ruby-identifier">names</span> = []
  <span class="ruby-identifier">remote_specs</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">spec</span><span class="ruby-operator">|</span>
    <span class="ruby-keyword">case</span> <span class="ruby-identifier">spec</span>
    <span class="ruby-keyword">when</span> <span class="ruby-constant">EndpointSpecification</span>, <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>, <span class="ruby-constant">StubSpecification</span>, <span class="ruby-constant">LazySpecification</span>
      <span class="ruby-identifier">names</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">runtime_dependencies</span>)
    <span class="ruby-keyword">when</span> <span class="ruby-constant">RemoteSpecification</span> <span class="ruby-comment"># from the full index</span>
      <span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span>
    <span class="ruby-keyword">else</span>
      <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;unhandled spec type (#{spec.inspect})&quot;</span>
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">end</span>
  <span class="ruby-identifier">names</span>.<span class="ruby-identifier">map!</span>(<span class="ruby-operator">&amp;</span><span class="ruby-value">:name</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">names</span>
  <span class="ruby-identifier">names</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-double_check_for" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">double_check_for</span><span
            class="method-args">(unmet_dependency_names)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="double_check_for-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 262</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">double_check_for</span>(<span class="ruby-identifier">unmet_dependency_names</span>)
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@allow_remote</span>
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">api_fetchers</span>.<span class="ruby-identifier">any?</span>

  <span class="ruby-identifier">unmet_dependency_names</span> = <span class="ruby-identifier">unmet_dependency_names</span>.<span class="ruby-identifier">call</span>
  <span class="ruby-keyword">unless</span> <span class="ruby-identifier">unmet_dependency_names</span>.<span class="ruby-identifier">nil?</span>
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">api_fetchers</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">1</span>
      <span class="ruby-comment"># can&#39;t do this when there are multiple fetchers because then we might not fetch from _all_</span>
      <span class="ruby-comment"># of them</span>
      <span class="ruby-identifier">unmet_dependency_names</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">remote_specs</span>.<span class="ruby-identifier">spec_names</span> <span class="ruby-comment"># avoid re-fetching things we&#39;ve already gotten</span>
    <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">return</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">unmet_dependency_names</span>.<span class="ruby-identifier">empty?</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">ui</span>.<span class="ruby-identifier">debug</span> <span class="ruby-node">&quot;Double checking for #{unmet_dependency_names || &quot;all specs (due to the size of the request)&quot;} in #{self}&quot;</span>

  <span class="ruby-identifier">fetch_names</span>(<span class="ruby-identifier">api_fetchers</span>, <span class="ruby-identifier">unmet_dependency_names</span>, <span class="ruby-identifier">specs</span>, <span class="ruby-keyword">false</span>)
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-eql-3F" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">eql?</span><span
            class="method-args">(other)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="eql-3F-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 42</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">eql?</span>(<span class="ruby-identifier">other</span>)
  <span class="ruby-identifier">other</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Rubygems</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">credless_remotes</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">credless_remotes</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        
        <div class="aliases">
          Also aliased as: <a href="Rubygems.html#method-i-3D-3D">==</a>
        </div>
        

        
      </div>

    
      <div id="method-i-equivalent_remotes-3F" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">equivalent_remotes?</span><span
            class="method-args">(other_remotes)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="equivalent_remotes-3F-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 230</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">equivalent_remotes?</span>(<span class="ruby-identifier">other_remotes</span>)
  <span class="ruby-identifier">other_remotes</span>.<span class="ruby-identifier">map</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">method</span>(<span class="ruby-value">:remove_auth</span>)) <span class="ruby-operator">==</span> <span class="ruby-ivar">@remotes</span>.<span class="ruby-identifier">map</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">method</span>(<span class="ruby-value">:remove_auth</span>))
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-fetchers" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">fetchers</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="fetchers-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 255</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">fetchers</span>
  <span class="ruby-ivar">@fetchers</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">remotes</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">uri</span><span class="ruby-operator">|</span>
    <span class="ruby-identifier">remote</span> = <span class="ruby-constant">Source</span><span class="ruby-operator">::</span><span class="ruby-constant">Rubygems</span><span class="ruby-operator">::</span><span class="ruby-constant">Remote</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">uri</span>)
    <span class="ruby-constant">Bundler</span><span class="ruby-operator">::</span><span class="ruby-constant">Fetcher</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">remote</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-hash" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">hash</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="hash-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 38</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">hash</span>
  <span class="ruby-ivar">@remotes</span>.<span class="ruby-identifier">hash</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-include-3F" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">include?</span><span
            class="method-args">(o)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="include-3F-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 48</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">include?</span>(<span class="ruby-identifier">o</span>)
  <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Rubygems</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">o</span>.<span class="ruby-identifier">credless_remotes</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">credless_remotes</span>).<span class="ruby-identifier">empty?</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-install" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">install</span><span
            class="method-args">(spec, opts = {})</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="install-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 95</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">install</span>(<span class="ruby-identifier">spec</span>, <span class="ruby-identifier">opts</span> = {})
  <span class="ruby-identifier">force</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-value">:force</span>]
  <span class="ruby-identifier">ensure_builtin_gems_cached</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-value">:ensure_builtin_gems_cached</span>]

  <span class="ruby-keyword">if</span> <span class="ruby-identifier">ensure_builtin_gems_cached</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">builtin_gem?</span>(<span class="ruby-identifier">spec</span>)
    <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">cached_path</span>(<span class="ruby-identifier">spec</span>)
      <span class="ruby-identifier">cached_built_in_gem</span>(<span class="ruby-identifier">spec</span>) <span class="ruby-keyword">unless</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">remote</span>
      <span class="ruby-identifier">force</span> = <span class="ruby-keyword">true</span>
    <span class="ruby-keyword">else</span>
      <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">loaded_from</span> = <span class="ruby-identifier">loaded_from</span>(<span class="ruby-identifier">spec</span>)
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-keyword">if</span> (<span class="ruby-identifier">installed?</span>(<span class="ruby-identifier">spec</span>) <span class="ruby-operator">||</span> <span class="ruby-constant">Plugin</span>.<span class="ruby-identifier">installed?</span>(<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">name</span>)) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">force</span>
    <span class="ruby-identifier">print_using_message</span> <span class="ruby-node">&quot;Using #{version_message(spec)}&quot;</span>
    <span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-comment"># no post-install message</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-comment"># Download the gem to get the spec, because some specs that are returned</span>
  <span class="ruby-comment"># by rubygems.org are broken and wrong.</span>
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">remote</span>
    <span class="ruby-comment"># Check for this spec from other sources</span>
    <span class="ruby-identifier">uris</span> = [<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">remote</span>.<span class="ruby-identifier">anonymized_uri</span>]
    <span class="ruby-identifier">uris</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">remotes_for_spec</span>(<span class="ruby-identifier">spec</span>).<span class="ruby-identifier">map</span>(<span class="ruby-operator">&amp;</span><span class="ruby-value">:anonymized_uri</span>)
    <span class="ruby-identifier">uris</span>.<span class="ruby-identifier">uniq!</span>
    <span class="ruby-constant">Installer</span>.<span class="ruby-identifier">ambiguous_gems</span> <span class="ruby-operator">&lt;&lt;</span> [<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">name</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">uris</span>] <span class="ruby-keyword">if</span> <span class="ruby-identifier">uris</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>

    <span class="ruby-identifier">path</span> = <span class="ruby-identifier">fetch_gem</span>(<span class="ruby-identifier">spec</span>)
    <span class="ruby-keyword">begin</span>
      <span class="ruby-identifier">s</span> = <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rubygems</span>.<span class="ruby-identifier">spec_from_gem</span>(<span class="ruby-identifier">path</span>, <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">settings</span>[<span class="ruby-string">&quot;trust-policy&quot;</span>])
      <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">__swap__</span>(<span class="ruby-identifier">s</span>)
    <span class="ruby-keyword">rescue</span> <span class="ruby-constant">StandardError</span>
      <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rm_rf</span>(<span class="ruby-identifier">path</span>)
      <span class="ruby-identifier">raise</span>
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-keyword">unless</span> <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">settings</span>[<span class="ruby-value">:no_install</span>]
    <span class="ruby-identifier">message</span> = <span class="ruby-node">&quot;Installing #{version_message(spec)}&quot;</span>
    <span class="ruby-identifier">message</span> <span class="ruby-operator">+=</span> <span class="ruby-string">&quot; with native extensions&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">extensions</span>.<span class="ruby-identifier">any?</span>
    <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">ui</span>.<span class="ruby-identifier">confirm</span> <span class="ruby-identifier">message</span>

    <span class="ruby-identifier">path</span> = <span class="ruby-identifier">cached_gem</span>(<span class="ruby-identifier">spec</span>)
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">requires_sudo?</span>
      <span class="ruby-identifier">install_path</span> = <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">tmp</span>(<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">full_name</span>)
      <span class="ruby-identifier">bin_path</span>     = <span class="ruby-identifier">install_path</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">&quot;bin&quot;</span>)
    <span class="ruby-keyword">else</span>
      <span class="ruby-identifier">install_path</span> = <span class="ruby-identifier">rubygems_dir</span>
      <span class="ruby-identifier">bin_path</span>     = <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">system_bindir</span>
    <span class="ruby-keyword">end</span>

    <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">mkdir_p</span> <span class="ruby-identifier">bin_path</span>, <span class="ruby-value">:no_sudo</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">executables</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rubygems</span>.<span class="ruby-identifier">provides?</span>(<span class="ruby-string">&quot;&gt;= 2.7.5&quot;</span>)

    <span class="ruby-identifier">installed_spec</span> = <span class="ruby-keyword">nil</span>
    <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rubygems</span>.<span class="ruby-identifier">preserve_paths</span> <span class="ruby-keyword">do</span>
      <span class="ruby-identifier">installed_spec</span> = <span class="ruby-constant">Bundler</span><span class="ruby-operator">::</span><span class="ruby-constant">RubyGemsGemInstaller</span>.<span class="ruby-identifier">at</span>(
        <span class="ruby-identifier">path</span>,
        <span class="ruby-value">:install_dir</span>         <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">install_path</span>.<span class="ruby-identifier">to_s</span>,
        <span class="ruby-value">:bin_dir</span>             <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">bin_path</span>.<span class="ruby-identifier">to_s</span>,
        <span class="ruby-value">:ignore_dependencies</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span>,
        <span class="ruby-value">:wrappers</span>            <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span>,
        <span class="ruby-value">:env_shebang</span>         <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span>,
        <span class="ruby-value">:build_args</span>          <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">opts</span>[<span class="ruby-value">:build_args</span>],
        <span class="ruby-value">:bundler_expected_checksum</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:checksum</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">checksum</span>,
        <span class="ruby-value">:bundler_extension_cache_path</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">extension_cache_path</span>(<span class="ruby-identifier">spec</span>)
      ).<span class="ruby-identifier">install</span>
    <span class="ruby-keyword">end</span>
    <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">full_gem_path</span> = <span class="ruby-identifier">installed_spec</span>.<span class="ruby-identifier">full_gem_path</span>

    <span class="ruby-comment"># SUDO HAX</span>
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">requires_sudo?</span>
      <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rubygems</span>.<span class="ruby-identifier">repository_subdirectories</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span><span class="ruby-operator">|</span>
        <span class="ruby-identifier">src</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">install_path</span>, <span class="ruby-identifier">name</span>, <span class="ruby-string">&quot;*&quot;</span>)
        <span class="ruby-identifier">dst</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">rubygems_dir</span>, <span class="ruby-identifier">name</span>)
        <span class="ruby-keyword">if</span> <span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;extensions&quot;</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">glob</span>(<span class="ruby-identifier">src</span>).<span class="ruby-identifier">any?</span>
          <span class="ruby-identifier">src</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">src</span>, <span class="ruby-string">&quot;*/*&quot;</span>)
          <span class="ruby-identifier">ext_src</span> = <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">glob</span>(<span class="ruby-identifier">src</span>).<span class="ruby-identifier">first</span>
          <span class="ruby-identifier">ext_src</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-identifier">src</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">-6</span>], <span class="ruby-string">&quot;&quot;</span>)
          <span class="ruby-identifier">dst</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">dst</span>, <span class="ruby-identifier">ext_src</span>))
        <span class="ruby-keyword">end</span>
        <span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">filesystem_access</span>(<span class="ruby-identifier">dst</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">Bundler</span>.<span class="ruby-identifier">mkdir_p</span>(<span class="ruby-identifier">p</span>)
        <span class="ruby-keyword">end</span>
        <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">sudo</span> <span class="ruby-node">&quot;cp -R #{src} #{dst}&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-constant">Dir</span>[<span class="ruby-identifier">src</span>].<span class="ruby-identifier">any?</span>
      <span class="ruby-keyword">end</span>

      <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">executables</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">exe</span><span class="ruby-operator">|</span>
        <span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">filesystem_access</span>(<span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">system_bindir</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">Bundler</span>.<span class="ruby-identifier">mkdir_p</span>(<span class="ruby-identifier">p</span>)
        <span class="ruby-keyword">end</span>
        <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">sudo</span> <span class="ruby-node">&quot;cp -R #{install_path}/bin/#{exe} #{Bundler.system_bindir}/&quot;</span>
      <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">end</span>
    <span class="ruby-identifier">installed_spec</span>.<span class="ruby-identifier">loaded_from</span> = <span class="ruby-identifier">loaded_from</span>(<span class="ruby-identifier">spec</span>)
  <span class="ruby-keyword">end</span>
  <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">loaded_from</span> = <span class="ruby-identifier">loaded_from</span>(<span class="ruby-identifier">spec</span>)

  <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">post_install_message</span>
<span class="ruby-keyword">ensure</span>
  <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rm_rf</span>(<span class="ruby-identifier">install_path</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">requires_sudo?</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-name" class="method-detail method-alias">
        
        <div class="method-heading">
          <span class="method-name">name</span><span
            class="method-args">()</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
        </div>

        

        
        <div class="aliases">
          Alias for: <a href="Rubygems.html#method-i-to_s">to_s</a>
        </div>
        
      </div>

    
      <div id="method-i-options" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">options</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="options-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 57</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">options</span>
  { <span class="ruby-string">&quot;remotes&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-ivar">@remotes</span>.<span class="ruby-identifier">map</span>(<span class="ruby-operator">&amp;</span><span class="ruby-value">:to_s</span>) }
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-remote-21" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">remote!</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="remote-21-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 28</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">remote!</span>
  <span class="ruby-ivar">@specs</span> = <span class="ruby-keyword">nil</span>
  <span class="ruby-ivar">@allow_remote</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-replace_remotes" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">replace_remotes</span><span
            class="method-args">(other_remotes, allow_equivalent = false)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="replace_remotes-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 234</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">replace_remotes</span>(<span class="ruby-identifier">other_remotes</span>, <span class="ruby-identifier">allow_equivalent</span> = <span class="ruby-keyword">false</span>)
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">other_remotes</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@remotes</span>

  <span class="ruby-identifier">equivalent</span> = <span class="ruby-identifier">allow_equivalent</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">equivalent_remotes?</span>(<span class="ruby-identifier">other_remotes</span>)

  <span class="ruby-ivar">@remotes</span> = []
  <span class="ruby-identifier">other_remotes</span>.<span class="ruby-identifier">reverse_each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
    <span class="ruby-identifier">add_remote</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">to_s</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-operator">!</span><span class="ruby-identifier">equivalent</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-specs" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">specs</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-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 83</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">specs</span>
  <span class="ruby-ivar">@specs</span> <span class="ruby-operator">||=</span> <span class="ruby-keyword">begin</span>
    <span class="ruby-comment"># remote_specs usually generates a way larger Index than the other</span>
    <span class="ruby-comment"># sources, and large_idx.use small_idx is way faster than</span>
    <span class="ruby-comment"># small_idx.use large_idx.</span>
    <span class="ruby-identifier">idx</span> = <span class="ruby-ivar">@allow_remote</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">remote_specs</span>.<span class="ruby-identifier">dup</span> <span class="ruby-operator">:</span> <span class="ruby-constant">Index</span>.<span class="ruby-identifier">new</span>
    <span class="ruby-identifier">idx</span>.<span class="ruby-identifier">use</span>(<span class="ruby-identifier">cached_specs</span>, <span class="ruby-value">:override_dupes</span>) <span class="ruby-keyword">if</span> <span class="ruby-ivar">@allow_cached</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@allow_remote</span>
    <span class="ruby-identifier">idx</span>.<span class="ruby-identifier">use</span>(<span class="ruby-identifier">installed_specs</span>, <span class="ruby-value">:override_dupes</span>)
    <span class="ruby-identifier">idx</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-to_lock" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">to_lock</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="to_lock-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 65</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">to_lock</span>
  <span class="ruby-identifier">out</span> = <span class="ruby-constant">String</span>.<span class="ruby-identifier">new</span>(<span class="ruby-string">&quot;GEM\n&quot;</span>)
  <span class="ruby-identifier">remotes</span>.<span class="ruby-identifier">reverse_each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">remote</span><span class="ruby-operator">|</span>
    <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;  remote: #{suppress_configured_credentials remote}\n&quot;</span>
  <span class="ruby-keyword">end</span>
  <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">&quot;  specs:\n&quot;</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-to_s" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">to_s</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="to_s-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 73</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">to_s</span>
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">remotes</span>.<span class="ruby-identifier">empty?</span>
    <span class="ruby-string">&quot;locally installed gems&quot;</span>
  <span class="ruby-keyword">else</span>
    <span class="ruby-identifier">remote_names</span> = <span class="ruby-identifier">remotes</span>.<span class="ruby-identifier">map</span>(<span class="ruby-operator">&amp;</span><span class="ruby-value">:to_s</span>).<span class="ruby-identifier">join</span>(<span class="ruby-string">&quot;, &quot;</span>)
    <span class="ruby-node">&quot;rubygems repository #{remote_names} or installed locally&quot;</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        
        <div class="aliases">
          Also aliased as: <a href="Rubygems.html#method-i-name">name</a>
        </div>
        

        
      </div>

    
      <div id="method-i-unmet_deps" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">unmet_deps</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="unmet_deps-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 247</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">unmet_deps</span>
  <span class="ruby-keyword">if</span> <span class="ruby-ivar">@allow_remote</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">api_fetchers</span>.<span class="ruby-identifier">any?</span>
    <span class="ruby-identifier">remote_specs</span>.<span class="ruby-identifier">unmet_dependency_names</span>
  <span class="ruby-keyword">else</span>
    []
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
    </section>
  
     <section id="protected-instance-5Buntitled-5D-method-details" class="method-section">
       <header>
         <h3>Protected Instance Methods</h3>
       </header>

    
      <div id="method-i-api_fetchers" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">api_fetchers</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="api_fetchers-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 387</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">api_fetchers</span>
  <span class="ruby-identifier">fetchers</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">use_api</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">fetchers</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">api_fetcher?</span> }
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-builtin_gem-3F" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">builtin_gem?</span><span
            class="method-args">(spec)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="builtin_gem-3F-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 447</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">builtin_gem?</span>(<span class="ruby-identifier">spec</span>)
  <span class="ruby-comment"># Ruby 2.1, where all included gems have this summary</span>
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">summary</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/is bundled with Ruby/</span>

  <span class="ruby-comment"># Ruby 2.0, where gemspecs are stored in specifications/default/</span>
  <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">loaded_from</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">loaded_from</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-string">&quot;specifications/default/&quot;</span>)
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-cache_path" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">cache_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="cache_path-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 467</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">cache_path</span>
  <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">app_cache</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-cached_gem" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">cached_gem</span><span
            class="method-args">(spec)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="cached_gem-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 314</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">cached_gem</span>(<span class="ruby-identifier">spec</span>)
  <span class="ruby-identifier">cached_gem</span> = <span class="ruby-identifier">cached_path</span>(<span class="ruby-identifier">spec</span>)
  <span class="ruby-keyword">unless</span> <span class="ruby-identifier">cached_gem</span>
    <span class="ruby-identifier">raise</span> <span class="ruby-constant">Bundler</span><span class="ruby-operator">::</span><span class="ruby-constant">GemNotFound</span>, <span class="ruby-node">&quot;Could not find #{spec.file_name} for installation&quot;</span>
  <span class="ruby-keyword">end</span>
  <span class="ruby-identifier">cached_gem</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-cached_path" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">cached_path</span><span
            class="method-args">(spec)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="cached_path-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 322</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">cached_path</span>(<span class="ruby-identifier">spec</span>)
  <span class="ruby-identifier">possibilities</span> = <span class="ruby-ivar">@caches</span>.<span class="ruby-identifier">map</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-node">&quot;#{p}/#{spec.file_name}&quot;</span> }
  <span class="ruby-identifier">possibilities</span>.<span class="ruby-identifier">find</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">p</span>) }
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-cached_specs" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">cached_specs</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="cached_specs-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 368</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">cached_specs</span>
  <span class="ruby-ivar">@cached_specs</span> <span class="ruby-operator">||=</span> <span class="ruby-keyword">begin</span>
    <span class="ruby-identifier">idx</span> = <span class="ruby-identifier">installed_specs</span>.<span class="ruby-identifier">dup</span>

    <span class="ruby-constant">Dir</span>[<span class="ruby-node">&quot;#{cache_path}/*.gem&quot;</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">gemfile</span><span class="ruby-operator">|</span>
      <span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">gemfile</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/^bundler\-[\d\.]+?\.gem/</span>
      <span class="ruby-identifier">s</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rubygems</span>.<span class="ruby-identifier">spec_from_gem</span>(<span class="ruby-identifier">gemfile</span>)
      <span class="ruby-identifier">s</span>.<span class="ruby-identifier">source</span> = <span class="ruby-keyword">self</span>
      <span class="ruby-keyword">if</span> <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rubygems</span>.<span class="ruby-identifier">spec_missing_extensions?</span>(<span class="ruby-identifier">s</span>, <span class="ruby-keyword">false</span>)
        <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">ui</span>.<span class="ruby-identifier">debug</span> <span class="ruby-node">&quot;Source #{self} is ignoring #{s} because it is missing extensions&quot;</span>
        <span class="ruby-keyword">next</span>
      <span class="ruby-keyword">end</span>
      <span class="ruby-identifier">idx</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">s</span>
    <span class="ruby-keyword">end</span>

    <span class="ruby-identifier">idx</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-credless_remotes" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">credless_remotes</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="credless_remotes-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 299</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">credless_remotes</span>
  <span class="ruby-identifier">remotes</span>.<span class="ruby-identifier">map</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">method</span>(<span class="ruby-value">:suppress_configured_credentials</span>))
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-fetch_gem" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">fetch_gem</span><span
            class="method-args">(spec)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="fetch_gem-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 422</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">fetch_gem</span>(<span class="ruby-identifier">spec</span>)
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">remote</span>

  <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">fetch_platform</span>

  <span class="ruby-identifier">download_path</span> = <span class="ruby-identifier">requires_sudo?</span> <span class="ruby-operator">?</span> <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">tmp</span>(<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">full_name</span>) <span class="ruby-operator">:</span> <span class="ruby-identifier">rubygems_dir</span>
  <span class="ruby-identifier">gem_path</span> = <span class="ruby-node">&quot;#{rubygems_dir}/cache/#{spec.full_name}.gem&quot;</span>

  <span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">filesystem_access</span>(<span class="ruby-node">&quot;#{download_path}/cache&quot;</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-identifier">download_gem</span>(<span class="ruby-identifier">spec</span>, <span class="ruby-identifier">download_path</span>)

  <span class="ruby-keyword">if</span> <span class="ruby-identifier">requires_sudo?</span>
    <span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">filesystem_access</span>(<span class="ruby-node">&quot;#{rubygems_dir}/cache&quot;</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">Bundler</span>.<span class="ruby-identifier">mkdir_p</span>(<span class="ruby-identifier">p</span>)
    <span class="ruby-keyword">end</span>
    <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">sudo</span> <span class="ruby-node">&quot;mv #{download_path}/cache/#{spec.full_name}.gem #{gem_path}&quot;</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-identifier">gem_path</span>
<span class="ruby-keyword">ensure</span>
  <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rm_rf</span>(<span class="ruby-identifier">download_path</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">requires_sudo?</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-fetch_names" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">fetch_names</span><span
            class="method-args">(fetchers, dependency_names, index, override_dupes)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="fetch_names-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 409</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">fetch_names</span>(<span class="ruby-identifier">fetchers</span>, <span class="ruby-identifier">dependency_names</span>, <span class="ruby-identifier">index</span>, <span class="ruby-identifier">override_dupes</span>)
  <span class="ruby-identifier">fetchers</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span>
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">dependency_names</span>
      <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">ui</span>.<span class="ruby-identifier">info</span> <span class="ruby-node">&quot;Fetching gem metadata from #{f.uri}&quot;</span>, <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">ui</span>.<span class="ruby-identifier">debug?</span>
      <span class="ruby-identifier">index</span>.<span class="ruby-identifier">use</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">specs_with_retry</span>(<span class="ruby-identifier">dependency_names</span>, <span class="ruby-keyword">self</span>), <span class="ruby-identifier">override_dupes</span>
      <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">ui</span>.<span class="ruby-identifier">info</span> <span class="ruby-string">&quot;&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">ui</span>.<span class="ruby-identifier">debug?</span> <span class="ruby-comment"># new line now that the dots are over</span>
    <span class="ruby-keyword">else</span>
      <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">ui</span>.<span class="ruby-identifier">info</span> <span class="ruby-node">&quot;Fetching source index from #{f.uri}&quot;</span>
      <span class="ruby-identifier">index</span>.<span class="ruby-identifier">use</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">specs_with_retry</span>(<span class="ruby-keyword">nil</span>, <span class="ruby-keyword">self</span>), <span class="ruby-identifier">override_dupes</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-i-installed-3F" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">installed?</span><span
            class="method-args">(spec)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="installed-3F-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 455</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">installed?</span>(<span class="ruby-identifier">spec</span>)
  <span class="ruby-identifier">installed_specs</span>[<span class="ruby-identifier">spec</span>].<span class="ruby-identifier">any?</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-installed_specs" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">installed_specs</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="installed_specs-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 354</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">installed_specs</span>
  <span class="ruby-ivar">@installed_specs</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Index</span>.<span class="ruby-identifier">build</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">idx</span><span class="ruby-operator">|</span>
    <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rubygems</span>.<span class="ruby-identifier">all_specs</span>.<span class="ruby-identifier">reverse_each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">spec</span><span class="ruby-operator">|</span>
      <span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;bundler&quot;</span>
      <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">source</span> = <span class="ruby-keyword">self</span>
      <span class="ruby-keyword">if</span> <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rubygems</span>.<span class="ruby-identifier">spec_missing_extensions?</span>(<span class="ruby-identifier">spec</span>, <span class="ruby-keyword">false</span>)
        <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">ui</span>.<span class="ruby-identifier">debug</span> <span class="ruby-node">&quot;Source #{self} is ignoring #{spec} because it is missing extensions&quot;</span>
        <span class="ruby-keyword">next</span>
      <span class="ruby-keyword">end</span>
      <span class="ruby-identifier">idx</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">spec</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-i-loaded_from" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">loaded_from</span><span
            class="method-args">(spec)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="loaded_from-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 310</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">loaded_from</span>(<span class="ruby-identifier">spec</span>)
  <span class="ruby-node">&quot;#{rubygems_dir}/specifications/#{spec.full_name}.gemspec&quot;</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-normalize_uri" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">normalize_uri</span><span
            class="method-args">(uri)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="normalize_uri-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 327</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">normalize_uri</span>(<span class="ruby-identifier">uri</span>)
  <span class="ruby-identifier">uri</span> = <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">to_s</span>
  <span class="ruby-identifier">uri</span> = <span class="ruby-node">&quot;#{uri}/&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">uri</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">%r{/$}</span>
  <span class="ruby-identifier">require_relative</span> <span class="ruby-string">&quot;../vendored_uri&quot;</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">uri</span>)
  <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;The source must be an absolute URI. For example:\n&quot;</span> \
    <span class="ruby-string">&quot;source &#39;https://rubygems.org&#39;&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">uri</span>.<span class="ruby-identifier">absolute?</span> <span class="ruby-operator">||</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">HTTP</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">host</span>.<span class="ruby-identifier">nil?</span>)
  <span class="ruby-identifier">uri</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-remote_specs" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">remote_specs</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="remote_specs-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 391</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">remote_specs</span>
  <span class="ruby-ivar">@remote_specs</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Index</span>.<span class="ruby-identifier">build</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">idx</span><span class="ruby-operator">|</span>
    <span class="ruby-identifier">index_fetchers</span> = <span class="ruby-identifier">fetchers</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">api_fetchers</span>

    <span class="ruby-comment"># gather lists from non-api sites</span>
    <span class="ruby-identifier">fetch_names</span>(<span class="ruby-identifier">index_fetchers</span>, <span class="ruby-keyword">nil</span>, <span class="ruby-identifier">idx</span>, <span class="ruby-keyword">false</span>)

    <span class="ruby-comment"># because ensuring we have all the gems we need involves downloading</span>
    <span class="ruby-comment"># the gemspecs of those gems, if the non-api sites contain more than</span>
    <span class="ruby-comment"># about 500 gems, we treat all sites as non-api for speed.</span>
    <span class="ruby-identifier">allow_api</span> = <span class="ruby-identifier">idx</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&lt;</span> <span class="ruby-constant">API_REQUEST_LIMIT</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">dependency_names</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&lt;</span> <span class="ruby-constant">API_REQUEST_LIMIT</span>
    <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">ui</span>.<span class="ruby-identifier">debug</span> <span class="ruby-node">&quot;Need to query more than #{API_REQUEST_LIMIT} gems.&quot;</span> \
      <span class="ruby-string">&quot; Downloading full index instead...&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">allow_api</span>

    <span class="ruby-identifier">fetch_names</span>(<span class="ruby-identifier">api_fetchers</span>, <span class="ruby-identifier">allow_api</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">dependency_names</span>, <span class="ruby-identifier">idx</span>, <span class="ruby-keyword">false</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-remotes_for_spec" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">remotes_for_spec</span><span
            class="method-args">(spec)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="remotes_for_spec-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 303</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">remotes_for_spec</span>(<span class="ruby-identifier">spec</span>)
  <span class="ruby-identifier">specs</span>.<span class="ruby-identifier">search_all</span>(<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">name</span>).<span class="ruby-identifier">inject</span>([]) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">uris</span>, <span class="ruby-identifier">s</span><span class="ruby-operator">|</span>
    <span class="ruby-identifier">uris</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">remote</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">remote</span>
    <span class="ruby-identifier">uris</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-remove_auth" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">remove_auth</span><span
            class="method-args">(remote)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="remove_auth-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 346</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">remove_auth</span>(<span class="ruby-identifier">remote</span>)
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">remote</span>.<span class="ruby-identifier">user</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">remote</span>.<span class="ruby-identifier">password</span>
    <span class="ruby-identifier">remote</span>.<span class="ruby-identifier">dup</span>.<span class="ruby-identifier">tap</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">uri</span><span class="ruby-operator">|</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">user</span> = <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">password</span> = <span class="ruby-keyword">nil</span> }.<span class="ruby-identifier">to_s</span>
  <span class="ruby-keyword">else</span>
    <span class="ruby-identifier">remote</span>.<span class="ruby-identifier">to_s</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-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/source/rubygems.rb, line 459</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">requires_sudo?</span>
  <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">requires_sudo?</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-rubygems_dir" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">rubygems_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="rubygems_dir-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 463</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">rubygems_dir</span>
  <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rubygems</span>.<span class="ruby-identifier">gem_dir</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-suppress_configured_credentials" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">suppress_configured_credentials</span><span
            class="method-args">(remote)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="suppress_configured_credentials-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 337</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">suppress_configured_credentials</span>(<span class="ruby-identifier">remote</span>)
  <span class="ruby-identifier">remote_nouser</span> = <span class="ruby-identifier">remove_auth</span>(<span class="ruby-identifier">remote</span>)
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">remote</span>.<span class="ruby-identifier">userinfo</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">remote</span>.<span class="ruby-identifier">userinfo</span> <span class="ruby-operator">==</span> <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">settings</span>[<span class="ruby-identifier">remote_nouser</span>]
    <span class="ruby-identifier">remote_nouser</span>
  <span class="ruby-keyword">else</span>
    <span class="ruby-identifier">remote</span>
  <span class="ruby-keyword">end</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-cache_globally" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">cache_globally</span><span
            class="method-args">(spec, local_cache_path)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Checks if the requested spec exists in the global cache. If it does not, we create the relevant global cache subdirectory if it does not exist and copy the spec from the local cache to the global cache.</p>

<p>@param  [Specification] spec</p>

<pre>the spec we want to copy to the global cache.</pre>

<p>@param  [String] local_cache_path</p>

<pre>the local directory from which we want to copy the .gem.</pre>
          
          

          
          <div class="method-source-code" id="cache_globally-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 510</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">cache_globally</span>(<span class="ruby-identifier">spec</span>, <span class="ruby-identifier">local_cache_path</span>)
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">cache_path</span> = <span class="ruby-identifier">download_cache_path</span>(<span class="ruby-identifier">spec</span>)
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">cache_path</span>.<span class="ruby-identifier">exist?</span>

  <span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">filesystem_access</span>(<span class="ruby-identifier">cache_path</span>.<span class="ruby-identifier">dirname</span>, <span class="ruby-operator">&amp;</span><span class="ruby-value">:mkpath</span>)
  <span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">filesystem_access</span>(<span class="ruby-identifier">cache_path</span>) <span class="ruby-keyword">do</span>
    <span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">cp</span>(<span class="ruby-identifier">local_cache_path</span>, <span class="ruby-identifier">cache_path</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-download_cache_path" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">download_cache_path</span><span
            class="method-args">(spec)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Returns the global cache path of the calling Rubygems::Source object.</p>

<p>Note that the <a href="../Source.html"><code>Source</code></a> determines the path&#39;s subdirectory. We use this subdirectory in the global cache path so that gems with the same name – and possibly different versions – from different sources are saved to their respective subdirectories and do not override one another.</p>

<p>@param  [Gem::Specification] specification</p>

<p>@return [Pathname] The global cache path.</p>
          
          

          
          <div class="method-source-code" id="download_cache_path-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 531</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">download_cache_path</span>(<span class="ruby-identifier">spec</span>)
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">feature_flag</span>.<span class="ruby-identifier">global_gem_cache?</span>
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">remote</span> = <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">remote</span>
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">cache_slug</span> = <span class="ruby-identifier">remote</span>.<span class="ruby-identifier">cache_slug</span>

  <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">user_cache</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">&quot;gems&quot;</span>, <span class="ruby-identifier">cache_slug</span>, <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">file_name</span>)
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-download_gem" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">download_gem</span><span
            class="method-args">(spec, download_path)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Checks if the requested spec exists in the global cache. If it does, we copy it to the download path, and if it does not, we download it.</p>

<p>@param  [Specification] spec</p>

<pre>the spec we want to download or retrieve from the cache.</pre>

<p>@param  [String] download_path</p>

<pre>the local directory the .gem will end up in.</pre>
          
          

          
          <div class="method-source-code" id="download_gem-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 482</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">download_gem</span>(<span class="ruby-identifier">spec</span>, <span class="ruby-identifier">download_path</span>)
  <span class="ruby-identifier">local_path</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">download_path</span>, <span class="ruby-node">&quot;cache/#{spec.full_name}.gem&quot;</span>)

  <span class="ruby-keyword">if</span> (<span class="ruby-identifier">cache_path</span> = <span class="ruby-identifier">download_cache_path</span>(<span class="ruby-identifier">spec</span>)) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">cache_path</span>.<span class="ruby-identifier">file?</span>
    <span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">filesystem_access</span>(<span class="ruby-identifier">local_path</span>) <span class="ruby-keyword">do</span>
      <span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">cp</span>(<span class="ruby-identifier">cache_path</span>, <span class="ruby-identifier">local_path</span>)
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">else</span>
    <span class="ruby-identifier">uri</span> = <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">remote</span>.<span class="ruby-identifier">uri</span>
    <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">ui</span>.<span class="ruby-identifier">confirm</span>(<span class="ruby-node">&quot;Fetching #{version_message(spec)}&quot;</span>)
    <span class="ruby-identifier">rubygems_local_path</span> = <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">rubygems</span>.<span class="ruby-identifier">download_gem</span>(<span class="ruby-identifier">spec</span>, <span class="ruby-identifier">uri</span>, <span class="ruby-identifier">download_path</span>)
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">rubygems_local_path</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">local_path</span>
      <span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mv</span>(<span class="ruby-identifier">rubygems_local_path</span>, <span class="ruby-identifier">local_path</span>)
    <span class="ruby-keyword">end</span>
    <span class="ruby-identifier">cache_globally</span>(<span class="ruby-identifier">spec</span>, <span class="ruby-identifier">local_path</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-extension_cache_slug" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">extension_cache_slug</span><span
            class="method-args">(spec)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="extension_cache_slug-source">
            <pre><span class="ruby-comment"># File lib/bundler/source/rubygems.rb, line 539</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">extension_cache_slug</span>(<span class="ruby-identifier">spec</span>)
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">remote</span> = <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">remote</span>
  <span class="ruby-identifier">remote</span>.<span class="ruby-identifier">cache_slug</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>