I have some working code with a crutch to add BOM marker to a new file.
#writing
File.open name, \'w\', 0644 do |file|
file.write \"\\uFEFF\"
fil
Alas I think your manual approach is the way to go, at least I don't know a better way:
http://blog.grayproductions.net/articles/miscellaneous_m17n_details
To quote from JEG2's article:
Ruby 1.9 won't automatically add a BOM to your data, so you're going to need to take care of that if you want one. Luckily, it's not too tough. The basic idea is just to print the bytes needed at the beginning of a file.