class Banken::DSL::Proxy

Constants

PERMIT_ATTRIBUTES_METHOD_NAME

Attributes

controller[R]

Public Class Methods

new(controller) click to toggle source
# File lib/banken/dsl/proxy.rb, line 8
def initialize(controller)
  @controller = controller
end

Public Instance Methods

define_banken_permit_attributes_method(&block) click to toggle source
# File lib/banken/dsl/proxy.rb, line 18
def define_banken_permit_attributes_method(&block)
  banken_loyalty.class_eval do
    define_method(PERMIT_ATTRIBUTES_METHOD_NAME, &block)
  end
end
define_banken_query_method_for(action_name, &block) click to toggle source
# File lib/banken/dsl/proxy.rb, line 12
def define_banken_query_method_for(action_name, &block)
  banken_loyalty.class_eval do
    define_method("#{action_name}?", &block)
  end
end

Private Instance Methods

action_method?(method_name) click to toggle source
# File lib/banken/dsl/proxy.rb, line 50
def action_method?(method_name)
  controller.action_methods.include?(method_name.to_s)
end
banken_controller_name() click to toggle source
# File lib/banken/dsl/proxy.rb, line 32
def banken_controller_name
  controller.controller_path
end
banken_loyalty() click to toggle source
# File lib/banken/dsl/proxy.rb, line 26
def banken_loyalty
  ::Banken::LoyaltyFinder.new(banken_controller_name).loyalty!
rescue ::Banken::NotDefinedError
  ::Banken::DSL::Factory.new(controller).create
end
method_missing(method_name, *arguments, &block) click to toggle source
# File lib/banken/dsl/proxy.rb, line 36
def method_missing(method_name, *arguments, &block)
  if action_method?(method_name)
    define_banken_query_method_for(method_name, &block)
  elsif permit_attributes_method?(method_name)
    define_banken_permit_attributes_method(&block)
  else
    raise ::Banken::DSL::UndefinedAction, "#{controller}##{method_name} is undefined"
  end
end
permit_attributes_method?(method_name) click to toggle source
# File lib/banken/dsl/proxy.rb, line 54
def permit_attributes_method?(method_name)
  method_name.to_s == PERMIT_ATTRIBUTES_METHOD_NAME
end
respond_to_missing?(method_name, include_private = false) click to toggle source
Calls superclass method
# File lib/banken/dsl/proxy.rb, line 46
def respond_to_missing?(method_name, include_private = false)
  action_method?(method_name) || permit_attributes_method?(method_name) || super
end