fix: Clear the strainer cache when a global filter is added (#826)

This commit is contained in:
Dylan Thacker-Smith 2016-11-24 10:32:11 -05:00 committed by GitHub
parent 86944fe7b7
commit b146b49f46
2 changed files with 13 additions and 0 deletions

View File

@ -39,6 +39,7 @@ module Liquid
end
def self.global_filter(filter)
@@strainer_class_cache.clear
@@global_strainer.add_filter(filter)
end

View File

@ -133,4 +133,16 @@ class StrainerUnitTest < Minitest::Test
strainer.class.add_filter(PublicMethodOverrideFilter)
assert strainer.class.filter_methods.include?('public_filter')
end
module LateAddedFilter
def late_added_filter(input)
"filtered"
end
end
def test_global_filter_clears_cache
assert_equal 'input', Strainer.create(nil).invoke('late_added_filter', 'input')
Strainer.global_filter(LateAddedFilter)
assert_equal 'filtered', Strainer.create(nil).invoke('late_added_filter', 'input')
end
end # StrainerTest