From a0a2776f95a902584842eb32a60629d004134fac Mon Sep 17 00:00:00 2001 From: Holger Just Date: Wed, 18 Jan 2012 10:19:04 +0100 Subject: [PATCH] Make the strainer monkey patch more conservative and compatible --- lib/chili_project/liquid/liquid_ext/strainer.rb | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/chili_project/liquid/liquid_ext/strainer.rb b/lib/chili_project/liquid/liquid_ext/strainer.rb index e038159d..dac6d771 100644 --- a/lib/chili_project/liquid/liquid_ext/strainer.rb +++ b/lib/chili_project/liquid/liquid_ext/strainer.rb @@ -19,20 +19,22 @@ module ChiliProject module Strainer def self.included(base) base.extend(ClassMethods) - base.class_eval do - @@filters = [] - end + + base.class_attribute :filters, :instance_reader => false, :instance_writer => false + base.class_eval <<-RUBY, __FILE__, __LINE__ + 1 + self.filters = @@filters.values + RUBY end module ClassMethods def global_filter(filter) raise ArgumentError, "Passed filter is not a module" unless filter.is_a?(Module) - @@filters << filter + filters += [filter] end def create(context) strainer = self.new(context) - @@filters.each { |filter| strainer.extend(filter) } + filters.each { |filter| strainer.extend(filter) } strainer end end