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:
parent
34fc227f92
commit
26a2e4c4d3
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user