[ruby-list:49773] log writing failed. with rails
From:
Kazuhiro NISHIYAMA <zn@...>
Date:
2014-03-06 09:34:27 UTC
List:
ruby-list #49773
西山和広です。
acts-as-taggable-on が 3.0 で SQL の生成に ASCII-8BIT を使っているようで、
そのあたりをログに書き込むときに
log writing failed. "\xE3" from ASCII-8BIT to UTF-8
で失敗するようになってしまいました。
原因を調べてみるとエラーメッセージ自体は logger.rb の中で
単体で使ってみても再現しませんでした。
% ruby -v -r rails -e 'Logger.new(IO::NULL).info "\u{3042}".b'
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin13.0]
log writing failed. "\xE3" from ASCII-8BIT to UTF-8
% ruby -v -r logger -e 'Logger.new(IO::NULL).info "\u{3042}".b'
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin13.0]
さらに調べてみると rails を読み込んだときはログ出力用の File の
external_encoding が UTF-8 になっているのが変換が起きる原因のようで、
% ruby -v -r rails -e 'Logger.new(File.open(IO::NULL, "wb")).info "\u{3042}".b'
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin13.0]
のようにバイナリモードで開くようにすれば問題はおきなくなったのですが、
こういう対処で良いものなのでしょうか?
--
|ZnZ(ゼット エヌ ゼット)
|西山和広(Kazuhiro NISHIYAMA)