Add better error message for misnamed formula class.

This commit is contained in:
Adam Vandenberg 2009-09-23 10:06:19 -07:00 committed by Max Howell
parent 1e3dff7b8e
commit b2a857da54

View File

@ -30,8 +30,11 @@ class BuildError <ExecutionError
end end
class FormulaUnavailableError <RuntimeError class FormulaUnavailableError <RuntimeError
def initialize name def initialize name
@name = name
super "No available formula for #{name}" super "No available formula for #{name}"
end end
attr_reader :name
end end
@ -171,7 +174,17 @@ class Formula
else else
require self.path(name) require self.path(name)
end end
return eval(self.class_s(name)).new(name) begin
klass_name =self.class_s(name)
klass = eval(klass_name)
rescue NameError
# TODO really this text should be encoded into the exception
# and only shown if the UI deems it correct to show it
onoe "class \"#{klass_name}\" expected but not found in #{name}.rb"
puts "Double-check the name of the class in that formula."
raise LoadError
end
return klass.new(name)
rescue LoadError rescue LoadError
raise FormulaUnavailableError.new(name) raise FormulaUnavailableError.new(name)
end end