Use o método tap ao invés de returning
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
Comentários