module Memorable::Controller::ClassMethods
Public Instance Methods
memorize(options = {}, &block)
click to toggle source
# File lib/memorable/controller.rb, line 75 def memorize(options = {}, &block) raise InvalidOptionsError, "if and unless cannot appear at the sametime" if options[:if] && options[:unless] if condition = (options[:if] || options[:unless]) if_condition = !!options[:if] if condition.is_a?(Symbol) condition_proc = proc { |c| if_condition ? c.send(condition) : !c.send(condition) } elsif condition.is_a? Proc condition_proc = proc { |c| if_condition ? condition.call(c) : !condition.call(c) } else raise InvalidOptionsError, "#{condition} is not a valid Proc or controller method." end end raise InvalidOptionsError, "except and only cannot appear at the sametime" if options[:except] && options[:only] specified_actions = [options[:except] || options[:only]].flatten.compact.map(&:to_s) actions = if options.delete(:only) specified_actions elsif options.delete(:except) all_actions - specified_actions else all_actions end memorize_actions actions, options, condition_proc end
Private Instance Methods
all_actions()
click to toggle source
# File lib/memorable/controller.rb, line 110 def all_actions @all_actions ||= action_methods.map(&:to_s) end
memorize_actions(action_names, options, condition_proc)
click to toggle source
# File lib/memorable/controller.rb, line 106 def memorize_actions(action_names, options, condition_proc) Registration.register action_names, controller_name, options, condition_proc end