File: C:/Ruby27-x64/share/doc/ruby/html/Gem.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module Gem - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "./";
var index_rel_prefix = "./";
</script>
<script src="./js/navigation.js" defer></script>
<script src="./js/search.js" defer></script>
<script src="./js/search_index.js" defer></script>
<script src="./js/searcher.js" defer></script>
<script src="./js/darkfish.js" defer></script>
<link href="./css/fonts.css" rel="stylesheet">
<link href="./css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="./index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="./table_of_contents.html#pages">Pages</a>
<a href="./table_of_contents.html#classes">Classes</a>
<a href="./table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div class="nav-section">
<h3>Table of Contents</h3>
<ul class="link-list" role="directory">
<li><a href="#module-Gem-label-RubyGems+Plugins">RubyGems Plugins</a>
<li><a href="#module-Gem-label-RubyGems+Defaults-2C+Packaging">RubyGems Defaults, Packaging</a>
<li><a href="#module-Gem-label-Bugs">Bugs</a>
<li><a href="#module-Gem-label-Credits">Credits</a>
<li><a href="#module-Gem-label-License">License</a>
</ul>
</div>
<div id="class-metadata">
<div id="extends-section" class="nav-section">
<h3>Extended With Modules</h3>
<ul class="link-list">
<li><a class="extend" href="Gem/Deprecate.html">Gem::Deprecate</a>
<li><a class="extend" href="Gem/Deprecate.html">Gem::Deprecate</a>
<li><a class="extend" href="Gem/Deprecate.html">Gem::Deprecate</a>
<li><a class="extend" href="Gem/Deprecate.html">Gem::Deprecate</a>
</ul>
</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-activated_gem_paths">::activated_gem_paths</a>
<li ><a href="#method-c-add_to_load_path">::add_to_load_path</a>
<li ><a href="#method-c-bin_path">::bin_path</a>
<li ><a href="#method-c-binary_mode">::binary_mode</a>
<li ><a href="#method-c-bindir">::bindir</a>
<li ><a href="#method-c-clear_default_specs">::clear_default_specs</a>
<li ><a href="#method-c-clear_paths">::clear_paths</a>
<li ><a href="#method-c-config_file">::config_file</a>
<li ><a href="#method-c-configuration">::configuration</a>
<li ><a href="#method-c-configuration-3D">::configuration=</a>
<li ><a href="#method-c-datadir">::datadir</a>
<li ><a href="#method-c-default_bindir">::default_bindir</a>
<li ><a href="#method-c-default_cert_path">::default_cert_path</a>
<li ><a href="#method-c-default_dir">::default_dir</a>
<li ><a href="#method-c-default_exec_format">::default_exec_format</a>
<li ><a href="#method-c-default_ext_dir_for">::default_ext_dir_for</a>
<li ><a href="#method-c-default_key_path">::default_key_path</a>
<li ><a href="#method-c-default_path">::default_path</a>
<li ><a href="#method-c-default_rubygems_dirs">::default_rubygems_dirs</a>
<li ><a href="#method-c-default_sources">::default_sources</a>
<li ><a href="#method-c-default_spec_cache_dir">::default_spec_cache_dir</a>
<li ><a href="#method-c-default_specifications_dir">::default_specifications_dir</a>
<li ><a href="#method-c-deflate">::deflate</a>
<li ><a href="#method-c-detect_gemdeps">::detect_gemdeps</a>
<li ><a href="#method-c-dir">::dir</a>
<li ><a href="#method-c-done_installing">::done_installing</a>
<li ><a href="#method-c-ensure_default_gem_subdirectories">::ensure_default_gem_subdirectories</a>
<li ><a href="#method-c-ensure_gem_subdirectories">::ensure_gem_subdirectories</a>
<li ><a href="#method-c-env_requirement">::env_requirement</a>
<li ><a href="#method-c-find_files">::find_files</a>
<li ><a href="#method-c-find_home">::find_home</a>
<li ><a href="#method-c-find_latest_files">::find_latest_files</a>
<li ><a href="#method-c-find_spec_for_exe">::find_spec_for_exe</a>
<li ><a href="#method-c-find_unresolved_default_spec">::find_unresolved_default_spec</a>
<li ><a href="#method-c-finish_resolve">::finish_resolve</a>
<li ><a href="#method-c-gunzip">::gunzip</a>
<li ><a href="#method-c-gzip">::gzip</a>
<li ><a href="#method-c-host">::host</a>
<li ><a href="#method-c-host-3D">::host=</a>
<li ><a href="#method-c-inflate">::inflate</a>
<li ><a href="#method-c-install">::install</a>
<li ><a href="#method-c-java_platform-3F">::java_platform?</a>
<li ><a href="#method-c-latest_rubygems_version">::latest_rubygems_version</a>
<li ><a href="#method-c-latest_spec_for">::latest_spec_for</a>
<li ><a href="#method-c-latest_version_for">::latest_version_for</a>
<li ><a href="#method-c-load_env_plugins">::load_env_plugins</a>
<li ><a href="#method-c-load_path_insert_index">::load_path_insert_index</a>
<li ><a href="#method-c-load_plugins">::load_plugins</a>
<li ><a href="#method-c-load_yaml">::load_yaml</a>
<li ><a href="#method-c-location_of_caller">::location_of_caller</a>
<li ><a href="#method-c-marshal_version">::marshal_version</a>
<li ><a href="#method-c-needs">::needs</a>
<li ><a href="#method-c-operating_system_defaults">::operating_system_defaults</a>
<li ><a href="#method-c-path">::path</a>
<li ><a href="#method-c-path_separator">::path_separator</a>
<li ><a href="#method-c-paths">::paths</a>
<li ><a href="#method-c-paths-3D">::paths=</a>
<li ><a href="#method-c-platform_defaults">::platform_defaults</a>
<li ><a href="#method-c-platforms">::platforms</a>
<li ><a href="#method-c-platforms-3D">::platforms=</a>
<li ><a href="#method-c-post_build">::post_build</a>
<li ><a href="#method-c-post_install">::post_install</a>
<li ><a href="#method-c-post_reset">::post_reset</a>
<li ><a href="#method-c-post_uninstall">::post_uninstall</a>
<li ><a href="#method-c-pre_install">::pre_install</a>
<li ><a href="#method-c-pre_reset">::pre_reset</a>
<li ><a href="#method-c-pre_uninstall">::pre_uninstall</a>
<li ><a href="#method-c-prefix">::prefix</a>
<li ><a href="#method-c-read_binary">::read_binary</a>
<li ><a href="#method-c-refresh">::refresh</a>
<li ><a href="#method-c-register_default_spec">::register_default_spec</a>
<li ><a href="#method-c-ruby">::ruby</a>
<li ><a href="#method-c-ruby-3D">::ruby=</a>
<li ><a href="#method-c-ruby_api_version">::ruby_api_version</a>
<li ><a href="#method-c-ruby_engine">::ruby_engine</a>
<li ><a href="#method-c-ruby_version">::ruby_version</a>
<li ><a href="#method-c-rubygems_version">::rubygems_version</a>
<li ><a href="#method-c-searcher-3D">::searcher=</a>
<li ><a href="#method-c-source_date_epoch">::source_date_epoch</a>
<li ><a href="#method-c-source_date_epoch_string">::source_date_epoch_string</a>
<li ><a href="#method-c-sources">::sources</a>
<li ><a href="#method-c-sources-3D">::sources=</a>
<li ><a href="#method-c-spec_cache_dir">::spec_cache_dir</a>
<li ><a href="#method-c-suffix_pattern">::suffix_pattern</a>
<li ><a href="#method-c-suffix_regexp">::suffix_regexp</a>
<li ><a href="#method-c-suffixes">::suffixes</a>
<li ><a href="#method-c-time">::time</a>
<li ><a href="#method-c-try_activate">::try_activate</a>
<li ><a href="#method-c-ui">::ui</a>
<li ><a href="#method-c-use_gemdeps">::use_gemdeps</a>
<li ><a href="#method-c-use_paths">::use_paths</a>
<li ><a href="#method-c-user_dir">::user_dir</a>
<li ><a href="#method-c-user_home">::user_home</a>
<li ><a href="#method-c-win_platform-3D">::win_platform=</a>
<li ><a href="#method-c-win_platform-3F">::win_platform?</a>
<li ><a href="#method-c-write_binary">::write_binary</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="module-Gem">
<h1 id="module-Gem" class="module">
module Gem
</h1>
<section class="description">
<p>RubyGems is the Ruby standard for publishing and managing third party libraries.</p>
<p>For user documentation, see:</p>
<ul><li>
<p><code>gem help</code> and <code>gem help [command]</code></p>
</li><li>
<p><a href="https://guides.rubygems.org/">RubyGems User Guide</a></p>
</li><li>
<p><a href="https://guides.rubygems.org/faqs">Frequently Asked Questions</a></p>
</li></ul>
<p>For gem developer documentation see:</p>
<ul><li>
<p><a href="https://guides.rubygems.org/make-your-own-gem">Creating Gems</a></p>
</li><li>
<p><a href="Gem/Specification.html"><code>Gem::Specification</code></a></p>
</li><li>
<p><a href="Gem/Version.html"><code>Gem::Version</code></a> for version dependency notes</p>
</li></ul>
<p>Further RubyGems documentation can be found at:</p>
<ul><li>
<p><a href="https://guides.rubygems.org">RubyGems Guides</a></p>
</li><li>
<p><a href="https://www.rubydoc.info/github/rubygems/rubygems">RubyGems API</a> (also available from <code>gem server</code>)</p>
</li></ul>
<h2 id="module-Gem-label-RubyGems+Plugins">RubyGems Plugins<span><a href="#module-Gem-label-RubyGems+Plugins">¶</a> <a href="#top">↑</a></span></h2>
<p>As of RubyGems 1.3.2, RubyGems will load plugins installed in gems or $LOAD_PATH. Plugins must be named 'rubygems_plugin' (.rb, .so, etc) and placed at the root of your gem's require_path. Plugins are discovered via <a href="Gem.html#method-c-find_files"><code>Gem::find_files</code></a> and then loaded.</p>
<p>For an example plugin, see the <a href="https://github.com/seattlerb/graph">Graph gem</a> which adds a `gem graph` command.</p>
<h2 id="module-Gem-label-RubyGems+Defaults-2C+Packaging">RubyGems Defaults, Packaging<span><a href="#module-Gem-label-RubyGems+Defaults-2C+Packaging">¶</a> <a href="#top">↑</a></span></h2>
<p>RubyGems defaults are stored in lib/rubygems/defaults.rb. If you're packaging RubyGems or implementing Ruby you can change RubyGems' defaults.</p>
<p>For RubyGems packagers, provide lib/rubygems/defaults/operating_system.rb and override any defaults from lib/rubygems/defaults.rb.</p>
<p>For Ruby implementers, provide lib/rubygems/defaults/#{RUBY_ENGINE}.rb and override any defaults from lib/rubygems/defaults.rb.</p>
<p>If you need RubyGems to perform extra work on install or uninstall, your defaults override file can set pre/post install and uninstall hooks. See <a href="Gem.html#method-c-pre_install"><code>Gem::pre_install</code></a>, <a href="Gem.html#method-c-pre_uninstall"><code>Gem::pre_uninstall</code></a>, <a href="Gem.html#method-c-post_install"><code>Gem::post_install</code></a>, <a href="Gem.html#method-c-post_uninstall"><code>Gem::post_uninstall</code></a>.</p>
<h2 id="module-Gem-label-Bugs">Bugs<span><a href="#module-Gem-label-Bugs">¶</a> <a href="#top">↑</a></span></h2>
<p>You can submit bugs to the <a href="https://github.com/rubygems/rubygems/issues">RubyGems bug tracker</a> on GitHub</p>
<h2 id="module-Gem-label-Credits">Credits<span><a href="#module-Gem-label-Credits">¶</a> <a href="#top">↑</a></span></h2>
<p>RubyGems is currently maintained by Eric Hodel.</p>
<p>RubyGems was originally developed at RubyConf 2003 by:</p>
<ul><li>
<p>Rich Kilmer – rich(at)infoether.com</p>
</li><li>
<p>Chad Fowler – chad(at)chadfowler.com</p>
</li><li>
<p>David Black – dblack(at)wobblini.net</p>
</li><li>
<p>Paul Brannan – paul(at)atdesk.com</p>
</li><li>
<p>Jim Weirich – jim(at)weirichhouse.org</p>
</li></ul>
<p>Contributors:</p>
<ul><li>
<p>Gavin Sinclair – gsinclair(at)soyabean.com.au</p>
</li><li>
<p>George Marrows – george.marrows(at)ntlworld.com</p>
</li><li>
<p>Dick Davies – rasputnik(at)hellooperator.net</p>
</li><li>
<p>Mauricio Fernandez – batsman.geo(at)yahoo.com</p>
</li><li>
<p>Simon Strandgaard – neoneye(at)adslhome.dk</p>
</li><li>
<p>Dave Glasser – glasser(at)mit.edu</p>
</li><li>
<p>Paul Duncan – pabs(at)pablotron.org</p>
</li><li>
<p>Ville Aine – vaine(at)cs.helsinki.fi</p>
</li><li>
<p>Eric Hodel – drbrain(at)segment7.net</p>
</li><li>
<p>Daniel Berger – djberg96(at)gmail.com</p>
</li><li>
<p>Phil Hagelberg – technomancy(at)gmail.com</p>
</li><li>
<p>Ryan Davis – ryand-ruby(at)zenspider.com</p>
</li><li>
<p>Evan Phoenix – evan(at)fallingsnow.net</p>
</li><li>
<p>Steve Klabnik – steve(at)steveklabnik.com</p>
</li></ul>
<p>(If your name is missing, PLEASE let us know!)</p>
<h2 id="module-Gem-label-License">License<span><a href="#module-Gem-label-License">¶</a> <a href="#top">↑</a></span></h2>
<p>See LICENSE.txt for permissions.</p>
<p>Thanks!</p>
<p>-The RubyGems Team</p>
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section class="constants-list">
<header>
<h3>Constants</h3>
</header>
<dl>
<dt id="DEFAULT_HOST">DEFAULT_HOST
<dd>
<dt id="GEM_DEP_FILES">GEM_DEP_FILES
<dd>
<dt id="LOADED_SPECS_MUTEX">LOADED_SPECS_MUTEX
<dd>
<dt id="MARSHAL_SPEC_DIR">MARSHAL_SPEC_DIR
<dd><p>Location of <a href="Marshal.html"><code>Marshal</code></a> quick gemspecs on remote repositories</p>
<dt id="RDoc">RDoc
<dd><p><a href="RDoc.html"><code>Gem::RDoc</code></a> provides methods to generate <a href="RDoc/RubygemsHook.html"><code>RDoc</code></a> and ri data for installed gems upon gem installation.</p>
<p>This file is automatically required by RubyGems 1.9 and newer.</p>
<dt id="READ_BINARY_ERRORS">READ_BINARY_ERRORS
<dd><p><a href="Gem/Exception.html"><code>Exception</code></a> classes used in a <a href="Gem.html#method-c-read_binary"><code>Gem.read_binary</code></a> <code>rescue</code> statement</p>
<dt id="REPOSITORY_DEFAULT_GEM_SUBDIRECTORIES">REPOSITORY_DEFAULT_GEM_SUBDIRECTORIES
<dd><p>Subdirectories in a gem repository for default gems</p>
<dt id="REPOSITORY_SUBDIRECTORIES">REPOSITORY_SUBDIRECTORIES
<dd><p>Subdirectories in a gem repository</p>
<dt id="RUBYGEMS_DIR">RUBYGEMS_DIR
<dd>
<dt id="UNTAINT">UNTAINT
<dd><p>Taint support is deprecated in Ruby 2.7. This allows switching “.untaint” to “.tap(&Gem::UNTAINT)”, to avoid deprecation warnings in Ruby 2.7.</p>
<dt id="VERSION">VERSION
<dd>
<dt id="WIN_PATTERNS">WIN_PATTERNS
<dd><p>An <a href="Array.html"><code>Array</code></a> of Regexps that match windows Ruby platforms.</p>
<dt id="WRITE_BINARY_ERRORS">WRITE_BINARY_ERRORS
<dd><p><a href="Gem/Exception.html"><code>Exception</code></a> classes used in <a href="Gem.html#method-c-write_binary"><code>Gem.write_binary</code></a> <code>rescue</code> statement</p>
</dl>
</section>
<section class="attribute-method-details" class="method-section">
<header>
<h3>Attributes</h3>
</header>
<div id="attribute-c-done_installing_hooks" class="method-detail">
<div class="method-heading attribute-method-heading">
<span class="method-name">done_installing_hooks</span><span
class="attribute-access-type">[R]</span>
</div>
<div class="method-description">
<p>The list of hooks to be run after <a href="Gem/DependencyInstaller.html"><code>Gem::DependencyInstaller</code></a> installs a set of gems</p>
</div>
</div>
<div id="attribute-c-gemdeps" class="method-detail">
<div class="method-heading attribute-method-heading">
<span class="method-name">gemdeps</span><span
class="attribute-access-type">[R]</span>
</div>
<div class="method-description">
<p>GemDependencyAPI object, which is set when .use_gemdeps is called. This contains all the information from the Gemfile.</p>
</div>
</div>
<div id="attribute-c-loaded_specs" class="method-detail">
<div class="method-heading attribute-method-heading">
<span class="method-name">loaded_specs</span><span
class="attribute-access-type">[R]</span>
</div>
<div class="method-description">
<p><a href="Hash.html"><code>Hash</code></a> of loaded <a href="Gem/Specification.html"><code>Gem::Specification</code></a> keyed by name</p>
</div>
</div>
<div id="attribute-c-post_build_hooks" class="method-detail">
<div class="method-heading attribute-method-heading">
<span class="method-name">post_build_hooks</span><span
class="attribute-access-type">[R]</span>
</div>
<div class="method-description">
<p>The list of hooks to be run after <a href="Gem/Installer.html#method-i-install"><code>Gem::Installer#install</code></a> extracts files and builds extensions</p>
</div>
</div>
<div id="attribute-c-post_install_hooks" class="method-detail">
<div class="method-heading attribute-method-heading">
<span class="method-name">post_install_hooks</span><span
class="attribute-access-type">[R]</span>
</div>
<div class="method-description">
<p>The list of hooks to be run after <a href="Gem/Installer.html#method-i-install"><code>Gem::Installer#install</code></a> completes installation</p>
</div>
</div>
<div id="attribute-c-post_reset_hooks" class="method-detail">
<div class="method-heading attribute-method-heading">
<span class="method-name">post_reset_hooks</span><span
class="attribute-access-type">[R]</span>
</div>
<div class="method-description">
<p>The list of hooks to be run after <a href="Gem/Specification.html#method-c-reset"><code>Gem::Specification.reset</code></a> is run.</p>
</div>
</div>
<div id="attribute-c-post_uninstall_hooks" class="method-detail">
<div class="method-heading attribute-method-heading">
<span class="method-name">post_uninstall_hooks</span><span
class="attribute-access-type">[R]</span>
</div>
<div class="method-description">
<p>The list of hooks to be run after <a href="Gem/Uninstaller.html#method-i-uninstall"><code>Gem::Uninstaller#uninstall</code></a> completes installation</p>
</div>
</div>
<div id="attribute-c-pre_install_hooks" class="method-detail">
<div class="method-heading attribute-method-heading">
<span class="method-name">pre_install_hooks</span><span
class="attribute-access-type">[R]</span>
</div>
<div class="method-description">
<p>The list of hooks to be run before <a href="Gem/Installer.html#method-i-install"><code>Gem::Installer#install</code></a> does any work</p>
</div>
</div>
<div id="attribute-c-pre_reset_hooks" class="method-detail">
<div class="method-heading attribute-method-heading">
<span class="method-name">pre_reset_hooks</span><span
class="attribute-access-type">[R]</span>
</div>
<div class="method-description">
<p>The list of hooks to be run before <a href="Gem/Specification.html#method-c-reset"><code>Gem::Specification.reset</code></a> is run.</p>
</div>
</div>
<div id="attribute-c-pre_uninstall_hooks" class="method-detail">
<div class="method-heading attribute-method-heading">
<span class="method-name">pre_uninstall_hooks</span><span
class="attribute-access-type">[R]</span>
</div>
<div class="method-description">
<p>The list of hooks to be run before <a href="Gem/Uninstaller.html#method-i-uninstall"><code>Gem::Uninstaller#uninstall</code></a> does any work</p>
</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-activated_gem_paths" class="method-detail ">
<div class="method-heading">
<span class="method-name">activated_gem_paths</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>The number of paths in the `$LOAD_PATH` from activated gems. Used to prioritize `-I` and `<a href="'RUBYLIB`">ENV</a>` entries during `require`.</p>
<div class="method-source-code" id="activated_gem_paths-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 669</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">activated_gem_paths</span>
<span class="ruby-ivar">@activated_gem_paths</span> <span class="ruby-operator">||=</span> <span class="ruby-value">0</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-add_to_load_path" class="method-detail ">
<div class="method-heading">
<span class="method-name">add_to_load_path</span><span
class="method-args">(*paths)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Add a list of paths to the $LOAD_PATH at the proper place.</p>
<div class="method-source-code" id="add_to_load_path-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 676</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">add_to_load_path</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">paths</span>)
<span class="ruby-ivar">@activated_gem_paths</span> = <span class="ruby-identifier">activated_gem_paths</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">paths</span>.<span class="ruby-identifier">size</span>
<span class="ruby-comment"># gem directories must come after -I and ENV['RUBYLIB']</span>
<span class="ruby-identifier">$LOAD_PATH</span>.<span class="ruby-identifier">insert</span>(<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">load_path_insert_index</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">paths</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-bin_path" class="method-detail ">
<div class="method-heading">
<span class="method-name">bin_path</span><span
class="method-args">(name, exec_name = nil, *requirements)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p><a href="Find.html"><code>Find</code></a> the full path to the executable for gem <code>name</code>. If the <code>exec_name</code> is not given, an exception will be raised, otherwise the specified executable's path is returned. <code>requirements</code> allows you to specify specific gem versions.</p>
<div class="method-source-code" id="bin_path-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 247</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">bin_path</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">exec_name</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">requirements</span>)
<span class="ruby-comment"># TODO: fails test_self_bin_path_bin_file_gone_in_latest</span>
<span class="ruby-comment"># Gem::Specification.find_by_name(name, *requirements).bin_file exec_name</span>
<span class="ruby-identifier">requirements</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Requirement</span>.<span class="ruby-identifier">default</span> <span class="ruby-keyword">if</span>
<span class="ruby-identifier">requirements</span>.<span class="ruby-identifier">empty?</span>
<span class="ruby-identifier">find_spec_for_exe</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">exec_name</span>, <span class="ruby-identifier">requirements</span>).<span class="ruby-identifier">bin_file</span> <span class="ruby-identifier">exec_name</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-binary_mode" class="method-detail ">
<div class="method-heading">
<span class="method-name">binary_mode</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>The mode needed to read a file as straight binary.</p>
<div class="method-source-code" id="binary_mode-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 307</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">binary_mode</span>
<span class="ruby-string">'rb'</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-bindir" class="method-detail ">
<div class="method-heading">
<span class="method-name">bindir</span><span
class="method-args">(install_dir=Gem.dir)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>The path where gem executables are to be installed.</p>
<div class="method-source-code" id="bindir-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 314</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">bindir</span>(<span class="ruby-identifier">install_dir</span>=<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">dir</span>)
<span class="ruby-keyword">return</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span> <span class="ruby-identifier">install_dir</span>, <span class="ruby-string">'bin'</span> <span class="ruby-keyword">unless</span>
<span class="ruby-identifier">install_dir</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">==</span> <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">default_dir</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">default_bindir</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-clear_default_specs" class="method-detail ">
<div class="method-heading">
<span class="method-name">clear_default_specs</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Clear default gem related variables. It is for test</p>
<div class="method-source-code" id="clear_default_specs-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 1342</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">clear_default_specs</span>
<span class="ruby-ivar">@path_to_default_spec_map</span>.<span class="ruby-identifier">clear</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-clear_paths" class="method-detail ">
<div class="method-heading">
<span class="method-name">clear_paths</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Reset the <code>dir</code> and <code>path</code> values. The next time <code>dir</code> or <code>path</code> is requested, the values will be calculated from scratch. This is mainly used by the unit tests to provide test isolation.</p>
<div class="method-source-code" id="clear_paths-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 325</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">clear_paths</span>
<span class="ruby-ivar">@paths</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@user_home</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">reset</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Security</span>.<span class="ruby-identifier">reset</span> <span class="ruby-keyword">if</span> <span class="ruby-keyword">defined?</span>(<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Security</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-config_file" class="method-detail ">
<div class="method-heading">
<span class="method-name">config_file</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>The path to standard location of the user's .gemrc file.</p>
<div class="method-source-code" id="config_file-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 335</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">config_file</span>
<span class="ruby-ivar">@config_file</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span> <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">user_home</span>, <span class="ruby-string">'.gemrc'</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-configuration" class="method-detail ">
<div class="method-heading">
<span class="method-name">configuration</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>The standard configuration object for gems.</p>
<div class="method-source-code" id="configuration-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 342</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">configuration</span>
<span class="ruby-ivar">@configuration</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">ConfigFile</span>.<span class="ruby-identifier">new</span> []
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-configuration-3D" class="method-detail ">
<div class="method-heading">
<span class="method-name">configuration=</span><span
class="method-args">(config)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Use the given configuration object (which implements the <a href="Gem/ConfigFile.html"><code>ConfigFile</code></a> protocol) as the standard configuration object.</p>
<div class="method-source-code" id="configuration-3D-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 350</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">configuration=</span>(<span class="ruby-identifier">config</span>)
<span class="ruby-ivar">@configuration</span> = <span class="ruby-identifier">config</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-datadir" class="method-detail ">
<div class="method-heading">
<span class="method-name">datadir</span><span
class="method-args">(gem_name)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>The path to the data directory specified by the gem name. If the package is not available as a gem, return nil.</p>
<div class="method-source-code" id="datadir-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 358</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">datadir</span>(<span class="ruby-identifier">gem_name</span>)
<span class="ruby-identifier">spec</span> = <span class="ruby-ivar">@loaded_specs</span>[<span class="ruby-identifier">gem_name</span>]
<span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">nil?</span>
<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">datadir</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-default_bindir" class="method-detail ">
<div class="method-heading">
<span class="method-name">default_bindir</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>The default directory for binaries</p>
<div class="method-source-code" id="default_bindir-source">
<pre><span class="ruby-comment"># File lib/rubygems/defaults.rb, line 117</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">default_bindir</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">defined?</span> <span class="ruby-constant">RUBY_FRAMEWORK_VERSION</span> <span class="ruby-comment"># mac framework support</span>
<span class="ruby-string">'/usr/bin'</span>
<span class="ruby-keyword">else</span> <span class="ruby-comment"># generic install</span>
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'bindir'</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-default_cert_path" class="method-detail ">
<div class="method-heading">
<span class="method-name">default_cert_path</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>The default signing certificate chain path</p>
<div class="method-source-code" id="default_cert_path-source">
<pre><span class="ruby-comment"># File lib/rubygems/defaults.rb, line 139</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">default_cert_path</span>
<span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span> <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">user_home</span>, <span class="ruby-string">".gem"</span>, <span class="ruby-string">"gem-public_cert.pem"</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-default_dir" class="method-detail ">
<div class="method-heading">
<span class="method-name">default_dir</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Default home directory path to be used if an alternate value is not specified in the environment</p>
<div class="method-source-code" id="default_dir-source">
<pre><span class="ruby-comment"># File lib/rubygems/defaults.rb, line 30</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">default_dir</span>
<span class="ruby-identifier">path</span> = <span class="ruby-keyword">if</span> <span class="ruby-keyword">defined?</span> <span class="ruby-constant">RUBY_FRAMEWORK_VERSION</span>
[
<span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span>(<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'sitedir'</span>]),
<span class="ruby-string">'Gems'</span>,
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'ruby_version'</span>]
]
<span class="ruby-keyword">else</span>
[
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'rubylibprefix'</span>],
<span class="ruby-string">'gems'</span>,
<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'ruby_version'</span>]
]
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@default_dir</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">path</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-default_exec_format" class="method-detail ">
<div class="method-heading">
<span class="method-name">default_exec_format</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Deduce Ruby's –program-prefix and –program-suffix from its install name</p>
<div class="method-source-code" id="default_exec_format-source">
<pre><span class="ruby-comment"># File lib/rubygems/defaults.rb, line 103</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">default_exec_format</span>
<span class="ruby-identifier">exec_format</span> = <span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'ruby_install_name'</span>].<span class="ruby-identifier">sub</span>(<span class="ruby-string">'ruby'</span>, <span class="ruby-string">'%s'</span>) <span class="ruby-keyword">rescue</span> <span class="ruby-string">'%s'</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">exec_format</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/%s/</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Exception</span>,
<span class="ruby-node">"[BUG] invalid exec_format #{exec_format.inspect}, no %s"</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">exec_format</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-default_ext_dir_for" class="method-detail ">
<div class="method-heading">
<span class="method-name">default_ext_dir_for</span><span
class="method-args">(base_dir)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns binary extensions dir for specified RubyGems base dir or nil if such directory cannot be determined.</p>
<p>By default, the binary extensions are located side by side with their Ruby counterparts, therefore nil is returned</p>
<div class="method-source-code" id="default_ext_dir_for-source">
<pre><span class="ruby-comment"># File lib/rubygems/defaults.rb, line 55</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">default_ext_dir_for</span>(<span class="ruby-identifier">base_dir</span>)
<span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-default_key_path" class="method-detail ">
<div class="method-heading">
<span class="method-name">default_key_path</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>The default signing key path</p>
<div class="method-source-code" id="default_key_path-source">
<pre><span class="ruby-comment"># File lib/rubygems/defaults.rb, line 132</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">default_key_path</span>
<span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span> <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">user_home</span>, <span class="ruby-string">".gem"</span>, <span class="ruby-string">"gem-private_key.pem"</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-default_path" class="method-detail ">
<div class="method-heading">
<span class="method-name">default_path</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Default gem load path</p>
<div class="method-source-code" id="default_path-source">
<pre><span class="ruby-comment"># File lib/rubygems/defaults.rb, line 92</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">default_path</span>
<span class="ruby-identifier">path</span> = []
<span class="ruby-identifier">path</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">user_dir</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">user_home</span> <span class="ruby-operator">&&</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">user_home</span>)
<span class="ruby-identifier">path</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">default_dir</span>
<span class="ruby-identifier">path</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">vendor_dir</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">vendor_dir</span> <span class="ruby-keyword">and</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">directory?</span> <span class="ruby-identifier">vendor_dir</span>
<span class="ruby-identifier">path</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-default_rubygems_dirs" class="method-detail ">
<div class="method-heading">
<span class="method-name">default_rubygems_dirs</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Paths where RubyGems' .rb files and bin files are installed</p>
<div class="method-source-code" id="default_rubygems_dirs-source">
<pre><span class="ruby-comment"># File lib/rubygems/defaults.rb, line 62</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">default_rubygems_dirs</span>
<span class="ruby-keyword">nil</span> <span class="ruby-comment"># default to standard layout</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-default_sources" class="method-detail ">
<div class="method-heading">
<span class="method-name">default_sources</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>An <a href="Array.html"><code>Array</code></a> of the default sources that come with RubyGems</p>
<div class="method-source-code" id="default_sources-source">
<pre><span class="ruby-comment"># File lib/rubygems/defaults.rb, line 14</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">default_sources</span>
<span class="ruby-node">%w[https://rubygems.org/]</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-default_spec_cache_dir" class="method-detail ">
<div class="method-heading">
<span class="method-name">default_spec_cache_dir</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Default spec directory path to be used if an alternate value is not specified in the environment</p>
<div class="method-source-code" id="default_spec_cache_dir-source">
<pre><span class="ruby-comment"># File lib/rubygems/defaults.rb, line 22</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">default_spec_cache_dir</span>
<span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span> <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">user_home</span>, <span class="ruby-string">'.gem'</span>, <span class="ruby-string">'specs'</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-default_specifications_dir" class="method-detail ">
<div class="method-heading">
<span class="method-name">default_specifications_dir</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Path to specification files of default gems.</p>
<div class="method-source-code" id="default_specifications_dir-source">
<pre><span class="ruby-comment"># File lib/rubygems/defaults.rb, line 69</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">default_specifications_dir</span>
<span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">default_dir</span>, <span class="ruby-string">"specifications"</span>, <span class="ruby-string">"default"</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-deflate" class="method-detail ">
<div class="method-heading">
<span class="method-name">deflate</span><span
class="method-args">(data)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>A <a href="Zlib/Deflate.html#method-c-deflate"><code>Zlib::Deflate.deflate</code></a> wrapper</p>
<div class="method-source-code" id="deflate-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 367</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">deflate</span>(<span class="ruby-identifier">data</span>)
<span class="ruby-identifier">require</span> <span class="ruby-string">'zlib'</span>
<span class="ruby-constant">Zlib</span><span class="ruby-operator">::</span><span class="ruby-constant">Deflate</span>.<span class="ruby-identifier">deflate</span> <span class="ruby-identifier">data</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-detect_gemdeps" class="method-detail method-alias">
<div class="method-heading">
<span class="method-name">detect_gemdeps</span><span
class="method-args">(path = nil)</span>
</div>
<div class="method-description">
<p>TODO remove with RubyGems 4.0</p>
</div>
<div class="aliases">
Alias for: <a href="Gem.html#method-c-use_gemdeps">use_gemdeps</a>
</div>
</div>
<div id="method-c-dir" class="method-detail ">
<div class="method-heading">
<span class="method-name">dir</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>The path where gems are to be installed.</p>
<div class="method-source-code" id="dir-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 417</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">dir</span>
<span class="ruby-identifier">paths</span>.<span class="ruby-identifier">home</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-done_installing" class="method-detail ">
<div class="method-heading">
<span class="method-name">done_installing</span><span
class="method-args">(&hook)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Adds a post-installs hook that will be passed a <a href="Gem/DependencyInstaller.html"><code>Gem::DependencyInstaller</code></a> and a list of installed specifications when <a href="Gem/DependencyInstaller.html#method-i-install"><code>Gem::DependencyInstaller#install</code></a> is complete</p>
<div class="method-source-code" id="done_installing-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 796</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">done_installing</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">hook</span>)
<span class="ruby-ivar">@done_installing_hooks</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">hook</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-ensure_default_gem_subdirectories" class="method-detail ">
<div class="method-heading">
<span class="method-name">ensure_default_gem_subdirectories</span><span
class="method-args">(dir = Gem.dir, mode = nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Quietly ensure the Gem directory <code>dir</code> contains all the proper subdirectories for handling default gems. If we can't create a directory due to a permission problem, then we will silently continue.</p>
<p>If <code>mode</code> is given, missing directories are created with this mode.</p>
<p>World-writable directories will never be created.</p>
<div class="method-source-code" id="ensure_default_gem_subdirectories-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 451</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">ensure_default_gem_subdirectories</span>(<span class="ruby-identifier">dir</span> = <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">dir</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">ensure_subdirectories</span>(<span class="ruby-identifier">dir</span>, <span class="ruby-identifier">mode</span>, <span class="ruby-constant">REPOSITORY_DEFAULT_GEM_SUBDIRECTORIES</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-ensure_gem_subdirectories" class="method-detail ">
<div class="method-heading">
<span class="method-name">ensure_gem_subdirectories</span><span
class="method-args">(dir = Gem.dir, mode = nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Quietly ensure the Gem directory <code>dir</code> contains all the proper subdirectories. If we can't create a directory due to a permission problem, then we will silently continue.</p>
<p>If <code>mode</code> is given, missing directories are created with this mode.</p>
<p>World-writable directories will never be created.</p>
<div class="method-source-code" id="ensure_gem_subdirectories-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 438</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">ensure_gem_subdirectories</span>(<span class="ruby-identifier">dir</span> = <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">dir</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">ensure_subdirectories</span>(<span class="ruby-identifier">dir</span>, <span class="ruby-identifier">mode</span>, <span class="ruby-constant">REPOSITORY_SUBDIRECTORIES</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-env_requirement" class="method-detail ">
<div class="method-heading">
<span class="method-name">env_requirement</span><span
class="method-args">(gem_name)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="env_requirement-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 928</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">env_requirement</span>(<span class="ruby-identifier">gem_name</span>)
<span class="ruby-ivar">@env_requirements_by_name</span> <span class="ruby-operator">||=</span> {}
<span class="ruby-ivar">@env_requirements_by_name</span>[<span class="ruby-identifier">gem_name</span>] <span class="ruby-operator">||=</span> <span class="ruby-keyword">begin</span>
<span class="ruby-identifier">req</span> = <span class="ruby-constant">ENV</span>[<span class="ruby-node">"GEM_REQUIREMENT_#{gem_name.upcase}"</span>] <span class="ruby-operator">||</span> <span class="ruby-string">'>= 0'</span>.<span class="ruby-identifier">freeze</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Requirement</span>.<span class="ruby-identifier">create</span>(<span class="ruby-identifier">req</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-find_files" class="method-detail ">
<div class="method-heading">
<span class="method-name">find_files</span><span
class="method-args">(glob, check_load_path=true)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns a list of paths matching <code>glob</code> that can be used by a gem to pick up features from other gems. For example:</p>
<pre class="ruby"><span class="ruby-constant">Gem</span>.<span class="ruby-identifier">find_files</span>(<span class="ruby-string">'rdoc/discover'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">path</span><span class="ruby-operator">|</span> <span class="ruby-identifier">load</span> <span class="ruby-identifier">path</span> <span class="ruby-keyword">end</span>
</pre>
<p>if <code>check_load_path</code> is true (the default), then <a href="Gem.html#method-c-find_files"><code>find_files</code></a> also searches $LOAD_PATH for files as well as gems.</p>
<p>Note that <a href="Gem.html#method-c-find_files"><code>find_files</code></a> will return all files even if they are from different versions of the same gem. See also <a href="Gem.html#method-c-find_latest_files"><code>find_latest_files</code></a></p>
<div class="method-source-code" id="find_files-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 498</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">find_files</span>(<span class="ruby-identifier">glob</span>, <span class="ruby-identifier">check_load_path</span>=<span class="ruby-keyword">true</span>)
<span class="ruby-identifier">files</span> = []
<span class="ruby-identifier">files</span> = <span class="ruby-identifier">find_files_from_load_path</span> <span class="ruby-identifier">glob</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">check_load_path</span>
<span class="ruby-identifier">gem_specifications</span> = <span class="ruby-ivar">@gemdeps</span> <span class="ruby-operator">?</span> <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">loaded_specs</span>.<span class="ruby-identifier">values</span> <span class="ruby-operator">:</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">stubs</span>
<span class="ruby-identifier">files</span>.<span class="ruby-identifier">concat</span> <span class="ruby-identifier">gem_specifications</span>.<span class="ruby-identifier">map</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">matches_for_glob</span>(<span class="ruby-node">"#{glob}#{Gem.suffix_pattern}"</span>)
}.<span class="ruby-identifier">flatten</span>
<span class="ruby-comment"># $LOAD_PATH might contain duplicate entries or reference</span>
<span class="ruby-comment"># the spec dirs directly, so we prune.</span>
<span class="ruby-identifier">files</span>.<span class="ruby-identifier">uniq!</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">check_load_path</span>
<span class="ruby-keyword">return</span> <span class="ruby-identifier">files</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-find_latest_files" class="method-detail ">
<div class="method-heading">
<span class="method-name">find_latest_files</span><span
class="method-args">(glob, check_load_path=true)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns a list of paths matching <code>glob</code> from the latest gems that can be used by a gem to pick up features from other gems. For example:</p>
<pre class="ruby"><span class="ruby-constant">Gem</span>.<span class="ruby-identifier">find_latest_files</span>(<span class="ruby-string">'rdoc/discover'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">path</span><span class="ruby-operator">|</span> <span class="ruby-identifier">load</span> <span class="ruby-identifier">path</span> <span class="ruby-keyword">end</span>
</pre>
<p>if <code>check_load_path</code> is true (the default), then <a href="Gem.html#method-c-find_latest_files"><code>find_latest_files</code></a> also searches $LOAD_PATH for files as well as gems.</p>
<p>Unlike <a href="Gem.html#method-c-find_files"><code>find_files</code></a>, <a href="Gem.html#method-c-find_latest_files"><code>find_latest_files</code></a> will return only files from the latest version of a gem.</p>
<div class="method-source-code" id="find_latest_files-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 535</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">find_latest_files</span>(<span class="ruby-identifier">glob</span>, <span class="ruby-identifier">check_load_path</span>=<span class="ruby-keyword">true</span>)
<span class="ruby-identifier">files</span> = []
<span class="ruby-identifier">files</span> = <span class="ruby-identifier">find_files_from_load_path</span> <span class="ruby-identifier">glob</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">check_load_path</span>
<span class="ruby-identifier">files</span>.<span class="ruby-identifier">concat</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">latest_specs</span>(<span class="ruby-keyword">true</span>).<span class="ruby-identifier">map</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">matches_for_glob</span>(<span class="ruby-node">"#{glob}#{Gem.suffix_pattern}"</span>)
}.<span class="ruby-identifier">flatten</span>
<span class="ruby-comment"># $LOAD_PATH might contain duplicate entries or reference</span>
<span class="ruby-comment"># the spec dirs directly, so we prune.</span>
<span class="ruby-identifier">files</span>.<span class="ruby-identifier">uniq!</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">check_load_path</span>
<span class="ruby-keyword">return</span> <span class="ruby-identifier">files</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-find_unresolved_default_spec" class="method-detail ">
<div class="method-heading">
<span class="method-name">find_unresolved_default_spec</span><span
class="method-args">(path)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p><a href="Find.html"><code>Find</code></a> a <a href="Gem/Specification.html"><code>Gem::Specification</code></a> of default gem from <code>path</code></p>
<div class="method-source-code" id="find_unresolved_default_spec-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 1334</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">find_unresolved_default_spec</span>(<span class="ruby-identifier">path</span>)
<span class="ruby-identifier">default_spec</span> = <span class="ruby-ivar">@path_to_default_spec_map</span>[<span class="ruby-identifier">path</span>]
<span class="ruby-keyword">return</span> <span class="ruby-identifier">default_spec</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">default_spec</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">loaded_specs</span>[<span class="ruby-identifier">default_spec</span>.<span class="ruby-identifier">name</span>] <span class="ruby-operator">!=</span> <span class="ruby-identifier">default_spec</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-finish_resolve" class="method-detail ">
<div class="method-heading">
<span class="method-name">finish_resolve</span><span
class="method-args">(request_set=Gem::RequestSet.new)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="finish_resolve-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 232</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">finish_resolve</span>(<span class="ruby-identifier">request_set</span>=<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">RequestSet</span>.<span class="ruby-identifier">new</span>)
<span class="ruby-identifier">request_set</span>.<span class="ruby-identifier">import</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">unresolved_deps</span>.<span class="ruby-identifier">values</span>
<span class="ruby-identifier">request_set</span>.<span class="ruby-identifier">import</span> <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">loaded_specs</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">map</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</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">s</span>.<span class="ruby-identifier">name</span>, <span class="ruby-identifier">s</span>.<span class="ruby-identifier">version</span>) }
<span class="ruby-identifier">request_set</span>.<span class="ruby-identifier">resolve_current</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">full_spec</span>.<span class="ruby-identifier">activate</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-gunzip" class="method-detail ">
<div class="method-heading">
<span class="method-name">gunzip</span><span
class="method-args">(data)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p><a href="Zlib/GzipReader.html"><code>Zlib::GzipReader</code></a> wrapper that unzips <code>data</code>.</p>
<div class="method-source-code" id="gunzip-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 583</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">gunzip</span>(<span class="ruby-identifier">data</span>)
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Util</span>.<span class="ruby-identifier">gunzip</span> <span class="ruby-identifier">data</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-gzip" class="method-detail ">
<div class="method-heading">
<span class="method-name">gzip</span><span
class="method-args">(data)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p><a href="Zlib/GzipWriter.html"><code>Zlib::GzipWriter</code></a> wrapper that zips <code>data</code>.</p>
<div class="method-source-code" id="gzip-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 597</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">gzip</span>(<span class="ruby-identifier">data</span>)
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Util</span>.<span class="ruby-identifier">gzip</span> <span class="ruby-identifier">data</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-host" class="method-detail ">
<div class="method-heading">
<span class="method-name">host</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Get the default RubyGems API host. This is normally <code>https://rubygems.org</code>.</p>
<div class="method-source-code" id="host-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 641</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">host</span>
<span class="ruby-ivar">@host</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">DEFAULT_HOST</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-host-3D" class="method-detail ">
<div class="method-heading">
<span class="method-name">host=</span><span
class="method-args">(host)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p><a href="Set.html"><code>Set</code></a> the default RubyGems API host.</p>
<div class="method-source-code" id="host-3D-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 647</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">host=</span>(<span class="ruby-identifier">host</span>)
<span class="ruby-ivar">@host</span> = <span class="ruby-identifier">host</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-inflate" class="method-detail ">
<div class="method-heading">
<span class="method-name">inflate</span><span
class="method-args">(data)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>A <a href="Zlib/Inflate.html#method-i-inflate"><code>Zlib::Inflate#inflate</code></a> wrapper</p>
<div class="method-source-code" id="inflate-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 611</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">inflate</span>(<span class="ruby-identifier">data</span>)
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Util</span>.<span class="ruby-identifier">inflate</span> <span class="ruby-identifier">data</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-install" class="method-detail ">
<div class="method-heading">
<span class="method-name">install</span><span
class="method-args">(name, version = Gem::Requirement.default, *options)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Top level install helper method. Allows you to install gems interactively:</p>
<pre>% irb
>> Gem.install "minitest"
Fetching: minitest-3.0.1.gem (100%)
=> [#<Gem::Specification:0x1013b4528 @name="minitest", ...>]</pre>
<div class="method-source-code" id="install-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 630</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">install</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">version</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Requirement</span>.<span class="ruby-identifier">default</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">options</span>)
<span class="ruby-identifier">require</span> <span class="ruby-string">"rubygems/dependency_installer"</span>
<span class="ruby-identifier">inst</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">DependencyInstaller</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">options</span>)
<span class="ruby-identifier">inst</span>.<span class="ruby-identifier">install</span> <span class="ruby-identifier">name</span>, <span class="ruby-identifier">version</span>
<span class="ruby-identifier">inst</span>.<span class="ruby-identifier">installed_gems</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-java_platform-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">java_platform?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Is this a java platform?</p>
<div class="method-source-code" id="java_platform-3F-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 1103</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">java_platform?</span>
<span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">==</span> <span class="ruby-string">"java"</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-latest_rubygems_version" class="method-detail ">
<div class="method-heading">
<span class="method-name">latest_rubygems_version</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns the latest release version of RubyGems.</p>
<div class="method-source-code" id="latest_rubygems_version-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 953</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">latest_rubygems_version</span>
<span class="ruby-identifier">latest_version_for</span>(<span class="ruby-string">'rubygems-update'</span>) <span class="ruby-keyword">or</span>
<span class="ruby-identifier">raise</span> <span class="ruby-string">"Can't find 'rubygems-update' in any repo. Check `gem source list`."</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-latest_spec_for" class="method-detail ">
<div class="method-heading">
<span class="method-name">latest_spec_for</span><span
class="method-args">(name)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns the latest release-version specification for the gem <code>name</code>.</p>
<div class="method-source-code" id="latest_spec_for-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 940</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">latest_spec_for</span>(<span class="ruby-identifier">name</span>)
<span class="ruby-identifier">dependency</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">fetcher</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">SpecFetcher</span>.<span class="ruby-identifier">fetcher</span>
<span class="ruby-identifier">spec_tuples</span>, = <span class="ruby-identifier">fetcher</span>.<span class="ruby-identifier">spec_for_dependency</span> <span class="ruby-identifier">dependency</span>
<span class="ruby-identifier">spec</span>, = <span class="ruby-identifier">spec_tuples</span>.<span class="ruby-identifier">first</span>
<span class="ruby-identifier">spec</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-latest_version_for" class="method-detail ">
<div class="method-heading">
<span class="method-name">latest_version_for</span><span
class="method-args">(name)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns the version of the latest release-version of gem <code>name</code></p>
<div class="method-source-code" id="latest_version_for-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 961</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">latest_version_for</span>(<span class="ruby-identifier">name</span>)
<span class="ruby-identifier">spec</span> = <span class="ruby-identifier">latest_spec_for</span> <span class="ruby-identifier">name</span>
<span class="ruby-identifier">spec</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">version</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-load_env_plugins" class="method-detail ">
<div class="method-heading">
<span class="method-name">load_env_plugins</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p><a href="Find.html"><code>Find</code></a> all 'rubygems_plugin' files in $LOAD_PATH and load them</p>
<div class="method-source-code" id="load_env_plugins-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 1143</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">load_env_plugins</span>
<span class="ruby-identifier">path</span> = <span class="ruby-string">"rubygems_plugin"</span>
<span class="ruby-identifier">files</span> = []
<span class="ruby-identifier">glob</span> = <span class="ruby-node">"#{path}#{Gem.suffix_pattern}"</span>
<span class="ruby-identifier">$LOAD_PATH</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">load_path</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">globbed</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Util</span>.<span class="ruby-identifier">glob_files_in_dir</span>(<span class="ruby-identifier">glob</span>, <span class="ruby-identifier">load_path</span>)
<span class="ruby-identifier">globbed</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">load_path_file</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">files</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">load_path_file</span> <span class="ruby-keyword">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">file?</span>(<span class="ruby-identifier">load_path_file</span>.<span class="ruby-identifier">tap</span>(<span class="ruby-operator">&</span><span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">UNTAINT</span>))
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">load_plugin_files</span> <span class="ruby-identifier">files</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-load_path_insert_index" class="method-detail ">
<div class="method-heading">
<span class="method-name">load_path_insert_index</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>The index to insert activated gem paths into the $LOAD_PATH. The activated gem's paths are inserted before site lib directory by default.</p>
<div class="method-source-code" id="load_path_insert_index-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 655</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">load_path_insert_index</span>
<span class="ruby-identifier">$LOAD_PATH</span>.<span class="ruby-identifier">each_with_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">path</span>, <span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">return</span> <span class="ruby-identifier">i</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">path</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@gem_prelude_index</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">index</span> = <span class="ruby-identifier">$LOAD_PATH</span>.<span class="ruby-identifier">index</span> <span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'sitelibdir'</span>]
<span class="ruby-identifier">index</span> <span class="ruby-operator">||</span> <span class="ruby-value">0</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-load_plugins" class="method-detail ">
<div class="method-heading">
<span class="method-name">load_plugins</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p><a href="Find.html"><code>Find</code></a> the 'rubygems_plugin' files in the latest installed gems and load them</p>
<div class="method-source-code" id="load_plugins-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 1131</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">load_plugins</span>
<span class="ruby-comment"># Remove this env var by at least 3.0</span>
<span class="ruby-keyword">if</span> <span class="ruby-constant">ENV</span>[<span class="ruby-string">'RUBYGEMS_LOAD_ALL_PLUGINS'</span>]
<span class="ruby-identifier">load_plugin_files</span> <span class="ruby-identifier">find_files</span>(<span class="ruby-string">'rubygems_plugin'</span>, <span class="ruby-keyword">false</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">load_plugin_files</span> <span class="ruby-identifier">find_latest_files</span>(<span class="ruby-string">'rubygems_plugin'</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-c-load_yaml" class="method-detail ">
<div class="method-heading">
<span class="method-name">load_yaml</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Loads YAML, preferring <a href="Psych.html"><code>Psych</code></a></p>
<div class="method-source-code" id="load_yaml-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 688</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">load_yaml</span>
<span class="ruby-keyword">return</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@yaml_loaded</span>
<span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-keyword">defined?</span>(<span class="ruby-identifier">gem</span>)
<span class="ruby-keyword">begin</span>
<span class="ruby-identifier">gem</span> <span class="ruby-string">'psych'</span>, <span class="ruby-string">'>= 2.0.0'</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">LoadError</span>
<span class="ruby-comment"># It's OK if the user does not have the psych gem installed. We will</span>
<span class="ruby-comment"># attempt to require the stdlib version</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-comment"># Try requiring the gem version *or* stdlib version of psych.</span>
<span class="ruby-identifier">require</span> <span class="ruby-string">'psych'</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-operator">::</span><span class="ruby-constant">LoadError</span>
<span class="ruby-comment"># If we can't load psych, thats fine, go on.</span>
<span class="ruby-keyword">else</span>
<span class="ruby-comment"># If 'yaml' has already been required, then we have to</span>
<span class="ruby-comment"># be sure to switch it over to the newly loaded psych.</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">defined?</span>(<span class="ruby-constant">YAML</span><span class="ruby-operator">::</span><span class="ruby-constant">ENGINE</span>) <span class="ruby-operator">&&</span> <span class="ruby-constant">YAML</span><span class="ruby-operator">::</span><span class="ruby-constant">ENGINE</span>.<span class="ruby-identifier">yamler</span> <span class="ruby-operator">!=</span> <span class="ruby-string">"psych"</span>
<span class="ruby-constant">YAML</span><span class="ruby-operator">::</span><span class="ruby-constant">ENGINE</span>.<span class="ruby-identifier">yamler</span> = <span class="ruby-string">"psych"</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">require</span> <span class="ruby-string">'rubygems/psych_additions'</span>
<span class="ruby-identifier">require</span> <span class="ruby-string">'rubygems/psych_tree'</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">require</span> <span class="ruby-string">'yaml'</span>
<span class="ruby-identifier">require</span> <span class="ruby-string">'rubygems/safe_yaml'</span>
<span class="ruby-comment"># Now that we're sure some kind of yaml library is loaded, pull</span>
<span class="ruby-comment"># in our hack to deal with Syck's DefaultKey ugliness.</span>
<span class="ruby-identifier">require</span> <span class="ruby-string">'rubygems/syck_hack'</span>
<span class="ruby-ivar">@yaml_loaded</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-location_of_caller" class="method-detail ">
<div class="method-heading">
<span class="method-name">location_of_caller</span><span
class="method-args">(depth = 1)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>The file name and line number of the caller of the caller of this method.</p>
<p><code>depth</code> is how many layers up the call stack it should go.</p>
<p>e.g.,</p>
<p>def a; <a href="Gem.html#method-c-location_of_caller"><code>Gem.location_of_caller</code></a>; end a #=> [“x.rb”, 2] # (it'll vary depending on file name and line number)</p>
<p>def b; c; end def c; <a href="Gem.html#method-c-location_of_caller"><code>Gem.location_of_caller(2)</code></a>; end b #=> [“x.rb”, 6] # (it'll vary depending on file name and line number)</p>
<div class="method-source-code" id="location_of_caller-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 739</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">location_of_caller</span>(<span class="ruby-identifier">depth</span> = <span class="ruby-value">1</span>)
<span class="ruby-identifier">caller</span>[<span class="ruby-identifier">depth</span>] <span class="ruby-operator">=~</span> <span class="ruby-regexp">/(.*?):(\d+).*?$/i</span>
<span class="ruby-identifier">file</span> = <span class="ruby-node">$1</span>
<span class="ruby-identifier">lineno</span> = <span class="ruby-node">$2</span>.<span class="ruby-identifier">to_i</span>
[<span class="ruby-identifier">file</span>, <span class="ruby-identifier">lineno</span>]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-marshal_version" class="method-detail ">
<div class="method-heading">
<span class="method-name">marshal_version</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>The version of the <a href="Marshal.html"><code>Marshal</code></a> format for your Ruby.</p>
<div class="method-source-code" id="marshal_version-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 750</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">marshal_version</span>
<span class="ruby-node">"#{Marshal::MAJOR_VERSION}.#{Marshal::MINOR_VERSION}"</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-needs" class="method-detail ">
<div class="method-heading">
<span class="method-name">needs</span><span
class="method-args">() { |rs| ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="needs-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 224</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">needs</span>
<span class="ruby-identifier">rs</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">RequestSet</span>.<span class="ruby-identifier">new</span>
<span class="ruby-keyword">yield</span> <span class="ruby-identifier">rs</span>
<span class="ruby-identifier">finish_resolve</span> <span class="ruby-identifier">rs</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-operating_system_defaults" class="method-detail ">
<div class="method-heading">
<span class="method-name">operating_system_defaults</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Default options for gem commands for Ruby packagers.</p>
<p>The options here should be structured as an array of string “gem” command names as keys and a string of the default options as values.</p>
<p>Example:</p>
<p>def self.operating_system_defaults</p>
<pre class="ruby">{
<span class="ruby-string">'install'</span> <span class="ruby-operator">=></span> <span class="ruby-string">'--no-rdoc --no-ri --env-shebang'</span>,
<span class="ruby-string">'update'</span> <span class="ruby-operator">=></span> <span class="ruby-string">'--no-rdoc --no-ri --env-shebang'</span>
}
</pre>
<p>end</p>
<div class="method-source-code" id="operating_system_defaults-source">
<pre><span class="ruby-comment"># File lib/rubygems/defaults.rb, line 179</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">operating_system_defaults</span>
{}
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-path" class="method-detail ">
<div class="method-heading">
<span class="method-name">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="path-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 421</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">path</span>
<span class="ruby-identifier">paths</span>.<span class="ruby-identifier">path</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-path_separator" class="method-detail ">
<div class="method-heading">
<span class="method-name">path_separator</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>How <a href="String.html"><code>String</code></a> Gem paths should be split. Overridable for esoteric platforms.</p>
<div class="method-source-code" id="path_separator-source">
<pre><span class="ruby-comment"># File lib/rubygems/defaults.rb, line 85</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">path_separator</span>
<span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">PATH_SEPARATOR</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-paths" class="method-detail ">
<div class="method-heading">
<span class="method-name">paths</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Retrieve the <a href="Gem/PathSupport.html"><code>PathSupport</code></a> object that RubyGems uses to lookup files.</p>
<div class="method-source-code" id="paths-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 375</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">paths</span>
<span class="ruby-ivar">@paths</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">PathSupport</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">ENV</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-paths-3D" class="method-detail ">
<div class="method-heading">
<span class="method-name">paths=</span><span
class="method-args">(env)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Initialize the filesystem paths to use from <code>env</code>. <code>env</code> is a hash-like object (typically <a href="ENV.html"><code>ENV</code></a>) that is queried for 'GEM_HOME', 'GEM_PATH', and 'GEM_SPEC_CACHE' Keys for the <code>env</code> hash should be Strings, and values of the hash should be Strings or <code>nil</code>.</p>
<div class="method-source-code" id="paths-3D-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 385</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">paths=</span>(<span class="ruby-identifier">env</span>)
<span class="ruby-identifier">clear_paths</span>
<span class="ruby-identifier">target</span> = {}
<span class="ruby-identifier">env</span>.<span class="ruby-identifier">each_pair</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">case</span> <span class="ruby-identifier">k</span>
<span class="ruby-keyword">when</span> <span class="ruby-string">'GEM_HOME'</span>, <span class="ruby-string">'GEM_PATH'</span>, <span class="ruby-string">'GEM_SPEC_CACHE'</span>
<span class="ruby-keyword">case</span> <span class="ruby-identifier">v</span>
<span class="ruby-keyword">when</span> <span class="ruby-keyword">nil</span>, <span class="ruby-constant">String</span>
<span class="ruby-identifier">target</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
<span class="ruby-keyword">when</span> <span class="ruby-constant">Array</span>
<span class="ruby-keyword">unless</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Deprecate</span>.<span class="ruby-identifier">skip</span>
<span class="ruby-identifier">warn</span> <span class="ruby-identifier"><<-eowarn</span>
<span class="ruby-value">Array values in the parameter to `Gem.paths=` are deprecated.
Please use a String or nil.
An Array (#{env.inspect}) was passed in from #{caller[3]}
</span><span class="ruby-identifier"> eowarn</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">target</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>.<span class="ruby-identifier">join</span> <span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">PATH_SEPARATOR</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">target</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@paths</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">PathSupport</span>.<span class="ruby-identifier">new</span> <span class="ruby-constant">ENV</span>.<span class="ruby-identifier">to_hash</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">target</span>)
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">dirs</span> = <span class="ruby-ivar">@paths</span>.<span class="ruby-identifier">path</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-platform_defaults" class="method-detail ">
<div class="method-heading">
<span class="method-name">platform_defaults</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Default options for gem commands for Ruby implementers.</p>
<p>The options here should be structured as an array of string “gem” command names as keys and a string of the default options as values.</p>
<p>Example:</p>
<p>def self.platform_defaults</p>
<pre class="ruby">{
<span class="ruby-string">'install'</span> <span class="ruby-operator">=></span> <span class="ruby-string">'--no-rdoc --no-ri --env-shebang'</span>,
<span class="ruby-string">'update'</span> <span class="ruby-operator">=></span> <span class="ruby-string">'--no-rdoc --no-ri --env-shebang'</span>
}
</pre>
<p>end</p>
<div class="method-source-code" id="platform_defaults-source">
<pre><span class="ruby-comment"># File lib/rubygems/defaults.rb, line 198</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">platform_defaults</span>
{}
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-platforms" class="method-detail ">
<div class="method-heading">
<span class="method-name">platforms</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p><a href="Array.html"><code>Array</code></a> of platforms this RubyGems supports.</p>
<div class="method-source-code" id="platforms-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 764</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">platforms</span>
<span class="ruby-ivar">@platforms</span> <span class="ruby-operator">||=</span> []
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@platforms</span>.<span class="ruby-identifier">empty?</span>
<span class="ruby-ivar">@platforms</span> = [<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Platform</span><span class="ruby-operator">::</span><span class="ruby-constant">RUBY</span>, <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Platform</span>.<span class="ruby-identifier">local</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@platforms</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-platforms-3D" class="method-detail ">
<div class="method-heading">
<span class="method-name">platforms=</span><span
class="method-args">(platforms)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p><a href="Set.html"><code>Set</code></a> array of platforms this RubyGems supports (primarily for testing).</p>
<div class="method-source-code" id="platforms-3D-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 757</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">platforms=</span>(<span class="ruby-identifier">platforms</span>)
<span class="ruby-ivar">@platforms</span> = <span class="ruby-identifier">platforms</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-post_build" class="method-detail ">
<div class="method-heading">
<span class="method-name">post_build</span><span
class="method-args">(&hook)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Adds a post-build hook that will be passed an <a href="Gem/Installer.html"><code>Gem::Installer</code></a> instance when <a href="Gem/Installer.html#method-i-install"><code>Gem::Installer#install</code></a> is called. The hook is called after the gem has been extracted and extensions have been built but before the executables or gemspec has been written. If the hook returns <code>false</code> then the gem's files will be removed and the install will be aborted.</p>
<div class="method-source-code" id="post_build-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 779</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">post_build</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">hook</span>)
<span class="ruby-ivar">@post_build_hooks</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">hook</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-post_install" class="method-detail ">
<div class="method-heading">
<span class="method-name">post_install</span><span
class="method-args">(&hook)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Adds a post-install hook that will be passed an <a href="Gem/Installer.html"><code>Gem::Installer</code></a> instance when <a href="Gem/Installer.html#method-i-install"><code>Gem::Installer#install</code></a> is called</p>
<div class="method-source-code" id="post_install-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 787</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">post_install</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">hook</span>)
<span class="ruby-ivar">@post_install_hooks</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">hook</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-post_reset" class="method-detail ">
<div class="method-heading">
<span class="method-name">post_reset</span><span
class="method-args">(&hook)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Adds a hook that will get run after <a href="Gem/Specification.html#method-c-reset"><code>Gem::Specification.reset</code></a> is run.</p>
<div class="method-source-code" id="post_reset-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 804</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">post_reset</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">hook</span>)
<span class="ruby-ivar">@post_reset_hooks</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">hook</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-post_uninstall" class="method-detail ">
<div class="method-heading">
<span class="method-name">post_uninstall</span><span
class="method-args">(&hook)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Adds a post-uninstall hook that will be passed a <a href="Gem/Uninstaller.html"><code>Gem::Uninstaller</code></a> instance and the spec that was uninstalled when <a href="Gem/Uninstaller.html#method-i-uninstall"><code>Gem::Uninstaller#uninstall</code></a> is called</p>
<div class="method-source-code" id="post_uninstall-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 813</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">post_uninstall</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">hook</span>)
<span class="ruby-ivar">@post_uninstall_hooks</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">hook</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-pre_install" class="method-detail ">
<div class="method-heading">
<span class="method-name">pre_install</span><span
class="method-args">(&hook)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Adds a pre-install hook that will be passed an <a href="Gem/Installer.html"><code>Gem::Installer</code></a> instance when <a href="Gem/Installer.html#method-i-install"><code>Gem::Installer#install</code></a> is called. If the hook returns <code>false</code> then the install will be aborted.</p>
<div class="method-source-code" id="pre_install-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 822</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">pre_install</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">hook</span>)
<span class="ruby-ivar">@pre_install_hooks</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">hook</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-pre_reset" class="method-detail ">
<div class="method-heading">
<span class="method-name">pre_reset</span><span
class="method-args">(&hook)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Adds a hook that will get run before <a href="Gem/Specification.html#method-c-reset"><code>Gem::Specification.reset</code></a> is run.</p>
<div class="method-source-code" id="pre_reset-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 830</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">pre_reset</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">hook</span>)
<span class="ruby-ivar">@pre_reset_hooks</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">hook</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-pre_uninstall" class="method-detail ">
<div class="method-heading">
<span class="method-name">pre_uninstall</span><span
class="method-args">(&hook)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Adds a pre-uninstall hook that will be passed an <a href="Gem/Uninstaller.html"><code>Gem::Uninstaller</code></a> instance and the spec that will be uninstalled when <a href="Gem/Uninstaller.html#method-i-uninstall"><code>Gem::Uninstaller#uninstall</code></a> is called</p>
<div class="method-source-code" id="pre_uninstall-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 839</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">pre_uninstall</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">hook</span>)
<span class="ruby-ivar">@pre_uninstall_hooks</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">hook</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-prefix" class="method-detail ">
<div class="method-heading">
<span class="method-name">prefix</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>The directory prefix this RubyGems was installed at. If your prefix is in a standard location (ie, rubygems is installed where you'd expect it to be), then prefix returns nil.</p>
<div class="method-source-code" id="prefix-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 848</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">prefix</span>
<span class="ruby-identifier">prefix</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span> <span class="ruby-constant">RUBYGEMS_DIR</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">prefix</span> <span class="ruby-operator">!=</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'sitelibdir'</span>]) <span class="ruby-keyword">and</span>
<span class="ruby-identifier">prefix</span> <span class="ruby-operator">!=</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'libdir'</span>]) <span class="ruby-keyword">and</span>
<span class="ruby-string">'lib'</span> <span class="ruby-operator">==</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">basename</span>(<span class="ruby-constant">RUBYGEMS_DIR</span>)
<span class="ruby-identifier">prefix</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-read_binary" class="method-detail ">
<div class="method-heading">
<span class="method-name">read_binary</span><span
class="method-args">(path)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Safely read a file in binary mode on all platforms.</p>
<div class="method-source-code" id="read_binary-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 868</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">read_binary</span>(<span class="ruby-identifier">path</span>)
<span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span> <span class="ruby-identifier">path</span>, <span class="ruby-string">'rb+'</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-identifier">f</span>.<span class="ruby-identifier">flock</span>(<span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">LOCK_EX</span>)
<span class="ruby-identifier">f</span>.<span class="ruby-identifier">read</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-operator">*</span><span class="ruby-constant">READ_BINARY_ERRORS</span>
<span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span> <span class="ruby-identifier">path</span>, <span class="ruby-string">'rb'</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-identifier">f</span>.<span class="ruby-identifier">read</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">ENOLCK</span> <span class="ruby-comment"># NFS</span>
<span class="ruby-keyword">if</span> <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">main</span> <span class="ruby-operator">!=</span> <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">current</span>
<span class="ruby-identifier">raise</span>
<span class="ruby-keyword">else</span>
<span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span> <span class="ruby-identifier">path</span>, <span class="ruby-string">'rb'</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-identifier">f</span>.<span class="ruby-identifier">read</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-refresh" class="method-detail ">
<div class="method-heading">
<span class="method-name">refresh</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Refresh available gems from disk.</p>
<div class="method-source-code" id="refresh-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 861</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">refresh</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">reset</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-register_default_spec" class="method-detail ">
<div class="method-heading">
<span class="method-name">register_default_spec</span><span
class="method-args">(spec)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Register a <a href="Gem/Specification.html"><code>Gem::Specification</code></a> for default gem.</p>
<p>Two formats for the specification are supported:</p>
<ul><li>
<p>MRI 2.0 style, where spec.files contains unprefixed require names. The spec's filenames will be registered as-is.</p>
</li><li>
<p>New style, where spec.files contains files prefixed with paths from spec.require_paths. The prefixes are stripped before registering the spec's filenames. Unprefixed files are omitted.</p>
</li></ul>
<div class="method-source-code" id="register_default_spec-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 1311</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">register_default_spec</span>(<span class="ruby-identifier">spec</span>)
<span class="ruby-identifier">extended_require_paths</span> = <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">require_paths</span>.<span class="ruby-identifier">map</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-operator">+</span> <span class="ruby-string">"/"</span>}
<span class="ruby-identifier">new_format</span> = <span class="ruby-identifier">extended_require_paths</span>.<span class="ruby-identifier">any?</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">path</span><span class="ruby-operator">|</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">files</span>.<span class="ruby-identifier">any?</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">start_with?</span> <span class="ruby-identifier">path</span> } }
<span class="ruby-keyword">if</span> <span class="ruby-identifier">new_format</span>
<span class="ruby-identifier">prefix_group</span> = <span class="ruby-identifier">extended_require_paths</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">"|"</span>)
<span class="ruby-identifier">prefix_pattern</span> = <span class="ruby-regexp">/^(#{prefix_group})/</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">files</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">new_format</span>
<span class="ruby-identifier">file</span> = <span class="ruby-identifier">file</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-identifier">prefix_pattern</span>, <span class="ruby-string">""</span>)
<span class="ruby-keyword">next</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">$~</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@path_to_default_spec_map</span>[<span class="ruby-identifier">file</span>] = <span class="ruby-identifier">spec</span>
<span class="ruby-ivar">@path_to_default_spec_map</span>[<span class="ruby-identifier">file</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-identifier">suffix_regexp</span>, <span class="ruby-string">""</span>)] = <span class="ruby-identifier">spec</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-ruby" class="method-detail ">
<div class="method-heading">
<span class="method-name">ruby</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>The path to the running Ruby interpreter.</p>
<div class="method-source-code" id="ruby-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 910</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">ruby</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@ruby</span>.<span class="ruby-identifier">nil?</span>
<span class="ruby-ivar">@ruby</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'bindir'</span>],
<span class="ruby-node">"#{RbConfig::CONFIG['ruby_install_name']}#{RbConfig::CONFIG['EXEEXT']}"</span>)
<span class="ruby-ivar">@ruby</span> = <span class="ruby-node">"\"#{@ruby}\""</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@ruby</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/\s/</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@ruby</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-ruby-3D" class="method-detail ">
<div class="method-heading">
<span class="method-name">ruby=</span><span
class="method-args">(ruby)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Allows setting path to Ruby. This method is available when requiring 'rubygems/test_case'</p>
<div class="method-source-code" id="ruby-3D-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 68</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">ruby=</span>(<span class="ruby-identifier">ruby</span>)
<span class="ruby-ivar">@ruby</span> = <span class="ruby-identifier">ruby</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-ruby_api_version" class="method-detail ">
<div class="method-heading">
<span class="method-name">ruby_api_version</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns a <a href="String.html"><code>String</code></a> containing the API compatibility version of Ruby</p>
<div class="method-source-code" id="ruby_api_version-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 924</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">ruby_api_version</span>
<span class="ruby-ivar">@ruby_api_version</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'ruby_version'</span>].<span class="ruby-identifier">dup</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-ruby_engine" class="method-detail ">
<div class="method-heading">
<span class="method-name">ruby_engine</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="ruby_engine-source">
<pre><span class="ruby-comment"># File lib/rubygems/defaults.rb, line 125</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">ruby_engine</span>
<span class="ruby-constant">RUBY_ENGINE</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-ruby_version" class="method-detail ">
<div class="method-heading">
<span class="method-name">ruby_version</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>A <a href="Gem/Version.html"><code>Gem::Version</code></a> for the currently running Ruby.</p>
<div class="method-source-code" id="ruby_version-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 969</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">ruby_version</span>
<span class="ruby-keyword">return</span> <span class="ruby-ivar">@ruby_version</span> <span class="ruby-keyword">if</span> <span class="ruby-keyword">defined?</span> <span class="ruby-ivar">@ruby_version</span>
<span class="ruby-identifier">version</span> = <span class="ruby-constant">RUBY_VERSION</span>.<span class="ruby-identifier">dup</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">defined?</span>(<span class="ruby-constant">RUBY_PATCHLEVEL</span>) <span class="ruby-operator">&&</span> <span class="ruby-constant">RUBY_PATCHLEVEL</span> <span class="ruby-operator">!=</span> <span class="ruby-value">-1</span>
<span class="ruby-identifier">version</span> <span class="ruby-operator"><<</span> <span class="ruby-node">".#{RUBY_PATCHLEVEL}"</span>
<span class="ruby-keyword">elsif</span> <span class="ruby-keyword">defined?</span>(<span class="ruby-constant">RUBY_DESCRIPTION</span>)
<span class="ruby-keyword">if</span> <span class="ruby-constant">RUBY_ENGINE</span> <span class="ruby-operator">==</span> <span class="ruby-string">"ruby"</span>
<span class="ruby-identifier">desc</span> = <span class="ruby-constant">RUBY_DESCRIPTION</span>[<span class="ruby-regexp">/\Aruby #{Regexp.quote(RUBY_VERSION)}([^ ]+) /</span>, <span class="ruby-value">1</span>]
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">desc</span> = <span class="ruby-constant">RUBY_DESCRIPTION</span>[<span class="ruby-regexp">/\A#{RUBY_ENGINE} #{Regexp.quote(RUBY_ENGINE_VERSION)} \(#{RUBY_VERSION}([^ ]+)\) /</span>, <span class="ruby-value">1</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">version</span> <span class="ruby-operator"><<</span> <span class="ruby-node">".#{desc}"</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">desc</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@ruby_version</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Version</span>.<span class="ruby-identifier">new</span> <span class="ruby-identifier">version</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-rubygems_version" class="method-detail ">
<div class="method-heading">
<span class="method-name">rubygems_version</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>A <a href="Gem/Version.html"><code>Gem::Version</code></a> for the currently running RubyGems</p>
<div class="method-source-code" id="rubygems_version-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 990</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">rubygems_version</span>
<span class="ruby-keyword">return</span> <span class="ruby-ivar">@rubygems_version</span> <span class="ruby-keyword">if</span> <span class="ruby-keyword">defined?</span> <span class="ruby-ivar">@rubygems_version</span>
<span class="ruby-ivar">@rubygems_version</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Version</span>.<span class="ruby-identifier">new</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">VERSION</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-searcher-3D" class="method-detail ">
<div class="method-heading">
<span class="method-name">searcher=</span><span
class="method-args">(searcher)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Allows setting the gem path searcher. This method is available when requiring 'rubygems/test_case'</p>
<div class="method-source-code" id="searcher-3D-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 52</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">searcher=</span>(<span class="ruby-identifier">searcher</span>)
<span class="ruby-ivar">@searcher</span> = <span class="ruby-identifier">searcher</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-source_date_epoch" class="method-detail ">
<div class="method-heading">
<span class="method-name">source_date_epoch</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns the value of <a href="Gem.html#method-c-source_date_epoch_string"><code>Gem.source_date_epoch_string</code></a>, as a <a href="Time.html"><code>Time</code></a> object.</p>
<p>This is used throughout RubyGems for enabling reproducible builds.</p>
<div class="method-source-code" id="source_date_epoch-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 1279</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">source_date_epoch</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">at</span>(<span class="ruby-keyword">self</span>.<span class="ruby-identifier">source_date_epoch_string</span>.<span class="ruby-identifier">to_i</span>).<span class="ruby-identifier">utc</span>.<span class="ruby-identifier">freeze</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-source_date_epoch_string" class="method-detail ">
<div class="method-heading">
<span class="method-name">source_date_epoch_string</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>If the SOURCE_DATE_EPOCH environment variable is set, returns it's value. Otherwise, returns the time that `Gem.source_date_epoch_string` was first called in the same format as SOURCE_DATE_EPOCH.</p>
<p>NOTE(@duckinator): The implementation is a tad weird because we want to:</p>
<pre>1. Make builds reproducible by default, by having this function always
return the same result during a given run.
2. Allow changing ENV['SOURCE_DATE_EPOCH'] at runtime, since multiple
tests that set this variable will be run in a single process.</pre>
<p>If you simplify this function and a lot of tests fail, that is likely due to #2 above.</p>
<p>Details on SOURCE_DATE_EPOCH: <a href="https://reproducible-builds.org/specs/source-date-epoch">reproducible-builds.org/specs/source-date-epoch</a>/</p>
<div class="method-source-code" id="source_date_epoch_string-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 1260</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">source_date_epoch_string</span>
<span class="ruby-comment"># The value used if $SOURCE_DATE_EPOCH is not set.</span>
<span class="ruby-ivar">@default_source_date_epoch</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">to_i</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-identifier">specified_epoch</span> = <span class="ruby-constant">ENV</span>[<span class="ruby-string">"SOURCE_DATE_EPOCH"</span>]
<span class="ruby-comment"># If it's empty or just whitespace, treat it like it wasn't set at all.</span>
<span class="ruby-identifier">specified_epoch</span> = <span class="ruby-keyword">nil</span> <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">specified_epoch</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">specified_epoch</span>.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">empty?</span>
<span class="ruby-identifier">epoch</span> = <span class="ruby-identifier">specified_epoch</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@default_source_date_epoch</span>
<span class="ruby-identifier">epoch</span>.<span class="ruby-identifier">strip</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-sources" class="method-detail ">
<div class="method-heading">
<span class="method-name">sources</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns an <a href="Array.html"><code>Array</code></a> of sources to fetch remote gems from. Uses <a href="Gem.html#method-c-default_sources"><code>default_sources</code></a> if the sources list is empty.</p>
<div class="method-source-code" id="sources-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 999</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">sources</span>
<span class="ruby-identifier">source_list</span> = <span class="ruby-identifier">configuration</span>.<span class="ruby-identifier">sources</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">default_sources</span>
<span class="ruby-ivar">@sources</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">SourceList</span>.<span class="ruby-identifier">from</span>(<span class="ruby-identifier">source_list</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-sources-3D" class="method-detail ">
<div class="method-heading">
<span class="method-name">sources=</span><span
class="method-args">(new_sources)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Need to be able to set the sources without calling <a href="Gem.html#method-c-sources"><code>Gem.sources</code></a>.replace since that would cause an infinite loop.</p>
<p>DOC: This comment is not documentation about the method itself, it's more of a code comment about the implementation.</p>
<div class="method-source-code" id="sources-3D-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 1011</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">sources=</span>(<span class="ruby-identifier">new_sources</span>)
<span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">new_sources</span>
<span class="ruby-ivar">@sources</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">else</span>
<span class="ruby-ivar">@sources</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">SourceList</span>.<span class="ruby-identifier">from</span>(<span class="ruby-identifier">new_sources</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-spec_cache_dir" class="method-detail ">
<div class="method-heading">
<span class="method-name">spec_cache_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="spec_cache_dir-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 425</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">spec_cache_dir</span>
<span class="ruby-identifier">paths</span>.<span class="ruby-identifier">spec_cache_dir</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-suffix_pattern" class="method-detail ">
<div class="method-heading">
<span class="method-name">suffix_pattern</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Glob pattern for require-able path suffixes.</p>
<div class="method-source-code" id="suffix_pattern-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 1022</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">suffix_pattern</span>
<span class="ruby-ivar">@suffix_pattern</span> <span class="ruby-operator">||=</span> <span class="ruby-node">"{#{suffixes.join(',')}}"</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-suffix_regexp" class="method-detail ">
<div class="method-heading">
<span class="method-name">suffix_regexp</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="suffix_regexp-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 1026</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">suffix_regexp</span>
<span class="ruby-ivar">@suffix_regexp</span> <span class="ruby-operator">||=</span> <span class="ruby-regexp">/#{Regexp.union(suffixes)}\z/</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-suffixes" class="method-detail ">
<div class="method-heading">
<span class="method-name">suffixes</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Suffixes for require-able paths.</p>
<div class="method-source-code" id="suffixes-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 1033</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">suffixes</span>
<span class="ruby-ivar">@suffixes</span> <span class="ruby-operator">||=</span> [<span class="ruby-string">''</span>,
<span class="ruby-string">'.rb'</span>,
<span class="ruby-operator">*</span><span class="ruby-node">%w(DLEXT DLEXT2)</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">val</span> = <span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-identifier">key</span>]
<span class="ruby-keyword">next</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">val</span> <span class="ruby-keyword">and</span> <span class="ruby-keyword">not</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">empty?</span>
<span class="ruby-node">".#{val}"</span>
<span class="ruby-keyword">end</span>
].<span class="ruby-identifier">compact</span>.<span class="ruby-identifier">uniq</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-time" class="method-detail ">
<div class="method-heading">
<span class="method-name">time</span><span
class="method-args">(msg, width = 0, display = Gem.configuration.verbose) { || ... }</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Prints the amount of time the supplied block takes to run using the debug UI output.</p>
<div class="method-source-code" id="time-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 1048</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">time</span>(<span class="ruby-identifier">msg</span>, <span class="ruby-identifier">width</span> = <span class="ruby-value">0</span>, <span class="ruby-identifier">display</span> = <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">configuration</span>.<span class="ruby-identifier">verbose</span>)
<span class="ruby-identifier">now</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
<span class="ruby-identifier">value</span> = <span class="ruby-keyword">yield</span>
<span class="ruby-identifier">elapsed</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">now</span>
<span class="ruby-identifier">ui</span>.<span class="ruby-identifier">say</span> <span class="ruby-string">"%2$*1$s: %3$3.3fs"</span> <span class="ruby-operator">%</span> [<span class="ruby-operator">-</span><span class="ruby-identifier">width</span>, <span class="ruby-identifier">msg</span>, <span class="ruby-identifier">elapsed</span>] <span class="ruby-keyword">if</span> <span class="ruby-identifier">display</span>
<span class="ruby-identifier">value</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-try_activate" class="method-detail ">
<div class="method-heading">
<span class="method-name">try_activate</span><span
class="method-args">(path)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Try to activate a gem containing <code>path</code>. Returns true if activation succeeded or wasn't needed because it was already activated. Returns false if it can't find the path in a gem.</p>
<div class="method-source-code" id="try_activate-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 199</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">try_activate</span>(<span class="ruby-identifier">path</span>)
<span class="ruby-comment"># finds the _latest_ version... regardless of loaded specs and their deps</span>
<span class="ruby-comment"># if another gem had a requirement that would mean we shouldn't</span>
<span class="ruby-comment"># activate the latest version, then either it would already be activated</span>
<span class="ruby-comment"># or if it was ambiguous (and thus unresolved) the code in our custom</span>
<span class="ruby-comment"># require will try to activate the more specific version.</span>
<span class="ruby-identifier">spec</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">find_by_path</span> <span class="ruby-identifier">path</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-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">activated?</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">activate</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">LoadError</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">e</span> <span class="ruby-comment"># this could fail due to gem dep collisions, go lax</span>
<span class="ruby-identifier">spec_by_name</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Specification</span>.<span class="ruby-identifier">find_by_name</span>(<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">name</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">spec_by_name</span>.<span class="ruby-identifier">nil?</span>
<span class="ruby-identifier">raise</span> <span class="ruby-identifier">e</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">spec_by_name</span>.<span class="ruby-identifier">activate</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-ui" class="method-detail ">
<div class="method-heading">
<span class="method-name">ui</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Lazily loads <a href="Gem/DefaultUserInteraction.html"><code>DefaultUserInteraction</code></a> and returns the default UI.</p>
<div class="method-source-code" id="ui-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 1063</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">ui</span>
<span class="ruby-identifier">require</span> <span class="ruby-string">'rubygems/user_interaction'</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">DefaultUserInteraction</span>.<span class="ruby-identifier">ui</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-use_gemdeps" class="method-detail ">
<div class="method-heading">
<span class="method-name">use_gemdeps</span><span
class="method-args">(path = nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Looks for a gem dependency file at <code>path</code> and activates the gems in the file if found. If the file is not found an <a href="ArgumentError.html"><code>ArgumentError</code></a> is raised.</p>
<p>If <code>path</code> is not given the RUBYGEMS_GEMDEPS environment variable is used, but if no file is found no exception is raised.</p>
<p>If '-' is given for <code>path</code> RubyGems searches up from the current working directory for gem dependency files (gem.deps.rb, Gemfile, Isolate) and activates the gems in the first one found.</p>
<p>You can run this automatically when rubygems starts. To enable, set the <code>RUBYGEMS_GEMDEPS</code> environment variable to either the path of your gem dependencies file or “-” to auto-discover in parent directories.</p>
<p>NOTE: Enabling automatic discovery on multiuser systems can lead to execution of arbitrary code when used from directories outside your control.</p>
<div class="method-source-code" id="use_gemdeps-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 1179</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">use_gemdeps</span>(<span class="ruby-identifier">path</span> = <span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">raise_exception</span> = <span class="ruby-identifier">path</span>
<span class="ruby-identifier">path</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">ENV</span>[<span class="ruby-string">'RUBYGEMS_GEMDEPS'</span>]
<span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">path</span>
<span class="ruby-identifier">path</span> = <span class="ruby-identifier">path</span>.<span class="ruby-identifier">dup</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">path</span> <span class="ruby-operator">==</span> <span class="ruby-string">"-"</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">Util</span>.<span class="ruby-identifier">traverse_parents</span> <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">pwd</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">directory</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">dep_file</span> = <span class="ruby-constant">GEM_DEP_FILES</span>.<span class="ruby-identifier">find</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">file?</span>(<span class="ruby-identifier">f</span>) }
<span class="ruby-keyword">next</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">dep_file</span>
<span class="ruby-identifier">path</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span> <span class="ruby-identifier">directory</span>, <span class="ruby-identifier">dep_file</span>
<span class="ruby-keyword">break</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">path</span>.<span class="ruby-identifier">tap</span>(<span class="ruby-operator">&</span><span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">UNTAINT</span>)
<span class="ruby-keyword">unless</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">file?</span> <span class="ruby-identifier">path</span>
<span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">raise_exception</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">"Unable to find gem dependencies file at #{path}"</span>
<span class="ruby-keyword">end</span>
<span class="ruby-constant">ENV</span>[<span class="ruby-string">"BUNDLE_GEMFILE"</span>] <span class="ruby-operator">||=</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">path</span>)
<span class="ruby-identifier">require</span> <span class="ruby-string">'rubygems/user_interaction'</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">DefaultUserInteraction</span>.<span class="ruby-identifier">use_ui</span>(<span class="ruby-identifier">ui</span>) <span class="ruby-keyword">do</span>
<span class="ruby-identifier">require</span> <span class="ruby-string">"bundler"</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">ui</span>.<span class="ruby-identifier">silence</span> <span class="ruby-keyword">do</span>
<span class="ruby-ivar">@gemdeps</span> = <span class="ruby-constant">Bundler</span>.<span class="ruby-identifier">setup</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">ensure</span>
<span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">DefaultUserInteraction</span>.<span class="ruby-identifier">ui</span>.<span class="ruby-identifier">close</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@gemdeps</span>.<span class="ruby-identifier">requested_specs</span>.<span class="ruby-identifier">map</span>(<span class="ruby-operator">&</span><span class="ruby-value">:to_spec</span>).<span class="ruby-identifier">sort_by</span>(<span class="ruby-operator">&</span><span class="ruby-value">:name</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">e</span>
<span class="ruby-keyword">case</span> <span class="ruby-identifier">e</span>
<span class="ruby-keyword">when</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">LoadError</span>, <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">UnsatisfiableDependencyError</span>, (<span class="ruby-keyword">defined?</span>(<span class="ruby-constant">Bundler</span><span class="ruby-operator">::</span><span class="ruby-constant">GemNotFound</span>) <span class="ruby-operator">?</span> <span class="ruby-constant">Bundler</span><span class="ruby-operator">::</span><span class="ruby-constant">GemNotFound</span> <span class="ruby-operator">:</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">LoadError</span>)
<span class="ruby-identifier">warn</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">message</span>
<span class="ruby-identifier">warn</span> <span class="ruby-string">"You may need to `gem install -g` to install missing gems"</span>
<span class="ruby-identifier">warn</span> <span class="ruby-string">""</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
<div class="aliases">
Also aliased as: <a href="Gem.html#method-c-detect_gemdeps">detect_gemdeps</a>
</div>
</div>
<div id="method-c-use_paths" class="method-detail ">
<div class="method-heading">
<span class="method-name">use_paths</span><span
class="method-args">(home, *paths)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Use the <code>home</code> and <code>paths</code> values for <a href="Gem.html#method-c-dir"><code>Gem.dir</code></a> and <a href="Gem.html#method-c-path"><code>Gem.path</code></a>. Used mainly by the unit tests to provide environment isolation.</p>
<div class="method-source-code" id="use_paths-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 1073</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">use_paths</span>(<span class="ruby-identifier">home</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">paths</span>)
<span class="ruby-identifier">paths</span>.<span class="ruby-identifier">flatten!</span>
<span class="ruby-identifier">paths</span>.<span class="ruby-identifier">compact!</span>
<span class="ruby-identifier">hash</span> = { <span class="ruby-string">"GEM_HOME"</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">home</span>, <span class="ruby-string">"GEM_PATH"</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">paths</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">home</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">paths</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">PATH_SEPARATOR</span>) }
<span class="ruby-identifier">hash</span>.<span class="ruby-identifier">delete_if</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">_</span>, <span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">v</span>.<span class="ruby-identifier">nil?</span> }
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">paths</span> = <span class="ruby-identifier">hash</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-user_dir" class="method-detail ">
<div class="method-heading">
<span class="method-name">user_dir</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Path for gems in the user's home directory</p>
<div class="method-source-code" id="user_dir-source">
<pre><span class="ruby-comment"># File lib/rubygems/defaults.rb, line 76</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">user_dir</span>
<span class="ruby-identifier">parts</span> = [<span class="ruby-constant">Gem</span>.<span class="ruby-identifier">user_home</span>, <span class="ruby-string">'.gem'</span>, <span class="ruby-identifier">ruby_engine</span>]
<span class="ruby-identifier">parts</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'ruby_version'</span>] <span class="ruby-keyword">unless</span> <span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'ruby_version'</span>].<span class="ruby-identifier">empty?</span>
<span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span> <span class="ruby-identifier">parts</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-user_home" class="method-detail ">
<div class="method-heading">
<span class="method-name">user_home</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>The home directory for the user.</p>
<div class="method-source-code" id="user_home-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 1084</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">user_home</span>
<span class="ruby-ivar">@user_home</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">find_home</span>.<span class="ruby-identifier">tap</span>(<span class="ruby-operator">&</span><span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">UNTAINT</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-win_platform-3D" class="method-detail ">
<div class="method-heading">
<span class="method-name">win_platform=</span><span
class="method-args">(val)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Allows toggling Windows behavior. This method is available when requiring 'rubygems/test_case'</p>
<div class="method-source-code" id="win_platform-3D-source">
<pre><span class="ruby-comment"># File lib/rubygems/test_case.rb, line 60</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">win_platform=</span>(<span class="ruby-identifier">val</span>)
<span class="ruby-identifier">@@win_platform</span> = <span class="ruby-identifier">val</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-win_platform-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">win_platform?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Is this a windows platform?</p>
<div class="method-source-code" id="win_platform-3F-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 1091</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">win_platform?</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">@@win_platform</span>.<span class="ruby-identifier">nil?</span>
<span class="ruby-identifier">ruby_platform</span> = <span class="ruby-constant">RbConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-string">'host_os'</span>]
<span class="ruby-identifier">@@win_platform</span> = <span class="ruby-operator">!</span><span class="ruby-operator">!</span><span class="ruby-constant">WIN_PATTERNS</span>.<span class="ruby-identifier">find</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span> <span class="ruby-identifier">ruby_platform</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">r</span> }
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">@@win_platform</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-write_binary" class="method-detail ">
<div class="method-heading">
<span class="method-name">write_binary</span><span
class="method-args">(path, data)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Safely write a file in binary mode on all platforms.</p>
<div class="method-source-code" id="write_binary-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 889</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">write_binary</span>(<span class="ruby-identifier">path</span>, <span class="ruby-identifier">data</span>)
<span class="ruby-identifier">open</span>(<span class="ruby-identifier">path</span>, <span class="ruby-string">'wb'</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">io</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-identifier">io</span>.<span class="ruby-identifier">flock</span>(<span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">LOCK_EX</span>)
<span class="ruby-keyword">rescue</span> <span class="ruby-operator">*</span><span class="ruby-constant">WRITE_BINARY_ERRORS</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">io</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">data</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">ENOLCK</span> <span class="ruby-comment"># NFS</span>
<span class="ruby-keyword">if</span> <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">main</span> <span class="ruby-operator">!=</span> <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">current</span>
<span class="ruby-identifier">raise</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">open</span>(<span class="ruby-identifier">path</span>, <span class="ruby-string">'wb'</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">io</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">io</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">data</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="private-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Private Class Methods</h3>
</header>
<div id="method-c-find_home" class="method-detail ">
<div class="method-heading">
<span class="method-name">find_home</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Finds the user's home directory.</p>
<div class="method-source-code" id="find_home-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 566</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">find_home</span>
<span class="ruby-constant">Dir</span>.<span class="ruby-identifier">home</span>.<span class="ruby-identifier">dup</span>
<span class="ruby-keyword">rescue</span>
<span class="ruby-keyword">if</span> <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">win_platform?</span>
<span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">ENV</span>[<span class="ruby-string">'HOMEDRIVE'</span>] <span class="ruby-operator">||</span> <span class="ruby-constant">ENV</span>[<span class="ruby-string">'SystemDrive'</span>], <span class="ruby-string">'/'</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span> <span class="ruby-string">"/"</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-find_spec_for_exe" class="method-detail ">
<div class="method-heading">
<span class="method-name">find_spec_for_exe</span><span
class="method-args">(name, exec_name, requirements)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="find_spec_for_exe-source">
<pre><span class="ruby-comment"># File lib/rubygems.rb, line 257</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">find_spec_for_exe</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">exec_name</span>, <span class="ruby-identifier">requirements</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"you must supply exec_name"</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">exec_name</span>
<span class="ruby-identifier">dep</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-identifier">loaded</span> = <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">loaded_specs</span>[<span class="ruby-identifier">name</span>]
<span class="ruby-keyword">return</span> <span class="ruby-identifier">loaded</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">loaded</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">dep</span>.<span class="ruby-identifier">matches_spec?</span>(<span class="ruby-identifier">loaded</span>)
<span class="ruby-identifier">specs</span> = <span class="ruby-identifier">dep</span>.<span class="ruby-identifier">matching_specs</span>(<span class="ruby-keyword">true</span>)
<span class="ruby-identifier">specs</span> = <span class="ruby-identifier">specs</span>.<span class="ruby-identifier">find_all</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">executables</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">exec_name</span>
<span class="ruby-keyword">end</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">exec_name</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">spec</span> = <span class="ruby-identifier">specs</span>.<span class="ruby-identifier">first</span>
<span class="ruby-identifier">msg</span> = <span class="ruby-node">"can't find gem #{dep} with executable #{exec_name}"</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-string">"bundler"</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">bundler_message</span> = <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">BundlerVersionFinder</span>.<span class="ruby-identifier">missing_version_message</span>
<span class="ruby-identifier">msg</span> = <span class="ruby-identifier">bundler_message</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Gem</span><span class="ruby-operator">::</span><span class="ruby-constant">GemNotFoundException</span>, <span class="ruby-identifier">msg</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">spec</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>