Если у нас сокеты, скажем, в каком-нибудь Net::HTTP, и случается ошибка, то вот вот это:
$stderr.puts "Ошибка: #{ e.message }"
может кончиться этим:
incompatible character encodings: UTF-8 and ASCII-8BIT (Encoding::CompatibilityError)
Поэтому нужно делать так:
$stderr.puts "Ошибка: #{ e.message.force_encoding("windows-1251").encode("UTF-8") }"
Собственно, это результат мышления в стиле «двух кодировок» и «какой-такой UTF-16 я в линупсах привык к UTF-8 и доки не читаю».