From 1a50d2e66a80c910fe1e2203eb2c993e5dbc4e5b Mon Sep 17 00:00:00 2001 From: Yehuda Katz Date: Tue, 19 Jan 2010 22:35:09 -0800 Subject: Stop overriding LoadError.new to return a MissingSourceError (and sometimes nil!) --- .../lib/active_support/core_ext/load_error.rb | 46 ++++++++-------------- 1 file changed, 16 insertions(+), 30 deletions(-) (limited to 'activesupport/lib/active_support/core_ext/load_error.rb') diff --git a/activesupport/lib/active_support/core_ext/load_error.rb b/activesupport/lib/active_support/core_ext/load_error.rb index cc6287b100..615ebe9588 100644 --- a/activesupport/lib/active_support/core_ext/load_error.rb +++ b/activesupport/lib/active_support/core_ext/load_error.rb @@ -1,36 +1,22 @@ -class MissingSourceFile < LoadError #:nodoc: - attr_reader :path - def initialize(message, path) - super(message) - @path = path - end - - def is_missing?(path) - path.gsub(/\.rb$/, '') == self.path.gsub(/\.rb$/, '') - end +class LoadError + REGEXPS = [ + /^no such file to load -- (.+)$/i, + /^Missing \w+ (?:file\s*)?([^\s]+.rb)$/i, + /^Missing API definition file in (.+)$/i, + ] - def self.from_message(message) - REGEXPS.each do |regexp, capture| - match = regexp.match(message) - return MissingSourceFile.new(message, match[capture]) unless match.nil? + def path + @path ||= begin + REGEXPS.find do |regex| + message =~ regex + end + $1 end - nil end - REGEXPS = [ - [/^no such file to load -- (.+)$/i, 1], - [/^Missing \w+ (file\s*)?([^\s]+.rb)$/i, 2], - [/^Missing API definition file in (.+)$/i, 1], - [/win32/, 0] - ] unless defined?(REGEXPS) -end - -class LoadError - def self.new(*args) - if self == LoadError - MissingSourceFile.from_message(args.first) - else - super - end + def is_missing?(location) + location.sub(/\.rb$/, '') == path.sub(/\.rb$/, '') end end + +MissingSourceFile = LoadError \ No newline at end of file -- cgit v1.2.3