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
|
||||||
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.
|
# Return a Formula instance for the given reference.
|
||||||
# `ref` is string containing:
|
# `ref` is string containing:
|
||||||
# * a formula name
|
# * a formula name
|
||||||
@ -208,6 +218,6 @@ class Formulary
|
|||||||
return FormulaLoader.new(ref, possible_cached_formula)
|
return FormulaLoader.new(ref, possible_cached_formula)
|
||||||
end
|
end
|
||||||
|
|
||||||
return FormulaLoader.new(ref, Formula.path(ref))
|
return NullLoader.new(ref)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user