Class: Gem::SourceIndex

Class | Gem::SourceIndex
In: | lib/rubygems/source_index.rb
Parent: | Object

The SourceIndex object indexes all the gems available from a particular source (e.g. a list of gem directories, or a remote source). A SourceIndex maps a gem full name to a gem specification.

NOTE: | The class used to be named Cache, but that became confusing when cached source fetchers where introduced. The constant Gem::Cache is an alias for this class to allow old YAMLized source index objects to load properly.

### Methods

add_spec dump each find_name from_gems_in from_installed_gems gem_signature index_signature installed_spec_directories latest_specs length load_gems_in load_specification new outdated refresh! remove_spec search size specification update

### Included Modules

Enumerable Gem::UserInteraction Gem::UserInteraction

### Attributes

gems | [R] |

### Public Class methods

from_gems_in(*spec_dirs)

Factory method to construct a source index instance for a

      given path.

spec_dirs: | List of directories to search for specifications. Each directory should have a "specifications" subdirectory containing the gem specifications.
return: | SourceIndex instance

from_installed_gems(*deprecated)

Factory method to construct a source index instance for a given path.

deprecated: | If supplied, from_installed_gems will act just like `from_gems_in`. This argument is deprecated and is provided just for backwards compatibility, and should not generally be used.
return: | SourceIndex instance

installed_spec_directories()

Return a list of directories in the current gem path that contain specifications.

return: | List of directory paths (all ending in "../specifications").

load_specification(file_name)

Load a specification from a file (eval‘d Ruby code)

file_name: | [String] The .gemspec file
return: | Specification instance or nil if an error occurs

new(specifications={})

Constructs a source index instance from the provided specifications

specifications: | [Hash] hash of [Gem name, Gem::Specification] pairs

### Public Instance methods

add_spec(gem_spec)

Add a gem specification to the source index.

dump()
each() {|gem.full_name, gem| ...}

Iterate over the specifications in the source index.

find_name(gem_name, version_requirement = Gem::Requirement.default)

Find a gem by an exact match on the short name.

gem_signature(gem_full_name)

The signature for the given gem specification.

index_signature()

The signature for the source index. Changes in the signature indicate a change in the index.

latest_specs()

Returns a Hash of name => Specification of the latest versions of each gem in this index.

length()

Alias for size

load_gems_in(*spec_dirs)

Reconstruct the source index from the list of source directories.

outdated()

Returns an Array of Gem::Specifications that are not up to date.

refresh!()

Refresh the source index from the local file system.

return: | Returns a pointer to itself.

remove_spec(full_name)

Remove a gem specification named `full_name`.

search(gem_pattern, platform_only = false)

Search for a gem by Gem::Dependency `gem_pattern`. If `only_platform` is true, only gems matching Gem::Platform.local will be returned. An Array of matching Gem::Specification objects is returned.

For backwards compatibility, a String or Regexp pattern may be passed as `gem_pattern`, and a Gem::Requirement for `platform_only`. This behavior is deprecated and will be removed.

size()
specification(full_name)

The gem specification given a full gem spec name.

update(source_uri)

[Validate]