diff options
Diffstat (limited to 'lib/rubygems/basic_specification.rb')
-rw-r--r-- | lib/rubygems/basic_specification.rb | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/lib/rubygems/basic_specification.rb b/lib/rubygems/basic_specification.rb index 470a6ebc8b..f9eb193fb4 100644 --- a/lib/rubygems/basic_specification.rb +++ b/lib/rubygems/basic_specification.rb @@ -15,6 +15,11 @@ class Gem::BasicSpecification attr_writer :extension_dir # :nodoc: ## + # Is this specification ignored for activation purposes? + + attr_writer :ignored # :nodoc: + + ## # The path this gemspec was loaded from. This attribute is not persisted. attr_reader :loaded_from @@ -53,7 +58,16 @@ class Gem::BasicSpecification # Return true if this spec can require +file+. def contains_requirable_file? file - build_extensions + if instance_variable_defined?(:@ignored) or + instance_variable_defined?('@ignored') then + return false + elsif missing_extensions? then + @ignored = true + + warn "Ignoring #{full_name} because its extensions are not built. " + + "Try: gem pristine #{full_name}" + return false + end suffixes = Gem.suffixes @@ -120,11 +134,11 @@ class Gem::BasicSpecification # activated. def full_require_paths - full_paths = @require_paths.map do |path| + full_paths = raw_require_paths.map do |path| File.join full_gem_path, path end - full_paths.unshift extension_dir unless @extensions.empty? + full_paths.unshift extension_dir unless @extensions.nil? || @extensions.empty? full_paths end @@ -176,7 +190,7 @@ class Gem::BasicSpecification end def raw_require_paths # :nodoc: - @require_paths + Array(@require_paths) end ## @@ -197,13 +211,9 @@ class Gem::BasicSpecification # spec.require_path = '.' def require_paths - return @require_paths if @extensions.empty? - - relative_extension_dir = - File.join '..', '..', 'extensions', Gem::Platform.local.to_s, - Gem.extension_api_version, full_name + return raw_require_paths if @extensions.nil? || @extensions.empty? - [relative_extension_dir].concat @require_paths + [extension_dir].concat raw_require_paths end ## |