class Gem::BasicSpecification
BasicSpecification ist eine abstrakte Klasse, die gemeinsamen Code implementiert, der sowohl von Specification als auch von StubSpecification verwendet wird.
Attribute
Der Pfad, von dem diese Gemspec geladen wurde. Dieses Attribut wird nicht gespeichert.
Öffentliche Klassenmethoden
Öffentliche Instanzmethoden
Source
# File lib/rubygems/basic_specification.rb, line 48 def activated? raise NotImplementedError end
Wahr, wenn das Gem aktiviert wurde
Source
# File lib/rubygems/basic_specification.rb, line 57 def base_dir raise NotImplementedError end
Gibt den vollständigen Pfad zum Basisverzeichnis des Gems zurück.
z.B.: /usr/local/lib/ruby/gems/1.8
Source
# File lib/rubygems/basic_specification.rb, line 107 def base_dir_priority(gem_path) gem_path.index(base_dir) || gem_path.size end
Gems, die weiter oben in gem_path stehen, haben Vorrang
Source
# File lib/rubygems/basic_specification.rb, line 64 def contains_requirable_file?(file) if ignored? if platform == Gem::Platform::RUBY || Gem::Platform.local === platform warn "Ignoring #{full_name} because its extensions are not built. " \ "Try: gem pristine #{name} --version #{version}" end return false end is_soext = file.end_with?(".so", ".o") if is_soext have_file? file.delete_suffix(File.extname(file)), Gem.dynamic_library_suffixes else have_file? file, Gem.suffixes end end
Gibt wahr zurück, wenn diese Spezifikation datei erfordern kann.
Source
# File lib/rubygems/basic_specification.rb, line 188 def datadir # TODO: drop the extra ", gem_name" which is uselessly redundant File.expand_path(File.join(gems_dir, full_name, "data", name)) end
Der Pfad zum Datenverzeichnis für dieses Gem.
Source
# File lib/rubygems/basic_specification.rb, line 92 def default_gem? !loaded_from.nil? && File.dirname(loaded_from) == Gem.default_specifications_dir end
Source
# File lib/rubygems/basic_specification.rb, line 100 def default_gem_priority default_gem? ? 1 : -1 end
Reguläre Gems haben Vorrang vor Standard-Gems
Source
# File lib/rubygems/basic_specification.rb, line 114 def extension_dir @extension_dir ||= File.expand_path(File.join(extensions_dir, full_name)) end
Gibt den vollständigen Pfad zum Verzeichnis zurück, in dem die Erweiterungen des Gems installiert sind.
Source
# File lib/rubygems/basic_specification.rb, line 121 def extensions_dir Gem.default_ext_dir_for(base_dir) || File.join(base_dir, "extensions", Gem::Platform.local.to_s, Gem.extension_api_version) end
Gibt den Pfad zum Erweiterungsverzeichnis zurück.
Source
# File lib/rubygems/basic_specification.rb, line 138 def full_gem_path @full_gem_path ||= find_full_gem_path end
Der vollständige Pfad zum Gem (Installationspfad + vollständiger Name).
TODO: Dies ist dupliziert mit gem_verzeichnis. Schließlich sollte eines von beiden veraltet sein.
Source
# File lib/rubygems/basic_specification.rb, line 147 def full_name if platform == Gem::Platform::RUBY || platform.nil? "#{name}-#{version}" else "#{name}-#{version}-#{platform}" end end
Gibt den vollständigen Namen (Name-Version) dieses Gems zurück. Plattforminformationen sind enthalten (Name-Version-Plattform), wenn sie angegeben sind und nicht die Standard-Ruby-Plattform sind.
Source
# File lib/rubygems/basic_specification.rb, line 160 def full_name_with_location if base_dir != Gem.dir "#{full_name} in #{base_dir}" else full_name end end
Gibt den vollständigen Namen dieses Gems zurück (siehe 'Gem::BasicSpecification#vollständiger_name'). Informationen darüber, wo das Gem installiert ist, sind ebenfalls enthalten, wenn es nicht im Standard-GEM_HOME installiert ist.
Source
# File lib/rubygems/basic_specification.rb, line 172 def full_require_paths @full_require_paths ||= begin full_paths = raw_require_paths.map do |path| File.join full_gem_path, path end full_paths << extension_dir if have_extensions? full_paths end end
Vollständige Pfade im Gem, die zu $LOAD_PATH hinzugefügt werden, wenn dieses Gem aktiviert wird.
Source
# File lib/rubygems/basic_specification.rb, line 220 def gem_dir @gem_dir ||= find_full_gem_path end
Gibt den vollständigen Pfad zum Gem-Verzeichnis dieser Spezifikation zurück. z.B.: /usr/local/lib/ruby/1.8/gems/mygem-1.0
TODO: Dies ist dupliziert mit vollständiger_gem_pfad. Schließlich sollte eines von beiden veraltet sein.
Source
# File lib/rubygems/basic_specification.rb, line 228 def gems_dir raise NotImplementedError end
Gibt den vollständigen Pfad zum Gems-Verzeichnis zurück, das das Gem-Verzeichnis dieser Spezifikation enthält. z.B.: /usr/local/lib/ruby/1.8/gems
Source
# File lib/rubygems/basic_specification.rb, line 86 def ignored? return @ignored unless @ignored.nil? @ignored = missing_extensions? end
Gibt wahr zurück, wenn diese Spezifikation ignoriert werden sollte, da ihr Erweiterungen fehlen.
Source
# File lib/rubygems/basic_specification.rb, line 325 def lib_dirs_glob dirs = if raw_require_paths if raw_require_paths.size > 1 "{#{raw_require_paths.join(",")}}" else raw_require_paths.first end else "lib" # default value for require_paths for bundler/inline end "#{full_gem_path}/#{dirs}" end
Gibt einen String zurück, der in Dir.glob verwendet werden kann, um alle begehbaren Pfade für diese Spezifikation abzugleichen.
Source
# File lib/rubygems/basic_specification.rb, line 308 def matches_for_glob(glob) # TODO: rename? glob = File.join(lib_dirs_glob, glob) Dir[glob] end
Gibt alle Dateien in diesem Gem zurück, die für glob übereinstimmen.
Source
# File lib/rubygems/basic_specification.rb, line 242 def name raise NotImplementedError end
Name des Gems
Source
# File lib/rubygems/basic_specification.rb, line 249 def platform raise NotImplementedError end
Plattform des Gems
Source
# File lib/rubygems/basic_specification.rb, line 317 def plugins matches_for_glob("rubygems#{Gem.plugin_suffix_pattern}") end
Gibt die Liste der Plugins in dieser Spezifikation zurück.
Source
# File lib/rubygems/basic_specification.rb, line 281 def require_paths return raw_require_paths unless have_extensions? [extension_dir].concat raw_require_paths end
Pfade im Gem, die zu $LOAD_PATH hinzugefügt werden, wenn dieses Gem aktiviert wird.
Siehe auch begehbare_pfade=
Wenn Sie eine Erweiterung haben, müssen Sie "ext" nicht zum Require-Pfad hinzufügen. Der Build-Prozess der Erweiterung kopiert die Erweiterungsdateien für Sie nach „lib“.
Der Standardwert ist "lib"
Verwendung
# If all library files are in the root directory... spec.require_path = '.'
Source
# File lib/rubygems/basic_specification.rb, line 291 def source_paths paths = raw_require_paths.dup if have_extensions? ext_dirs = extensions.map do |extension| extension.split(File::SEPARATOR, 2).first end.uniq paths.concat ext_dirs end paths.uniq end
Gibt die Pfade zu den Quelldateien für die Verwendung mit Analyse- und Dokumentationswerkzeugen zurück. Diese Pfade sind relativ zu full_gem_path.
Source
# File lib/rubygems/basic_specification.rb, line 357 def stubbed? raise NotImplementedError end
Ob diese Spezifikation gestubbt ist – d.h. wir haben Informationen über das Gem aus einer Stub-Zeile, ohne die gesamte Gemspec-Datei auswerten zu müssen.
Source
# File lib/rubygems/basic_specification.rb, line 200 def to_fullpath(path) if activated? @paths_map ||= {} Gem.suffixes.each do |suf| full_require_paths.each do |dir| fullpath = "#{dir}/#{path}#{suf}" next unless File.file?(fullpath) @paths_map[path] ||= fullpath end end @paths_map[path] end end
Vollständiger Pfad zur Zielbibliotheksdatei. Wenn sich die Datei nicht in diesem Gem befindet, wird nil zurückgegeben.
Source
# File lib/rubygems/basic_specification.rb, line 342 def to_spec raise NotImplementedError end
Gibt eine Gem::Specification aus diesem Gem zurück
Source
# File lib/rubygems/basic_specification.rb, line 349 def version raise NotImplementedError end
Version des Gems
Private Instanzmethoden
Source
# File lib/rubygems/basic_specification.rb, line 367 def have_extensions? !extensions.empty? end
Source
# File lib/rubygems/basic_specification.rb, line 371 def have_file?(file, suffixes) return true if raw_require_paths.any? do |path| base = File.join(gems_dir, full_name, path, file) suffixes.any? {|suf| File.file? base + suf } end if have_extensions? base = File.join extension_dir, file suffixes.any? {|suf| File.file? base + suf } else false end end