class RuboCop::Cop::Rails::BulkChangeTable::AlterMethodsRecorder

Record combinable alter methods and register offensive nodes.

Public Class Methods

new() click to toggle source
# File lib/rubocop/cop/rails/bulk_change_table.rb, line 256
def initialize
  @nodes = []
  @offensive_nodes = []
end

Public Instance Methods

flush() click to toggle source
# File lib/rubocop/cop/rails/bulk_change_table.rb, line 275
def flush
  @offensive_nodes << @nodes.first if @nodes.size > 1
  @nodes = []
end
offensive_nodes() click to toggle source
# File lib/rubocop/cop/rails/bulk_change_table.rb, line 280
def offensive_nodes
  flush
  @offensive_nodes
end
process(new_node) click to toggle source

@param new_node [RuboCop::AST::SendNode]

# File lib/rubocop/cop/rails/bulk_change_table.rb, line 262
def process(new_node)
  # arguments: [{(sym :table)(str "table")} ...]
  table_node = new_node.arguments[0]
  if table_node.is_a? RuboCop::AST::BasicLiteralNode
    flush unless @nodes.all? do |node|
      node.arguments[0].value.to_s == table_node.value.to_s
    end
    @nodes << new_node
  else
    flush
  end
end