- VC++ は BOM 付き UTF-8 ならば Unicode なソースを食える。(一般には、UTF-8 での BOM はナンセンスだがしようがない。)
- Ruby の文字列リテラルは、そのスクリプトが書いてあったファイルのエンコーディングの影響を受けるが、 Unicode エスケープを含むと UTF-8 になる。
ゆえに
file = File.open(file_path, "w:utf-8")
file.write("\uFEFF")
として出力を開始すればよい。
ネットを検索すると、magic comment でスクリプトエンコーディングを utf-8 にした上で "\xEF\xBB\xBF" を出力するものや、Array#pack, String#setbyte, String#force_encoding あたりを使う例が見つかるが、たぶんこれが簡単確実なはず。(古いバージョンでは違ったのかもしれませんが、そこまでは調べていません。)