putsの余計なお節介のバグ

puts_test.rb

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
open("test.txt","w:UTF-8") {|f|
  f.puts "(1)test"
  f.puts "(2)test".encode("UTF-16BE")
  f.puts "(3)日本語"
  f.puts "(4)日本語".encode("UTF-16BE")
  f.puts "(5)\u0109"
  f.puts "(6)\u010a"
  f.puts "(7)\u010b"
  f.puts "(8)\u0109".encode("UTF-16BE")
  f.puts "(9)\u010a".encode("UTF-16BE")
  f.puts "(10)\u010b".encode("UTF-16BE")
}

出力結果:test.txt

(1)test
(2)test
(3)日本語
(4)日本語
(5)ĉ
(6)Ċ
(7)ċ
(8)ĉ
(9)Ċ(10)ċ

なにがまずいか

(9)と(10)の行がつながってしまっている。
最後の文字ではなく最後のバイトが'\n'の場合に改行しない。

Rubyディスる

ストリーム毎に改行文字を設定できない。自前でwriteしないとダメ。
getsも全部改行文字指定しないとダメ。
putsの内部で文字列本体と改行文字を2回にわけてwriteしてるから複数プロセスから同時にログファイルに追記しようとすると行がつながる不具合発生。
getsしたものをそのままputsしたいみたいだけど自動でchompしてくれたほうがましだYO!