Class: ActionHandler::Installer

Inherits:
Object
  • Object
show all
Defined in:
lib/action_handler/installer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args_maker: ActionHandler::ArgsMaker.new, res_evaluator: ActionHandler::ResponseEvaluator.new) ⇒ Installer

Returns a new instance of Installer.



11
12
13
14
15
16
17
# File 'lib/action_handler/installer.rb', line 11

def initialize(
  args_maker: ActionHandler::ArgsMaker.new,
  res_evaluator: ActionHandler::ResponseEvaluator.new
)
  @args_maker = args_maker
  @res_evaluator = res_evaluator
end

Instance Attribute Details

#args_makerObject (readonly)

Returns the value of attribute args_maker.



8
9
10
# File 'lib/action_handler/installer.rb', line 8

def args_maker
  @args_maker
end

#res_evaluatorObject (readonly)

Returns the value of attribute res_evaluator.



9
10
11
# File 'lib/action_handler/installer.rb', line 9

def res_evaluator
  @res_evaluator
end

Instance Method Details

#install(handler, ctrl_class) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/action_handler/installer.rb', line 19

def install(handler, ctrl_class)
  config = ActionHandler::Config.get(handler.class) || ActionHandler::Config.new

  ctrl_class.class_eval(&config.as_controller) if config.as_controller

  actions = action_methods(handler, config)
  args_supplier = args_supplier(config)

  actions.each do |name|
    installer = self
    ctrl_class.send(:define_method, name) do
      method = handler.method(name)
      args = installer.args_maker.make_args(
        method.parameters,
        args_supplier,
        context: self,
      )
      res = method.call(*args)
      installer.res_evaluator.evaluate(self, res)
    end
  end
end