diff --git a/lib/liquid/strainer.rb b/lib/liquid/strainer.rb index 441e335c..99a9c29d 100644 --- a/lib/liquid/strainer.rb +++ b/lib/liquid/strainer.rb @@ -39,6 +39,7 @@ module Liquid end def self.global_filter(filter) + @@strainer_class_cache.clear @@global_strainer.add_filter(filter) end diff --git a/test/unit/strainer_unit_test.rb b/test/unit/strainer_unit_test.rb index 5cdf2e8f..6ccdc278 100644 --- a/test/unit/strainer_unit_test.rb +++ b/test/unit/strainer_unit_test.rb @@ -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