Class: RuboCop::Cop::Operandi::PreferFailMethod
- Inherits:
-
Base
- Object
- Base
- RuboCop::Cop::Operandi::PreferFailMethod
- Extended by:
- AutoCorrector
- Defined in:
- lib/operandi/rubocop/cop/operandi/prefer_fail_method.rb
Overview
Detects errors.add(:base, "message") and suggests using fail!("message") instead.
This cop checks calls inside service classes that inherit from Operandi::Base or any configured base service classes.
Constant Summary collapse
- MSG =
"Use `fail!(...)` instead of `errors.add(:base, ...)`."- DEFAULT_BASE_CLASSES =
["ApplicationService"].freeze
Instance Method Summary collapse
Instance Method Details
#after_class(_node) ⇒ Object
56 57 58 |
# File 'lib/operandi/rubocop/cop/operandi/prefer_fail_method.rb', line 56 def after_class(_node) @in_service_class = false end |
#on_class(node) ⇒ Object
52 53 54 |
# File 'lib/operandi/rubocop/cop/operandi/prefer_fail_method.rb', line 52 def on_class(node) @in_service_class = service_class?(node) end |
#on_send(node) ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/operandi/rubocop/cop/operandi/prefer_fail_method.rb', line 60 def on_send(node) return unless @in_service_class return unless node.method_name == :add return unless errors_add_base?(node) # Only flag if there's a message argument after :base # errors.add(:base) without a message is invalid Operandi syntax = node.arguments[1..] return if .empty? add_offense(node, message: MSG) do |corrector| autocorrect(corrector, node, ) end end |