From: "marcandre (Marc-Andre Lafortune)" Date: 2012-07-21T01:23:26+09:00 Subject: [ruby-core:46571] [ruby-trunk - Bug #6760][Rejected] unexpected behavior in Enumerable method all? if collection is empty Issue #6760 has been updated by marcandre (Marc-Andre Lafortune). Status changed from Open to Rejected This is not a bug. This behavior is clear from the documentation, both in the form with and without a block: "The method returns true if the block never returns false or nil." "If the block is not given [...] will return true only if none of the collection members are false or nil." You may open a feature request if you want, but I feel it won't be accepted, because the current behavior makes sense (see http://en.wikipedia.org/wiki/Vacuous_truth ). It would be an incompatible change and would need very good justification. ---------------------------------------- Bug #6760: unexpected behavior in Enumerable method all? if collection is empty https://bugs.ruby-lang.org/issues/6760#change-28232 Author: shemerey (Anton Shemerey) Status: Rejected Priority: Normal Assignee: Category: core Target version: 1.9.3 ruby -v: ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.3.0] if collection is empty all? always return true even if we call it with undefined method for example -> [].all?(&:undefined_mathod) #=> true -> {}.all?(&:undefined_mathod) #=> true etc. my fix for it un ruby: module Enumerable alias_method :_original_method_all?, :all? def all?(&block) return false if count == 0 if block_given? _original_method_all?(&block) else _original_method_all? end end end example test file in attach -- http://bugs.ruby-lang.org/