Enumerable#any?
немедленно завершается, когда блок возвращает значение truthy
.
Я не уверен, зачем вам использовать any?
для этого варианта использования, но происходит следующее: на первой итерации блок возвращает массив, который является правдивым.
Используйте #each_with_object
или даже просто #map
вместо:
arry.each_with_object([]) { |s, tester| tester << s.include?('sh') }
arry.map { |s| s.include?('sh') }
Мой любимый:
arry.map(&/sh/.method(:!~)).map(&:!)