From: Kazuhiro NISHIYAMA Date: 2014-03-06T18:34:27+09:00 Subject: [ruby-list:49773] log writing failed. with rails 西山和広です。 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)