Avoid formula lookup when we know it will fail

Formulary.loader_for cannot raise exceptions, as canonical_name must
work for nonexistent formulae. However, we can skip the constant lookup
and a redundant file existence check by returning a loader that raises
immediately in #get_formula.
This commit is contained in:
Jack Nagel 2015-01-01 01:21:59 -05:00
parent 34fc227f92
commit 26a2e4c4d3

View File

@ -165,6 +165,16 @@ class Formulary
end
end
class NullLoader < FormulaLoader
def initialize(name)
@name = name
end
def get_formula(spec)
raise FormulaUnavailableError.new(name)
end
end
# Return a Formula instance for the given reference.
# `ref` is string containing:
# * a formula name
@ -208,6 +218,6 @@ class Formulary
return FormulaLoader.new(ref, possible_cached_formula)
end
return FormulaLoader.new(ref, Formula.path(ref))
return NullLoader.new(ref)
end
end