Olá Priscila.
Basicamente o each_with_index permite percorrer o Enumerable (array, map, etc) e execute um bloco de código para cada item percorrido.
No código do exemplo, a cada iteração a variável linha_atual receberá o item atual do mapa na iteração, e linha receberá o índice (0, 1, 2, ...).
Segue um outro exemplo:
hash = Hash.new
%w(cat dog wombat).each_with_index { |item, index|
hash[item] = index
}
hash #=> {"cat"=>0, "dog"=>1, "wombat"=>2}
Neste exemplo são realizados os seguintes passos:
- Cria um novo Hash
- Para cada elemento do array (cat, dog wombat), a variavel item receberá o elemento atual do array, e a variável index iniciará em zero e será incrementado em cada iteração. Então esse código poderia ser "traduzido" da seguinte forma:
hash["cat"] = 0
hash["dog"] = 1
hash["wombat"] = 2
Espero que ajude.
Att.