class RuboCop::Cop::Style::RedundantException
Checks for ‘RuntimeError` as the argument of `raise`/`fail`.
@example
# bad raise RuntimeError, 'message' raise RuntimeError.new('message') # good raise 'message' # bad - message is not a string raise RuntimeError, Object.new raise RuntimeError.new(Object.new) # good raise Object.new.to_s
Constants
- MSG_1
- MSG_2
- RESTRICT_ON_SEND
Public Instance Methods
Source
# File lib/rubocop/cop/style/redundant_exception.rb, line 33 def on_send(node) fix_exploded(node) || fix_compact(node) end
Switch ‘raise RuntimeError, ’message’‘ to `raise ’message’‘, and `raise RuntimeError.new(’message’)‘ to `raise ’message’‘.
Private Instance Methods
Source
# File lib/rubocop/cop/style/redundant_exception.rb, line 57 def fix_compact(node) compact?(node) do |new_call, message| add_offense(node, message: MSG_2) do |corrector| corrector.replace(new_call, replaced_compact(message)) end end end
Source
# File lib/rubocop/cop/style/redundant_exception.rb, line 39 def fix_exploded(node) exploded?(node) do |command, message| add_offense(node, message: MSG_1) do |corrector| corrector.replace(node, replaced_exploded(node, command, message)) end end end
Source
# File lib/rubocop/cop/style/redundant_exception.rb, line 65 def replaced_compact(message) if string_message?(message) message.source else "#{message.source}.to_s" end end
Source
# File lib/rubocop/cop/style/redundant_exception.rb, line 47 def replaced_exploded(node, command, message) arg = string_message?(message) ? message.source : "#{message.source}.to_s" arg = node.parenthesized? ? "(#{arg})" : " #{arg}" "#{command}#{arg}" end
Source
# File lib/rubocop/cop/style/redundant_exception.rb, line 53 def string_message?(message) message.type?(:str, :dstr, :xstr) end