今までずっとやったことがなくて...

あるテキストファイルでRubyの機能を活用して文字列の置換(一般に、編集)をしたいとき
そしてワンライナーじゃ済まないとき( -i.bak は知ってます)
同一ファイルに変更を適用するにはどうするのが定石なんでしょう。

知ってる対処法:
1. 'r' でopenして一括して文字列の配列に読み込んでclose後に編集し
  'w' で同じファイルを再openして書き出す
  (メモリを食う? 書き出す途中で止まったら内容が失われる?)
2. 別ファイルに書き出してリネーム
  (一時ファイルの名前をどうする? 途中で止まったら変なファイルが残る?)
3. ファイルポインタがどうのrewindがどうの(難しそうなので避けたい)
4. ???