Issue #10815 has been updated by Daniel Berger.


Ok, but that seems a strange way to declare the function prototype. Compare that with Dir.entries, which does give you an error if you pass the wrong number of arguments.

----------------------------------------
Bug #10815: Dir.foreach in block form does not allow encoding
https://bugs.ruby-lang.org/issues/10815#change-51343

* Author: Daniel Berger
* Status: Rejected
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.2.0p0 (2014-12-25 revision 49005) [i386-mswin32_120]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
It doesn't appear that Dir.foreach{} allows an encoding:

    enc = Encoding::UTF_16LE

    # Without a block, works ok
    p Dir.foreach(Dir.pwd)      # => Enumerator
    p Dir.foreach(Dir.pwd, enc) # => Enumerator

    # With a block, fails if more than 1 argument is passed
    p Dir.foreach(Dir.pwd){ }      # => nil
    p Dir.foreach(Dir.pwd, enc){ } # => ArgumentError



-- 
https://bugs.ruby-lang.org/