From: eklerni Date: 2007-08-20T19:31:07+09:00 Subject: [ruby-dev:31525] いくつかのバグ報告と提案(5点) From:eklerni リファレンスマニュアル編集中に見つけた1.9のメソッドの不具合を報告します。 $ ruby -v ruby 1.9.0 (2007-08-18 patchlevel 0) [i386-mswin32_80] * Dir.foreach('C:/') #=> NameError ブロックを渡さずに Dir.foreach を呼ぶと NameError になります。 ブロックつきだと普通に動作します。 $ ruby -e "Dir.foreach('C:/')" -e:1:in `foreach': undefined method `foreach' for class `Dir' (NameError) from -e:1:in `
' * foreachの引数を後から渡したい これは不具合ではないのですが、通常引数も要求するeach系メソッド (たとえばIO.foreach)に引数を渡さずにEnumerator化すると、必ず ArgumentErrorするEnumeratorになります。 Enumerator生成時に引数チェックエラーになるか、 Enumerator実行時に引数を 渡せるようになりませんか? (希望は後者) $ irb irb(main):001:0> enum = IO.foreach => # irb(main):002:0> enum.each{} ArgumentError: wrong number of arguments (0 for 1) irb(main):003:0> enum.each("File"){} ArgumentError: wrong number of arguments(1 for 0) * ruby -r debug -e '(1..3)' [ruby-dev:31351] * Symbol.internになにを引数に与えてもエラー Symbol.intern がレシーバーのクラスインスタンスSymbolを変換しようとしてい ます。 (このメソッドがなにをしたいのかよくわかりませんが) $ ruby -e "Symbol.intern('')" -e:1:in `intern': can't convert Class into String (TypeError) from -e:1:in `
' * Symbol#dump でdump Symbol#dumpを任意のシンボルで呼ぶとdumpします。 $ ruby -e ':a.dump' -e:1: -- control frame ---------- c:0004 p:---- s:0008 b:0008 l:000007 d:000007 CFUNC :dump c:0003 p:0008 s:0005 b:0005 l:000004 d:000004 TOP -e:1 c:0002 p:---- s:0003 b:0003 l:000002 d:000002 FINISH :inherited c:0001 p:---- s:0001 b:-001 l:000000 d:000000 ------ --------------------------- DBG> : "-e:1:in `
'" [BUG] Segmentation fault ruby 1.9.0 (2007-08-18) [i386-mswin32_80] This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.