Вы можете изменить свою функцию, чтобы она возвращала Enumerable. Вот пример того, как это будет выглядеть:
def foo
Enumerator.new do |y|
y << 1
y << 2
y << 3
end
end
p foo # => <Enumerator: #<Enumerator::Generator:0x1df7f00>:each>
p foo.to_a # => [1, 2, 3]
p foo.map { |x| x + 1 } # => [2, 3, 4]
Тогда вы можете использовать любой из методов в модуле Enumerable:
http://ruby -doc.org / ядро-1.9.3 / Enumerable.html
Многие функции ruby в стандартной библиотеке будут возвращать перечислимое, если им НЕ передается блок при вызове, но если им передается блок, они возвращают значения блоку. Вы тоже можете это сделать.