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