From: Chikanaga Tomoyuki Date: 2007-05-25T19:59:48+09:00 Subject: [ruby-dev:30820] trap() with String command dosn't work(1.8/1.9) 日本コントロールシステム(株)の近永と申します。 オンラインマニュアルの例によると Kernel#trap および Signal.trap は ハンドラに文字列(スクリプト片)を指定できるとなっていますが、 やってみるとうまく動いていないようです。 # マニュアル本文(?)には、スクリプト片を文字列として渡していいと # はっきりとは書いてないようですけれど... 1.8 と 1.9 でそれぞれ異なるエラー内容になります。 なお、いろいろな環境で試したのですが 1.8.0 では動いていて、 1.8.1 から動かなくなったようです。 $ cat traptest.rb Signal.trap(:INT, "p true") loop do sleep end $ ruby-1.8.6 -v traptest.rb ruby 1.8.6 (2007-03-13 patchlevel 0) [i686-linux] true # <= Ctrl-C traptest.rb:4: unexpected return $ ~/env/ruby-head/bin/ruby -v traptest.rb ruby 1.9.0 (2007-01-09 patchlevel 0) [i686-linux] # <- Ctrl-C traptest.rb:4:in `sleep': wrong argument type String (expected Data) (TypeError) from traptest.rb:4:in `block in
' from traptest.rb:3:in `loop' from traptest.rb:3:in `
' $ ruby1.8 -v hoge.rb ruby 1.8.0 (2003-08-10) [i386-linux] true # <= Ctrl-C true # <= Ctrl-C 以上、報告だけですみません。 -- 日本コントロールシステム(株) 近永 智之