Class: Gem::BasicSpecification (Ruby 2.3.7)
Description: Class : Gem::BasicSpecification - Ruby 2.3.7

- Home
- Core 2.3.7
- Std-lib 2.3.7
- Downloads

Support for the Ruby 2.3 series has ended. See here for reference.

### Home Classes Methods

### In Files

- rubygems/basic_specification.rb

### Parent

Object

### Methods

- ::default_specifications_dir
- ::new
- #activated?
- #base_dir
- #contains_requirable_file?
- #datadir
- #default_gem?
- #extension_dir
- #extensions_dir
- #full_gem_path
- #full_name
- #full_require_paths
- #gem_dir
- #gems_dir
- #lib_dirs_glob
- #matches_for_glob
- #name
- #platform
- #require_paths
- #source_paths
- #stubbed?
- #to_fullpath
- #to_spec
- #version

### Class/Module Index

Quicksearch

- Gem::AvailableSet
- Gem::BasicSpecification
- Gem::Command
- Gem::CommandLineError
- Gem::CommandManager
- Gem::Commands
- Gem::Commands::BuildCommand
- Gem::Commands::CertCommand
- Gem::Commands::CheckCommand
- Gem::Commands::CleanupCommand
- Gem::Commands::ContentsCommand
- Gem::Commands::DependencyCommand
- Gem::Commands::EnvironmentCommand
- Gem::Commands::FetchCommand
- Gem::Commands::GenerateIndexCommand
- Gem::Commands::HelpCommand
- Gem::Commands::InstallCommand
- Gem::Commands::ListCommand
- Gem::Commands::LockCommand
- Gem::Commands::MirrorCommand
- Gem::Commands::OpenCommand
- Gem::Commands::OutdatedCommand
- Gem::Commands::OwnerCommand
- Gem::Commands::PristineCommand
- Gem::Commands::PushCommand
- Gem::Commands::QueryCommand
- Gem::Commands::RdocCommand
- Gem::Commands::SearchCommand
- Gem::Commands::ServerCommand
- Gem::Commands::SetupCommand
- Gem::Commands::SourcesCommand
- Gem::Commands::SpecificationCommand
- Gem::Commands::StaleCommand
- Gem::Commands::UninstallCommand
- Gem::Commands::UnpackCommand
- Gem::Commands::UpdateCommand
- Gem::Commands::WhichCommand
- Gem::Commands::YankCommand
- Gem::ConfigFile
- Gem::ConflictError
- Gem::ConsoleUI
- Gem::DefaultUserInteraction
- Gem::Dependency
- Gem::DependencyError
- Gem::DependencyInstaller
- Gem::DependencyList
- Gem::DependencyRemovalException
- Gem::DependencyResolutionError
- Gem::Deprecate
- Gem::Doctor
- Gem::DocumentError
- Gem::EndOfYAMLException
- Gem::ErrorReason
- Gem::Exception
- Gem::Ext
- Gem::Ext::BuildError
- Gem::Ext::Builder
- Gem::Ext::CmakeBuilder
- Gem::Ext::ConfigureBuilder
- Gem::Ext::ExtConfBuilder
- Gem::Ext::RakeBuilder
- Gem::FakeFetcher
- Gem::FilePermissionError
- Gem::FormatException
- Gem::GemNotFoundException
- Gem::GemNotInHomeException
- Gem::GemRunner
- Gem::GemcutterUtilities
- Gem::ImpossibleDependenciesError
- Gem::Indexer
- Gem::InstallError
- Gem::InstallUpdateOptions
- Gem::Installer
- Gem::Installer::FakePackage
- Gem::InstallerTestCase
- Gem::InvalidSpecificationException
- Gem::Licenses
- Gem::List
- Gem::LoadError
- Gem::LocalRemoteOptions
- Gem::MockGemUi
- Gem::MockGemUi::InputEOFError
- Gem::MockGemUi::SystemExitException
- Gem::MockGemUi::TTY
- Gem::MockGemUi::TermError
- Gem::NameTuple
- Gem::NoAliasYAMLTree
- Gem::OperationNotSupportedError
- Gem::Package::DigestIO
- Gem::Package::Error
- Gem::Package::FormatError
- Gem::Package::NonSeekableIO
- Gem::Package::Old
- Gem::Package::PathError
- Gem::Package::TarHeader
- Gem::Package::TarInvalidError
- Gem::Package::TarReader
- Gem::Package::TarReader::Entry
- Gem::Package::TarReader::UnexpectedEOF
- Gem::Package::TarTestCase
- Gem::Package::TarWriter
- Gem::Package::TarWriter::BoundedStream
- Gem::Package::TarWriter::FileOverflow
- Gem::Package::TarWriter::RestrictedStream
- Gem::Package::TooLongFileName
- Gem::PackageTask
- Gem::PathSupport
- Gem::Platform
- Gem::PlatformMismatch
- Gem::RemoteError
- Gem::RemoteFetcher
- Gem::RemoteFetcher::FetchError
- Gem::RemoteFetcher::UnknownHostError
- Gem::RemoteInstallationCancelled
- Gem::RemoteInstallationSkipped
- Gem::RemoteSourceException
- Gem::Request::ConnectionPools
- Gem::Request::ConnectionPools::Net
- Gem::RequestSet
- Gem::RequestSet::GemDependencyAPI
- Gem::RequestSet::Lockfile
- Gem::RequestSet::Lockfile::ParseError
- Gem::RequestSet::Lockfile::Parser
- Gem::RequestSet::Lockfile::Tokenizer
- Gem::Requirement
- Gem::Requirement::BadRequirementError
- Gem::Resolver
- Gem::Resolver::APISet
- Gem::Resolver::APISpecification
- Gem::Resolver::ActivationRequest
- Gem::Resolver::BestSet
- Gem::Resolver::ComposedSet
- Gem::Resolver::Conflict
- Gem::Resolver::CurrentSet
- Gem::Resolver::DependencyRequest
- Gem::Resolver::GitSet
- Gem::Resolver::GitSpecification
- Gem::Resolver::IndexSet
- Gem::Resolver::IndexSpecification
- Gem::Resolver::InstalledSpecification
- Gem::Resolver::InstallerSet
- Gem::Resolver::LocalSpecification
- Gem::Resolver::LockSet
- Gem::Resolver::LockSpecification
- Gem::Resolver::Molinillo
- Gem::Resolver::Molinillo::CircularDependencyError
- Gem::Resolver::Molinillo::DependencyGraph
- Gem::Resolver::Molinillo::DependencyGraph::Vertex
- Gem::Resolver::Molinillo::DependencyState
- Gem::Resolver::Molinillo::NoSuchDependencyError
- Gem::Resolver::Molinillo::PossibilityState
- Gem::Resolver::Molinillo::ResolutionState
- Gem::Resolver::Molinillo::Resolver
- Gem::Resolver::Molinillo::Resolver::Resolution
- Gem::Resolver::Molinillo::ResolverError
- Gem::Resolver::Molinillo::SpecificationProvider
- Gem::Resolver::Molinillo::UI
- Gem::Resolver::Molinillo::VersionConflict
- Gem::Resolver::RequirementList
- Gem::Resolver::Set
- Gem::Resolver::SourceSet
- Gem::Resolver::SpecSpecification
- Gem::Resolver::Specification
- Gem::Resolver::Stats
- Gem::Resolver::VendorSet
- Gem::Resolver::VendorSpecification
- Gem::RubyVersionMismatch
- Gem::SafeYAML
- Gem::Security
- Gem::Security::Exception
- Gem::Security::Policy
- Gem::Security::Signer
- Gem::Security::TrustDir
- Gem::Server
- Gem::SilentUI
- Gem::Source
- Gem::Source::Git
- Gem::Source::Installed
- Gem::Source::Local
- Gem::Source::Lock
- Gem::Source::SpecificFile
- Gem::Source::Vendor
- Gem::SourceFetchProblem
- Gem::SourceList
- Gem::SpecFetcher
- Gem::SpecificGemNotFoundException
- Gem::Specification
- Gem::StreamUI
- Gem::StreamUI::SilentDownloadReporter
- Gem::StreamUI::SilentProgressReporter
- Gem::StreamUI::SimpleProgressReporter
- Gem::StreamUI::VerboseDownloadReporter
- Gem::StreamUI::VerboseProgressReporter
- Gem::StubSpecification
- Gem::SystemExitException
- Gem::TestCase
- Gem::TestCase::SpecFetcherSetup
- Gem::TestCase::StaticSet
- Gem::Text
- Gem::Uninstaller
- Gem::UnsatisfiableDependencyError
- Gem::UriFormatter
- Gem::UserInteraction
- Gem::Util
- Gem::Validator
- Gem::VerificationError
- Gem::Version
- Gem::VersionOption
- Kernel
- Object
- OpenSSL
- TempIO
- YAML::Syck
- YAML::Syck

No matching classes.

# Gem::BasicSpecification

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

### Attributes

loaded_from[RW]

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

### Public Class Methods

default_specifications_dir() click to toggle source

                   # File rubygems/basic_specification.rb, line 36
    def self.default_specifications_dir
      File.join(Gem.default_dir, "specifications", "default")
    end

new() click to toggle source

                   # File rubygems/basic_specification.rb, line 32
    def initialize
      internal_init
    end

### Public Instance Methods

activated?() click to toggle source

True when the gem has been activated

                   # File rubygems/basic_specification.rb, line 51
    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 rubygems/basic_specification.rb, line 60
    def base_dir
      raise NotImplementedError
    end

contains_requirable_file?(file) click to toggle source

Return true if this spec can require `file`.

                   # File rubygems/basic_specification.rb, line 67
    def contains_requirable_file? file
      if @ignored then
        return false
      elsif missing_extensions? then
        @ignored = true

        warn "Ignoring #{full_name} because its extensions are not built.  " +
          "Try: gem pristine #{name} --version #{version}"
        return false
      end

      have_file? file, Gem.suffixes
    end

datadir() click to toggle source

The path to the data directory for this gem.

                   # File rubygems/basic_specification.rb, line 153
      def datadir
    # TODO: drop the extra ", gem_name" which is uselessly redundant
        File.expand_path(File.join(gems_dir, full_name, "data", name)).untaint
      end

default_gem?() click to toggle source

                   # File rubygems/basic_specification.rb, line 81
    def default_gem?
      loaded_from &&
        File.dirname(loaded_from) == self.class.default_specifications_dir
    end

extension_dir() click to toggle source

Returns full path to the directory where gem's extensions are installed.

                   # File rubygems/basic_specification.rb, line 89
    def extension_dir
      @extension_dir ||= File.expand_path(File.join(extensions_dir, full_name)).untaint
    end

extensions_dir() click to toggle source

Returns path to the extensions directory.

                   # File rubygems/basic_specification.rb, line 96
    def extensions_dir
      @extensions_dir ||= Gem.default_ext_dir_for(base_dir) ||
        File.join(base_dir, 'extensions', Gem::Platform.local.to_s,
                  Gem.extension_api_version)
    end

full_gem_path() click to toggle source

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

                   # File rubygems/basic_specification.rb, line 114
    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 rubygems/basic_specification.rb, line 125
    def full_name
      if platform == Gem::Platform::RUBY or platform.nil? then
        "#{name}-#{version}".dup.untaint
      else
        "#{name}-#{version}-#{platform}".dup.untaint
      end
    end

full_require_paths() click to toggle source

Full paths in the gem to add to `$LOAD_PATH` when this gem is activated.

                   # File rubygems/basic_specification.rb, line 137
    def full_require_paths
      @full_require_paths ||=
      begin
        full_paths = raw_require_paths.map do |path|
          File.join full_gem_path, path.untaint
        end

        full_paths << extension_dir if have_extensions?

        full_paths
      end
    end

gem_dir() click to toggle source

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

                   # File rubygems/basic_specification.rb, line 184
    def gem_dir
      @gem_dir ||= File.expand_path File.join(gems_dir, full_name)
    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 rubygems/basic_specification.rb, line 192
    def gems_dir
      raise NotImplementedError
    end

lib_dirs_glob() click to toggle source

Returns a string usable in Dir.glob to match all requirable paths for this spec.

                   # File rubygems/basic_specification.rb, line 277
    def lib_dirs_glob
      dirs = if self.require_paths.size > 1 then
               "{#{self.require_paths.join(',')}}"
             else
               self.require_paths.first
             end

      "#{self.full_gem_path}/#{dirs}".dup.untaint
    end

matches_for_glob(glob) click to toggle source

Return all files in this gem that match for `glob`.

                   # File rubygems/basic_specification.rb, line 266
    def matches_for_glob glob # TODO: rename?
      # TODO: do we need these?? Kill it
      glob = File.join(self.lib_dirs_glob, glob)

      Dir[glob].map { |f| f.untaint } # FIX our tests are broken, run w/ SAFE=1
    end

name() click to toggle source

Name of the gem

                   # File rubygems/basic_specification.rb, line 207
    def name
      raise NotImplementedError
    end

platform() click to toggle source

Platform of the gem

                   # File rubygems/basic_specification.rb, line 214
    def platform
      raise NotImplementedError
    end

require_paths() click to toggle source

Paths in the gem to add to `$LOAD_PATH` when this gem is activated.

See also require_paths=

If you have an extension you do not need to add `"ext"` to the require path, the extension build process will copy the extension files into “lib” for you.

The default value is `"lib"`

Usage:

    # If all library files are in the root directory...
    spec.require_path = '.'

                   # File rubygems/basic_specification.rb, line 239
    def require_paths
      return raw_require_paths unless have_extensions?

      [extension_dir].concat raw_require_paths
    end

source_paths() click to toggle source

Returns the paths to the source files for use with analysis and documentation tools. These paths are relative to full_gem_path.

                   # File rubygems/basic_specification.rb, line 249
    def source_paths
      paths = raw_require_paths.dup

      if have_extensions? then
        ext_dirs = extensions.map do |extension|
          extension.split(File::SEPARATOR, 2).first
        end.uniq

        paths.concat ext_dirs
      end

      paths.uniq
    end

stubbed?() click to toggle source

Whether this specification is stubbed - i.e. we have information about the gem from a stub line, without having to evaluate the entire gemspec file.

                   # File rubygems/basic_specification.rb, line 305
    def stubbed?
      raise NotImplementedError
    end

to_fullpath(path) click to toggle source

Full path of the target library file. If the file is not in this gem, return nil.

                   # File rubygems/basic_specification.rb, line 162
    def to_fullpath path
      if activated? then
        @paths_map ||= {}
        @paths_map[path] ||=
        begin
          fullpath = nil
          suffixes = Gem.suffixes
          suffixes.find do |suf|
            full_require_paths.find do |dir|
              File.file?(fullpath = "#{dir}/#{path}#{suf}")
            end
          end ? fullpath : nil
        end
      else
        nil
      end
    end

to_spec() click to toggle source

Return a Gem::Specification from this gem

                   # File rubygems/basic_specification.rb, line 290
    def to_spec
      raise NotImplementedError
    end

version() click to toggle source

Version of the gem

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