Às vezes, com uma longa cadeia de chamadas de método como esta:
user.photos.collect(&:title).sort.uniq
Pode ser útil ao depurar código para gerar um dos valores intermediários. Isso pode ser feito usando #tap
:
user.photos.tap { |photos| puts photos.inspect }.collect(&:title).sort.uniq
#tap
irá render e devolver o remetente, permitindo que você inspecione um valor dentro da cadeia sem interrompê-lo.
Para tornar isso mais conveniente no console, adicione o seguinte ao arquivo ~/.irbrc
:
class Object
def o
require 'pp' unless defined?(pp)
pp self
self
end
end
Isso permitirá que você inspecione facilmente os elementos, inserindo .o
em qualquer lugar da corrente:
user.photos.o.collect(&:title).sort.uniq