Skip to content
Snippets Groups Projects
Commit a0a2776f authored by Holger Just's avatar Holger Just
Browse files

Make the strainer monkey patch more conservative and compatible

parent 3c9e9764
Branches
Tags
No related merge requests found
......@@ -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
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment