class RuboCop::Cop::Rails::Output

Rails.logger.debug ‘A debug message’
# good
print ‘A debug message’
pp ‘A debug message’
puts ‘A debug message’
# bad
@example
changing from ‘puts` to `Rails.logger.debug` could result in no output being shown.
This cop’s autocorrection is unsafe because depending on the Rails log level configuration,
@safety
Checks for the use of output calls like puts and print

def match_gvar?(sym)

def match_gvar?(sym)
  %i[$stdout $stderr].include?(sym)
end

def offense_range(node)

def offense_range(node)
  if node.receiver
    range_between(node.source_range.begin_pos, node.loc.selector.end_pos)
  else
    node.loc.selector
  end
end

def on_send(node)

def on_send(node)
  return if node.parent&.call_type? || node.block_node
  return if !output?(node) && !io_output?(node)
  range = offense_range(node)
  add_offense(range) do |corrector|
    corrector.replace(range, 'Rails.logger.debug')
  end
end