Class: RuboCop::Cop::Legion::Extension::SelfContainedActorRunnerClass

Inherits:
Base
  • Object
show all
Defined in:
lib/rubocop/cop/legion/extension/self_contained_actor_runner_class.rb

Overview

Detects actor classes inside an ‘Actor` namespace that define `def action` or `def manual` (self-contained actor patterns) without overriding `def runner_class`. Without `runner_class`, the framework dispatches to the wrong runner.

Examples:

# bad
module Actor
  class Foo < Legion::Extensions::Actors::Interval
    def manual
      { success: true }
    end
  end
end

# good
module Actor
  class Foo < Legion::Extensions::Actors::Interval
    def runner_class
      self.class
    end

    def manual
      { success: true }
    end
  end
end

Constant Summary collapse

MSG =
'Self-contained actors must override `runner_class` to return `self.class`.'

Instance Method Summary collapse

Instance Method Details

#on_class(node) ⇒ Object



37
38
39
40
41
42
43
# File 'lib/rubocop/cop/legion/extension/self_contained_actor_runner_class.rb', line 37

def on_class(node)
  return unless inside_actor_namespace?(node)
  return unless action_or_manual?(node)
  return if runner_class?(node)

  add_offense(node.identifier)
end