class Logux::ActionCaller

Attributes

action[R]
meta[R]

Public Class Methods

new(action:, meta:) click to toggle source
# File lib/logux/action_caller.rb, line 11
def initialize(action:, meta:)
  @action = action
  @meta = meta
end

Public Instance Methods

call!() click to toggle source
# File lib/logux/action_caller.rb, line 16
def call!
  Logux.watch_action { call_action }
rescue Logux::UnknownActionError, Logux::UnknownChannelError => e
  logger.warn(e)
  format(nil)
end

Protected Instance Methods

call_action() click to toggle source
# File lib/logux/action_caller.rb, line 25
def call_action
  logger.debug("Searching Logux action: #{action}, meta: #{meta}")
  format(action_controller.public_send(action.action_type))
end

Private Instance Methods

action_controller() click to toggle source
# File lib/logux/action_caller.rb, line 42
def action_controller
  class_finder.find_action_class.new(action: action, meta: meta)
end
class_finder() click to toggle source
# File lib/logux/action_caller.rb, line 38
def class_finder
  @class_finder ||= Logux::ClassFinder.new(action: action, meta: meta)
end
format(response) click to toggle source
# File lib/logux/action_caller.rb, line 32
def format(response)
  return response if response.is_a?(Logux::Response)

  Logux::Response.new(:processed, action: action, meta: meta)
end