class RuboCop::Cop::Style::MixinUsage

Checks that ‘include`, `extend` and `prepend` statements appear inside classes and modules, not at the top level, so as to not affect the behavior of `Object`.

@example

# bad
include M

class C
end

# bad
extend M

class C
end

# bad
prepend M

class C
end

# good
class C
  include M
end

# good
class C
  extend M
end

# good
class C
  prepend M
end

Constants

MSG
RESTRICT_ON_SEND

Public Instance Methods

on_send(node) click to toggle source
# File lib/rubocop/cop/style/mixin_usage.rb, line 62
def on_send(node)
  include_statement(node) do |statement|
    return unless in_top_level_scope?(node)

    add_offense(node, message: format(MSG, statement: statement))
  end
end