Module: Seabright::Filters::ClassMethods
- Defined in:
- lib/redis_object/ext/filters.rb
Instance Method Summary collapse
- #filter_method(method, filter) ⇒ Object
- #filters_for(method) ⇒ Object
- #get_filter(filter) ⇒ Object
- #intercept_for_filters! ⇒ Object
- #method_filters ⇒ Object
- #set_filter(filter) ⇒ Object
Instance Method Details
#filter_method(method, filter) ⇒ Object
51 52 53 54 55 |
# File 'lib/redis_object/ext/filters.rb', line 51 def filter_method(method, filter) method_filters[method.to_sym] ||= [] method_filters[method.to_sym] << filter.to_sym unless method_filters[method.to_sym].include?(filter.to_sym) intercept_for_filters! end |
#filters_for(method) ⇒ Object
61 62 63 |
# File 'lib/redis_object/ext/filters.rb', line 61 def filters_for(method) method_filters[method.to_sym] end |
#get_filter(filter) ⇒ Object
47 48 49 |
# File 'lib/redis_object/ext/filters.rb', line 47 def get_filter(filter) filter_method(:get,filter) end |
#intercept_for_filters! ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/redis_object/ext/filters.rb', line 6 def intercept_for_filters! return if @intercept_for_filters self.class_eval do def filtered_method_call(method,*args) if filters = self.class.filters_for(method) filters.each do |f| next unless args.is_a?(Array) and !args[0].nil? args = send(f,*args) end end unless args.is_a?(Array) args = [nil,nil] end send("unfiltered_#{method.to_s}".to_sym,*args) end alias_method :unfiltered_get, :get unless method_defined?(:unfiltered_get) def get(k) filtered_method_call(:get,k) end alias_method :unfiltered_set, :set unless method_defined?(:unfiltered_set) def set(k,v) filtered_method_call(:set,k,v) end alias_method :unfiltered_setnx, :setnx unless method_defined?(:unfiltered_setnx) def setnx(k,v) filtered_method_call(:setnx,k,v) end end @intercept_for_filters = true end |
#method_filters ⇒ Object
57 58 59 |
# File 'lib/redis_object/ext/filters.rb', line 57 def method_filters @method_filters ||= {} end |
#set_filter(filter) ⇒ Object
42 43 44 45 |
# File 'lib/redis_object/ext/filters.rb', line 42 def set_filter(filter) filter_method(:set,filter) filter_method(:setnx,filter) end |