class Logux::ClassFinder

Attributes

action[R]
meta[R]

Public Class Methods

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

Public Instance Methods

class_name() click to toggle source
# File lib/logux/class_finder.rb, line 32
def class_name
  if subscribe?
    action.channel_name.camelize
  else
    action.type.split('/')[0..-2].map(&:camelize).join('::')
  end
end
find_action_class() click to toggle source
# File lib/logux/class_finder.rb, line 14
def find_action_class
  "#{class_namespace}::#{class_name}".constantize
rescue NameError
  message =
    "Unable to find action #{class_name.camelize}.\n" \
    "Should be in app/logux/#{class_namespace.downcase}/#{class_path}.rb"
  raise_error_for_failed_find(message)
end
find_policy_class() click to toggle source
# File lib/logux/class_finder.rb, line 23
def find_policy_class
  "Policies::#{class_namespace}::#{class_name}".constantize
rescue NameError
  message =
    "Unable to find action policy #{class_name.camelize}.\n" \
    "Should be in app/logux/#{class_namespace.downcase}/#{class_path}.rb"
  raise_error_for_failed_find(message)
end

Private Instance Methods

action?() click to toggle source
# File lib/logux/class_finder.rb, line 50
def action?
  !subscribe?
end
class_namespace() click to toggle source
# File lib/logux/class_finder.rb, line 42
def class_namespace
  subscribe? ? 'Channels' : 'Actions'
end
class_path() click to toggle source
# File lib/logux/class_finder.rb, line 54
def class_path
  "#{class_namespace}::#{class_name}".underscore
end
raise_error_for_failed_find(message) click to toggle source
# File lib/logux/class_finder.rb, line 58
def raise_error_for_failed_find(message)
  exception_class = action? ? UnknownActionError : UnknownChannelError
  raise exception_class.new(message, meta: meta)
end
subscribe?() click to toggle source
# File lib/logux/class_finder.rb, line 46
def subscribe?
  action.type == 'logux/subscribe'
end