3scale/porta

View on GitHub
app/lib/after_commit_on.rb

Summary

Maintainability
A
0 mins
Test Coverage

AfterCommitOn#after_commit manually dispatches method call
Open

    when respond_to?(:after_commit_on_create) && include_action.call(:create)
      after_commit_on_create(contract)
    when respond_to?(:after_commit_on_update) && include_action.call(:update)
      after_commit_on_update(contract)
    when respond_to?(:after_commit_on_destroy) && include_action.call(:destroy)
Severity: Minor
Found in app/lib/after_commit_on.rb by reek

Reek reports a Manual Dispatch smell if it finds source code that manually checks whether an object responds to a method before that method is called. Manual dispatch is a type of Simulated Polymorphism which leads to code that is harder to reason about, debug, and refactor.

Example

class MyManualDispatcher
  attr_reader :foo

  def initialize(foo)
    @foo = foo
  end

  def call
    foo.bar if foo.respond_to?(:bar)
  end
end

Reek would emit the following warning:

test.rb -- 1 warning:
  [9]: MyManualDispatcher manually dispatches method call (ManualDispatch)

There are no issues that match your filters.

Category
Status