From: "nobu (Nobuyoshi Nakada)" Date: 2013-08-23T21:44:41+09:00 Subject: [ruby-core:56791] [ruby-trunk - Bug #8815][Rejected] Enumerable.drop_while returns an Enumerator. Calling next twice on the Enumerator raises StopIteration even if there are still items available Issue #8815 has been updated by nobu (Nobuyoshi Nakada). Status changed from Open to Rejected Not a bug. Enumerable#drop_while stops if the block returns false (or nil). You have to feed true value to the enumerator by Enumerator#feed. enumerator.next # => 1 enumerator.feed(true) enumerator.next # => 2 ---------------------------------------- Bug #8815: Enumerable.drop_while returns an Enumerator. Calling next twice on the Enumerator raises StopIteration even if there are still items available https://bugs.ruby-lang.org/issues/8815#change-41332 Author: ebouchut (Eric Bouchut) Status: Rejected Priority: Normal Assignee: Category: core Target version: ruby -v: ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.3.0] Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN I have an enumerable (array) that contains 3 items [1, 2, 3]. I send drop_while without a block to this array to get an Enumerator. enumerator = [1, 2, 3].drop_while When I call next twice on the Enumerator enumerator.next # => 1 enumerator.next # => raises StopIteration The second call enumerator.next raises StopIteration whereas the Enumerable contains more than one item. I expected the second call to enumerator.next to return 2 instead. I reproduced this on: - ruby-1.9.3-p448 - ruby-2.0.0-p247 - rbx-2.0.0 However it works fine in 1.8.7, even if 1.8.7's documentation did not mention about Enumerable.drop_while returning an Enumerator. Here is an RSpec example that isolates the problem: http://preview.tinyurl.com/enumerable-drop-while Eric -- http://bugs.ruby-lang.org/