1

デーモンとして実行される jruby プログラムのファイルに STDERR をリダイレクトしようとしています。以前にMRIで問題なくこれを行ったことがありますが、jrubyのパズルの一部が欠けているようです。

log = File.new('/home/my_user/test_log.log', "w")
$stderr.reopen log
$stderr.puts "writing to log!"

require 'some_broken_thing'

MRI のログの内容 (2.0.0-p0):

/path/to/ruby/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require': cannot load such file -- some_broken_thing (LoadError)
  from /path/to/ruby/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
  from test.rb:5:in `<main>'
writing to log!

jruby (1.7.4) のログの内容:

writing to log!

私は単に、require の破損や満たされていない依存関係などのばかげたことを、コンソールに出力するのではなく、どこかに記録できるようにしようとしています。私が間違っているのかわかりません。$stderr.reopen を呼び出すと、壊れた require からのエラー出力がコンソールに表示されません。これは良いことですが、ファイルに表示されることはありません。これはあまり良くありません。

4

1 に答える 1