File: C:/Ruby27-x64/share/doc/ruby/html/Bundler/EndpointSpecification.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class Bundler::EndpointSpecification - 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="../Gem/Specification.html">Gem::Specification</a>
</div>
<div id="includes-section" class="nav-section">
<h3>Included Modules</h3>
<ul class="link-list">
<li><a class="include" href="MatchPlatform.html">Bundler::MatchPlatform</a>
</ul>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li class="calls-super" ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-__swap__">#__swap__</a>
<li ><a href="#method-i-_local_specification">#_local_specification</a>
<li class="calls-super" ><a href="#method-i-bindir">#bindir</a>
<li ><a href="#method-i-build_dependency">#build_dependency</a>
<li class="calls-super" ><a href="#method-i-executables">#executables</a>
<li class="calls-super" ><a href="#method-i-extensions">#extensions</a>
<li ><a href="#method-i-fetch_platform">#fetch_platform</a>
<li class="calls-super" ><a href="#method-i-load_paths">#load_paths</a>
<li ><a href="#method-i-local_specification_path">#local_specification_path</a>
<li ><a href="#method-i-parse_metadata">#parse_metadata</a>
<li class="calls-super" ><a href="#method-i-post_install_message">#post_install_message</a>
<li class="calls-super" ><a href="#method-i-require_paths">#require_paths</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-Bundler::EndpointSpecification">
<h1 id="class-Bundler::EndpointSpecification" class="class">
class Bundler::EndpointSpecification
</h1>
<section class="description">
<p>used for Creating Specifications from the Gemcutter Endpoint</p>
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section class="constants-list">
<header>
<h3>Constants</h3>
</header>
<dl>
<dt id="ILLFORMED_MESSAGE">ILLFORMED_MESSAGE
<dd>
</dl>
</section>
<section class="attribute-method-details" class="method-section">
<header>
<h3>Attributes</h3>
</header>
<div id="attribute-i-checksum" class="method-detail">
<div class="method-heading attribute-method-heading">
<span class="method-name">checksum</span><span
class="attribute-access-type">[R]</span>
</div>
<div class="method-description">
</div>
</div>
<div id="attribute-i-dependencies" class="method-detail">
<div class="method-heading attribute-method-heading">
<span class="method-name">dependencies</span><span
class="attribute-access-type">[RW]</span>
</div>
<div class="method-description">
</div>
</div>
<div id="attribute-i-name" class="method-detail">
<div class="method-heading attribute-method-heading">
<span class="method-name">name</span><span
class="attribute-access-type">[R]</span>
</div>
<div class="method-description">
</div>
</div>
<div id="attribute-i-platform" class="method-detail">
<div class="method-heading attribute-method-heading">
<span class="method-name">platform</span><span
class="attribute-access-type">[R]</span>
</div>
<div class="method-description">
</div>
</div>
<div id="attribute-i-remote" class="method-detail">
<div class="method-heading attribute-method-heading">
<span class="method-name">remote</span><span
class="attribute-access-type">[RW]</span>
</div>
<div class="method-description">
</div>
</div>
<div id="attribute-i-required_ruby_version" class="method-detail">
<div class="method-heading attribute-method-heading">
<span class="method-name">required_ruby_version</span><span
class="attribute-access-type">[R]</span>
</div>
<div class="method-description">
</div>
</div>
<div id="attribute-i-required_rubygems_version" class="method-detail">
<div class="method-heading attribute-method-heading">
<span class="method-name">required_rubygems_version</span><span
class="attribute-access-type">[R]</span>
</div>
<div class="method-description">
</div>
</div>
<div id="attribute-i-source" class="method-detail">
<div class="method-heading attribute-method-heading">
<span class="method-name">source</span><span
class="attribute-access-type">[RW]</span>
</div>
<div class="method-description">
</div>
</div>
<div id="attribute-i-version" class="method-detail">
<div class="method-heading attribute-method-heading">
<span class="method-name">version</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-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(name, version, platform, dependencies, metadata = nil)</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="../Gem/Specification.html#method-c-new"><code>Gem::Specification::new</code></a>
</div>
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/bundler/endpoint_specification.rb, line 12</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">version</span>, <span class="ruby-identifier">platform</span>, <span class="ruby-identifier">dependencies</span>, <span class="ruby-identifier">metadata</span> = <span class="ruby-keyword">nil</span>)
<span class="ruby-keyword">super</span>()
<span class="ruby-ivar">@name</span> = <span class="ruby-identifier">name</span>
<span class="ruby-ivar">@version</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Version</span>.<span class="ruby-identifier">create</span> <span class="ruby-identifier">version</span>
<span class="ruby-ivar">@platform</span> = <span class="ruby-identifier">platform</span>
<span class="ruby-ivar">@dependencies</span> = <span class="ruby-identifier">dependencies</span>.<span class="ruby-identifier">map</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">dep</span>, <span class="ruby-identifier">reqs</span><span class="ruby-operator">|</span> <span class="ruby-identifier">build_dependency</span>(<span class="ruby-identifier">dep</span>, <span class="ruby-identifier">reqs</span>) }
<span class="ruby-ivar">@loaded_from</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@remote_specification</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">parse_metadata</span>(<span class="ruby-identifier">metadata</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-__swap__" class="method-detail ">
<div class="method-heading">
<span class="method-name">__swap__</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="__swap__-source">
<pre><span class="ruby-comment"># File lib/bundler/endpoint_specification.rb, line 102</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">__swap__</span>(<span class="ruby-identifier">spec</span>)
<span class="ruby-constant">SharedHelpers</span>.<span class="ruby-identifier">ensure_same_dependencies</span>(<span class="ruby-keyword">self</span>, <span class="ruby-identifier">dependencies</span>, <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">dependencies</span>)
<span class="ruby-ivar">@remote_specification</span> = <span class="ruby-identifier">spec</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-_local_specification" class="method-detail ">
<div class="method-heading">
<span class="method-name">_local_specification</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="_local_specification-source">
<pre><span class="ruby-comment"># File lib/bundler/endpoint_specification.rb, line 95</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">_local_specification</span>
<span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@loaded_from</span> <span class="ruby-operator">&&</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">local_specification_path</span>)
<span class="ruby-identifier">eval</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">local_specification_path</span>)).<span class="ruby-identifier">tap</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-identifier">spec</span>.<span class="ruby-identifier">loaded_from</span> = <span class="ruby-ivar">@loaded_from</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-bindir" class="method-detail ">
<div class="method-heading">
<span class="method-name">bindir</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>needed for bundle clean</p>
<div class="method-calls-super">
Calls superclass method
</div>
<div class="method-source-code" id="bindir-source">
<pre><span class="ruby-comment"># File lib/bundler/endpoint_specification.rb, line 63</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">bindir</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@remote_specification</span>
<span class="ruby-ivar">@remote_specification</span>.<span class="ruby-identifier">bindir</span>
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">_local_specification</span>
<span class="ruby-identifier">_local_specification</span>.<span class="ruby-identifier">bindir</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">super</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-executables" class="method-detail ">
<div class="method-heading">
<span class="method-name">executables</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>needed for binstubs</p>
<div class="method-calls-super">
Calls superclass method
<a href="../Gem/Specification.html#method-i-executables"><code>Gem::Specification#executables</code></a>
</div>
<div class="method-source-code" id="executables-source">
<pre><span class="ruby-comment"># File lib/bundler/endpoint_specification.rb, line 52</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">executables</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@remote_specification</span>
<span class="ruby-ivar">@remote_specification</span>.<span class="ruby-identifier">executables</span>
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">_local_specification</span>
<span class="ruby-identifier">_local_specification</span>.<span class="ruby-identifier">executables</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">super</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-extensions" class="method-detail ">
<div class="method-heading">
<span class="method-name">extensions</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>needed for “with native extensions” during install</p>
<div class="method-calls-super">
Calls superclass method
<a href="../Gem/Specification.html#method-i-extensions"><code>Gem::Specification#extensions</code></a>
</div>
<div class="method-source-code" id="extensions-source">
<pre><span class="ruby-comment"># File lib/bundler/endpoint_specification.rb, line 85</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">extensions</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@remote_specification</span>
<span class="ruby-ivar">@remote_specification</span>.<span class="ruby-identifier">extensions</span>
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">_local_specification</span>
<span class="ruby-identifier">_local_specification</span>.<span class="ruby-identifier">extensions</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">super</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-fetch_platform" class="method-detail ">
<div class="method-heading">
<span class="method-name">fetch_platform</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="fetch_platform-source">
<pre><span class="ruby-comment"># File lib/bundler/endpoint_specification.rb, line 25</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">fetch_platform</span>
<span class="ruby-ivar">@platform</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-load_paths" class="method-detail ">
<div class="method-heading">
<span class="method-name">load_paths</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>needed for inline</p>
<div class="method-calls-super">
Calls superclass method
<a href="../Gem/Specification.html#method-i-load_paths"><code>Gem::Specification#load_paths</code></a>
</div>
<div class="method-source-code" id="load_paths-source">
<pre><span class="ruby-comment"># File lib/bundler/endpoint_specification.rb, line 42</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">load_paths</span>
<span class="ruby-comment"># remote specs aren't installed, and can't have load_paths</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">_local_specification</span>
<span class="ruby-identifier">_local_specification</span>.<span class="ruby-identifier">load_paths</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">super</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-post_install_message" class="method-detail ">
<div class="method-heading">
<span class="method-name">post_install_message</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>needed for post_install_messages during install</p>
<div class="method-calls-super">
Calls superclass method
</div>
<div class="method-source-code" id="post_install_message-source">
<pre><span class="ruby-comment"># File lib/bundler/endpoint_specification.rb, line 74</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">post_install_message</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@remote_specification</span>
<span class="ruby-ivar">@remote_specification</span>.<span class="ruby-identifier">post_install_message</span>
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">_local_specification</span>
<span class="ruby-identifier">_local_specification</span>.<span class="ruby-identifier">post_install_message</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">super</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-require_paths" class="method-detail ">
<div class="method-heading">
<span class="method-name">require_paths</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>needed for standalone, load required_paths from local gemspec after the gem is installed</p>
<div class="method-calls-super">
Calls superclass method
<a href="../Gem/BasicSpecification.html#method-i-require_paths"><code>Gem::BasicSpecification#require_paths</code></a>
</div>
<div class="method-source-code" id="require_paths-source">
<pre><span class="ruby-comment"># File lib/bundler/endpoint_specification.rb, line 31</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">require_paths</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@remote_specification</span>
<span class="ruby-ivar">@remote_specification</span>.<span class="ruby-identifier">require_paths</span>
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">_local_specification</span>
<span class="ruby-identifier">_local_specification</span>.<span class="ruby-identifier">require_paths</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">super</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-build_dependency" class="method-detail ">
<div class="method-heading">
<span class="method-name">build_dependency</span><span
class="method-args">(name, requirements)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="build_dependency-source">
<pre><span class="ruby-comment"># File lib/bundler/endpoint_specification.rb, line 130</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">build_dependency</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">requirements</span>)
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Dependency</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">requirements</span>)
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">ArgumentError</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">e</span>
<span class="ruby-identifier">raise</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">message</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-constant">ILLFORMED_MESSAGE</span>)
<span class="ruby-identifier">puts</span> <span class="ruby-comment"># we shouldn't print the error message on the "fetching info" status line</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">GemspecError</span>,
<span class="ruby-node">"Unfortunately, the gem #{name} (#{version}) has an invalid "</span> \
<span class="ruby-string">"gemspec.\nPlease ask the gem author to yank the bad version to fix "</span> \
<span class="ruby-string">"this issue. For more information, see http://bit.ly/syck-defaultkey."</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-local_specification_path" class="method-detail ">
<div class="method-heading">
<span class="method-name">local_specification_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="local_specification_path-source">
<pre><span class="ruby-comment"># File lib/bundler/endpoint_specification.rb, line 109</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">local_specification_path</span>
<span class="ruby-node">"#{base_dir}/specifications/#{full_name}.gemspec"</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-parse_metadata" class="method-detail ">
<div class="method-heading">
<span class="method-name">parse_metadata</span><span
class="method-args">(data)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="parse_metadata-source">
<pre><span class="ruby-comment"># File lib/bundler/endpoint_specification.rb, line 113</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">parse_metadata</span>(<span class="ruby-identifier">data</span>)
<span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">data</span>
<span class="ruby-identifier">data</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>, <span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">next</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">v</span>
<span class="ruby-keyword">case</span> <span class="ruby-identifier">k</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-keyword">when</span> <span class="ruby-string">"checksum"</span>
<span class="ruby-ivar">@checksum</span> = <span class="ruby-identifier">v</span>.<span class="ruby-identifier">last</span>
<span class="ruby-keyword">when</span> <span class="ruby-string">"rubygems"</span>
<span class="ruby-ivar">@required_rubygems_version</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Requirement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">v</span>)
<span class="ruby-keyword">when</span> <span class="ruby-string">"ruby"</span>
<span class="ruby-ivar">@required_ruby_version</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Requirement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">v</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">StandardError</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">e</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">GemspecError</span>, <span class="ruby-node">"There was an error parsing the metadata for the gem #{name} (#{version}): #{e.class}\n#{e}\nThe metadata was #{data.inspect}"</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>