class Gem::BasicSpecification

BasicSpecification is an abstract class which implements some common code used by both Specification and StubSpecification.

Attributes

loaded_from[R]

The path this gemspec was loaded from. This attribute is not persisted.

Public Class Methods

default_specifications_dir() click to toggle source
# File lib/rubygems/basic_specification.rb, line 12
def self.default_specifications_dir
  File.join(Gem.default_dir, "specifications", "default")
end

Public Instance Methods

activated?() click to toggle source

True when the gem has been activated

# File lib/rubygems/basic_specification.rb, line 19
def activated?
  raise NotImplementedError
end
base_dir() click to toggle source

Returns the full path to the base gem directory.

eg: /usr/local/lib/ruby/gems/1.8

# File lib/rubygems/basic_specification.rb, line 28
def base_dir
  return Gem.dir unless loaded_from
  @base_dir ||= if default_gem? then
                  File.dirname File.dirname File.dirname loaded_from
                else
                  File.dirname File.dirname loaded_from
                end
end
contains_requirable_file?(file) click to toggle source

Return true if this spec can require file.

# File lib/rubygems/basic_specification.rb, line 40
def contains_requirable_file? file
  root     = full_gem_path
  ext      = full_gem_ext_path
  suffixes = Gem.suffixes

  require_paths.any? do |lib|
    base = ["#{root}/#{lib}/#{file}"]
    base << "#{ext}/#{lib}/#{file}" unless !ext || ext.empty?

    base.any? do |path|
      suffixes.any? { |suf| File.file? "#{path}#{suf}" }
    end
  end
end
default_gem?() click to toggle source
# File lib/rubygems/basic_specification.rb, line 55
def default_gem?
  loaded_from &&
    File.dirname(loaded_from) == self.class.default_specifications_dir
end
exts_dir() click to toggle source

Returns the full path to the exts directory containing this spec's gem directory. eg: /usr/local/lib/ruby/1.8/exts

# File lib/rubygems/basic_specification.rb, line 64
def exts_dir
  @exts_dir ||= Gem.default_ext_dir_for(base_dir) || gems_dir
end
full_gem_ext_path() click to toggle source

The full path to the gem binary extension (install path + full name).

# File lib/rubygems/basic_specification.rb, line 98
def full_gem_ext_path
  @full_gem_ext_path ||= find_full_gem_ext_path
end
full_gem_path() click to toggle source

The full path to the gem (install path + full name).

# File lib/rubygems/basic_specification.rb, line 89
def full_gem_path
  # TODO: This is a heavily used method by gems, so we'll need
  # to aleast just alias it to #gem_dir rather than remove it.
  @full_gem_path ||= find_full_gem_path
end
full_name() click to toggle source

Returns the full name (name-version) of this Gem. Platform information is included (name-version-platform) if it is specified and not the default Ruby platform.

# File lib/rubygems/basic_specification.rb, line 107
def full_name
  if platform == Gem::Platform::RUBY or platform.nil? then
    "#{name}-#{version}".untaint
  else
    "#{name}-#{version}-#{platform}".untaint
  end
end
gems_dir() click to toggle source

Returns the full path to the gems directory containing this spec's gem directory. eg: /usr/local/lib/ruby/1.8/gems

# File lib/rubygems/basic_specification.rb, line 119
def gems_dir
  # TODO: this logic seems terribly broken, but tests fail if just base_dir
  @gems_dir ||= File.join(loaded_from && base_dir || Gem.dir, "gems")
end
loaded_from=(path) click to toggle source

Set the path the Specification was loaded from. path is converted to a String.

# File lib/rubygems/basic_specification.rb, line 128
def loaded_from= path
  @loaded_from   = path && path.to_s

  @full_gem_path = nil
  @full_gem_ext_path = nil
  @gems_dir      = nil
  @exts_dir      = nil
  @base_dir      = nil
end
name() click to toggle source

Name of the gem

# File lib/rubygems/basic_specification.rb, line 141
def name
  raise NotImplementedError
end
platform() click to toggle source

Platform of the gem

# File lib/rubygems/basic_specification.rb, line 148
def platform
  raise NotImplementedError
end
require_paths() click to toggle source

Require paths of the gem

# File lib/rubygems/basic_specification.rb, line 155
def require_paths
  raise NotImplementedError
end
to_spec() click to toggle source

Return a Gem::Specification from this gem

# File lib/rubygems/basic_specification.rb, line 162
def to_spec
  raise NotImplementedError
end
version() click to toggle source

Version of the gem

# File lib/rubygems/basic_specification.rb, line 169
def version
  raise NotImplementedError
end