diff options
Diffstat (limited to 'rubocop/cop/prefer_class_methods_over_module.rb')
-rw-r--r-- | rubocop/cop/prefer_class_methods_over_module.rb | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/rubocop/cop/prefer_class_methods_over_module.rb b/rubocop/cop/prefer_class_methods_over_module.rb index 39b65073477..d865cc6c003 100644 --- a/rubocop/cop/prefer_class_methods_over_module.rb +++ b/rubocop/cop/prefer_class_methods_over_module.rb @@ -26,7 +26,8 @@ module RuboCop # end # end # - class PreferClassMethodsOverModule < RuboCop::Cop::Cop + class PreferClassMethodsOverModule < RuboCop::Cop::Base + extend RuboCop::Cop::AutoCorrector include RangeHelp MSG = 'Do not use module ClassMethods, use class_methods block instead.' @@ -36,17 +37,20 @@ module RuboCop PATTERN def on_module(node) - add_offense(node) if node.defined_module_name == 'ClassMethods' && module_extends_activesupport_concern?(node) - end + return unless class_methods_module_in_activesupport_concern?(node) - def autocorrect(node) - lambda do |corrector| + add_offense(node) do |corrector| corrector.replace(module_range(node), 'class_methods do') end end private + def class_methods_module_in_activesupport_concern?(node) + node.defined_module_name == 'ClassMethods' && + module_extends_activesupport_concern?(node) + end + def module_extends_activesupport_concern?(node) container_module = container_module_of(node) return false unless container_module |