class RuboCop::Cop::Style::TopLevelMethodDefinition
Newcomers to ruby applications may write top-level methods, when ideally they should be organized in appropriate classes or modules. This cop looks for definitions of top-level methods and warns about them.
However for ruby scripts it is perfectly fine to use top-level methods. Hence this cop is disabled by default.
@example
# bad def some_method end # bad def self.some_method end # bad define_method(:foo) { puts 1 } # good module Foo def some_method end end # good class Foo def self.some_method end end # good Struct.new do def some_method end end # good class Foo define_method(:foo) { puts 1 } end
Constants
- MSG
- RESTRICT_ON_SEND
Public Instance Methods
on_block(node)
click to toggle source
# File lib/rubocop/cop/style/top_level_method_definition.rb, line 60 def on_block(node) return unless define_method_block?(node) && top_level_method_definition?(node) add_offense(node) end
Also aliased as: on_numblock
on_def(node)
click to toggle source
# File lib/rubocop/cop/style/top_level_method_definition.rb, line 52 def on_def(node) return unless top_level_method_definition?(node) add_offense(node) end
Private Instance Methods
top_level_method_definition?(node)
click to toggle source
# File lib/rubocop/cop/style/top_level_method_definition.rb, line 70 def top_level_method_definition?(node) if node.parent&.begin_type? node.parent.root? else node.root? end end