From: Yusuke ENDOH Date: 2010-01-25T22:54:46+09:00 Subject: [ruby-dev:40147] circular require warning is emitted to both stdout and stderr 遠藤です。 $ ./ruby -w foo.rb /home/mame/work/ruby/foo.rb:1: warning: loading in progress, circular require considered harmful - /home/mame/work/ruby/bar.rb from foo.rb:1:in `
' from foo.rb:1:in `require' from /home/mame/work/ruby/bar.rb:1:in `' from /home/mame/work/ruby/bar.rb:1:in `require' from /home/mame/work/ruby/foo.rb:1:in `' from /home/mame/work/ruby/foo.rb:1:in `require' 上記の "circular require considered harmful" の例外ですが、一行目は stderr に、二行目以降は stdout に出ているようです。 $ ./ruby -w foo.rb > /dev/null /home/mame/work/ruby/foo.rb:1: warning: loading in progress, circular require considered harmful - /home/mame/work/ruby/bar.rb $ ./ruby -w foo.rb 2> /dev/null from foo.rb:1:in `
' from foo.rb:1:in `require' from /home/mame/work/ruby/bar.rb:1:in `' from /home/mame/work/ruby/bar.rb:1:in `require' from /home/mame/work/ruby/foo.rb:1:in `' from /home/mame/work/ruby/foo.rb:1:in `require' 無駄にややこしいと思うので、反対がなければ以下のパッチをあてようと 思います。 diff --git a/vm_eval.c b/vm_eval.c index 762453e..ada783d 100644 --- a/vm_eval.c +++ b/vm_eval.c @@ -1577,7 +1577,7 @@ print_backtrace(void *arg, VALUE file, int line, VALUE method) void rb_backtrace(void) { - vm_backtrace_each(GET_THREAD(), -1, print_backtrace, stdout); + vm_backtrace_each(GET_THREAD(), -1, print_backtrace, stderr); } VALUE -- Yusuke ENDOH