Arquivo

Textos com Etiquetas ‘Tap’

Use o método tap ao invés de returning

4 de outubro de 2010

Há um tempo atrás eu falei neste post sobre o método returning em Ruby on Rails e como ele facilita a criação de uma variável já atribuindo valores a ela.

A partir da versão 2.3.9 do Ruby on Rails, o método returning da classe Object se tornou obsoleto. Seu uso irá gerar um alerta informando para usar o método tap, nativo da classe Object no Ruby, no seu lugar:

DEPRECATION WARNING: Object#returning has been deprecated in favor of Object#tap.

O intuito dessa alerta é facilitar a migração de uma aplicação Rails 2.3.9 para a nova versão 3.0, já que nessa última versão do Rails o método returning foi removido.

Vamos ver os mesmos exemplos do post anterior, agora utilizando Object#tap.

Primeiro, um exemplo criando uma variável normalmente, atribuindo valores a ela e depois retornando-a como resultado de um método:

def some_values
  values = []
  values << "first element"
  values << "second element"
  values
end

some_values # => ["first element", "second element"]

E agora usando o método tap:

def some_values
  [].tap do |values|
    values << "first element"
    values << "second element"
  end
end

some_values # => ["first element", "second element"]

E um exemplo de um método auxiliar para testes de RSpec retirado de uma aplicação real:

def variants
  [].tap do |variants|
    5.times do |priority| do
      variants << Factory.build(:variant, :priority => priority)
    end
  end
end

Ruby , , , ,