Другой способ - понять, что Enumerable требует, чтобы вы указали каждый метод.
Итак. Вы МОЖЕТЕ смешать Enumerable с вашим классом и дать ему пустышку, которая работает ....
class YourClass
include Enumerable
... really important and earth shattering stuff ...
def each
yield(self) if block_given?
end
end
Таким образом, если вы вернете отдельный элемент поиска в результате поиска, перечислимые методы будут работать, как и ожидалось.
Этот способ имеет то преимущество, что вся его поддержка находится внутри вашего класса, а не снаружи, где его нужно многократно дублировать.
Конечно, лучше всего изменить реализацию поиска таким образом, чтобы она возвращала массив независимо от того, сколько элементов возвращается.