diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-11-29 06:52:18 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-11-29 06:52:18 +0000 |
commit | 9694bb8cac12969300692dac5a1cf7aa4e3a46cd (patch) | |
tree | c3cb423d701f7049ba9382de052e2a937cd1302d /lib/rubygems/errors.rb | |
parent | 3f606b7063fc7a8b191556365ad343a314719a8d (diff) | |
download | ruby-9694bb8cac12969300692dac5a1cf7aa4e3a46cd.tar.gz |
* lib/rubygems*: Updated to RubyGems 2.0
* test/rubygems*: ditto.
* common.mk (prelude): Updated for RubyGems 2.0 source rearrangement.
* tool/change_maker.rb: Allow invalid UTF-8 characters in source
files.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems/errors.rb')
-rw-r--r-- | lib/rubygems/errors.rb | 101 |
1 files changed, 77 insertions, 24 deletions
diff --git a/lib/rubygems/errors.rb b/lib/rubygems/errors.rb index 950b34d744..29e732cb1d 100644 --- a/lib/rubygems/errors.rb +++ b/lib/rubygems/errors.rb @@ -1,35 +1,88 @@ -class Gem::ErrorReason; end - -# Generated when trying to lookup a gem to indicate that the gem -# was found, but that it isn't usable on the current platform. -# -# fetch and install read these and report them to the user to aid -# in figuring out why a gem couldn't be installed. +## +# This file contains all the various exceptions and other errors that are used +# inside of RubyGems. # -class Gem::PlatformMismatch < Gem::ErrorReason +# DOC: Confirm _all_ - attr_reader :name - attr_reader :version - attr_reader :platforms +module Gem + ## + # Raised when RubyGems is unable to load or activate a gem. Contains the + # name and version requirements of the gem that either conflicts with + # already activated gems or that RubyGems is otherwise unable to activate. - def initialize(name, version) - @name = name - @version = version - @platforms = [] - end + class LoadError < ::LoadError + # Name of gem + attr_accessor :name - def add_platform(platform) - @platforms << platform + # Version requirement of gem + attr_accessor :requirement end - def wordy - prefix = "Found #{@name} (#{@version})" + # FIX: does this need to exist? The subclass is the only other reference + # I can find. + class ErrorReason; end + + # Generated when trying to lookup a gem to indicate that the gem + # was found, but that it isn't usable on the current platform. + # + # fetch and install read these and report them to the user to aid + # in figuring out why a gem couldn't be installed. + # + class PlatformMismatch < ErrorReason + + ## + # the name of the gem + attr_reader :name + + ## + # the version + attr_reader :version + + ## + # The platforms that are mismatched + attr_reader :platforms + + def initialize(name, version) + @name = name + @version = version + @platforms = [] + end - if @platforms.size == 1 - "#{prefix}, but was for platform #{@platforms[0]}" - else - "#{prefix}, but was for platforms #{@platforms.join(' ,')}" + ## + # append a platform to the list of mismatched platforms. + # + # Platforms are added via this instead of injected via the constructor + # so that we can loop over a list of mismatches and just add them rather + # than perform some kind of calculation mismatch summary before creation. + def add_platform(platform) + @platforms << platform + end + + ## + # A wordy description of the error. + def wordy + "Found %s (%), but was for platform%s %s" % + [@name, + @version, + @platforms.size == 1 ? 's' : '', + @platforms.join(' ,')] end end + ## + # An error that indicates we weren't able to fetch some + # data from a source + + class SourceFetchProblem < ErrorReason + def initialize(source, error) + @source = source + @error = error + end + + attr_reader :source, :error + + def wordy + "Unable to download data from #{@source.uri} - #{@error.message}" + end + end end |