BasicSpecification is an abstract class which implements some common code used by both Specification and StubSpecification.
The path this gemspec was loaded from. This attribute is not persisted.
# File lib/rubygems/basic_specification.rb, line 12 def self.default_specifications_dir File.join(Gem.default_dir, "specifications", "default") end
True when the gem has been activated
# File lib/rubygems/basic_specification.rb, line 19 def activated? raise NotImplementedError end
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
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
# File lib/rubygems/basic_specification.rb, line 55 def default_gem? loaded_from && File.dirname(loaded_from) == self.class.default_specifications_dir end
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
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
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
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
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
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 of the gem
# File lib/rubygems/basic_specification.rb, line 141 def name raise NotImplementedError end
Platform of the gem
# File lib/rubygems/basic_specification.rb, line 148 def platform raise NotImplementedError end
Require paths of the gem
# File lib/rubygems/basic_specification.rb, line 155 def require_paths raise NotImplementedError end
Return a Gem::Specification from this gem
# File lib/rubygems/basic_specification.rb, line 162 def to_spec raise NotImplementedError end
Version of the gem
# File lib/rubygems/basic_specification.rb, line 169 def version raise NotImplementedError end