aboutsummaryrefslogtreecommitdiffstats
path: root/lib/bundler/rubygems_integration.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bundler/rubygems_integration.rb')
-rw-r--r--lib/bundler/rubygems_integration.rb17
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/bundler/rubygems_integration.rb b/lib/bundler/rubygems_integration.rb
index 0f567db1..4e5ca7d1 100644
--- a/lib/bundler/rubygems_integration.rb
+++ b/lib/bundler/rubygems_integration.rb
@@ -54,10 +54,23 @@ module Bundler
def validate(spec)
Bundler.ui.silence { spec.validate(false) }
+ rescue Gem::InvalidSpecificationException => e
+ error_message = "The gemspec at #{spec.loaded_from} is not valid. Please fix this gemspec.\n" \
+ "The validation error was '#{e.message}'\n"
+ raise Gem::InvalidSpecificationException.new(error_message)
rescue Errno::ENOENT
nil
end
+ def set_installed_by_version(spec, installed_by_version = Gem::VERSION)
+ return unless spec.respond_to?(:installed_by_version=)
+ spec.installed_by_version = Gem::Version.create(installed_by_version)
+ end
+
+ def spec_missing_extensions?(spec)
+ !spec.respond_to?(:missing_extensions?) || spec.missing_extensions?
+ end
+
def path(obj)
obj.to_s
end
@@ -503,9 +516,7 @@ module Bundler
# Missing summary is downgraded to a warning in later versions,
# so we set it to an empty string to prevent an exception here.
spec.summary ||= ""
- Bundler.ui.silence { spec.validate(false) }
- rescue Errno::ENOENT
- nil
+ RubygemsIntegration.instance_method(:validate).bind(self).call(spec)
end
end