File.rename はデバイスを超えてrename 出来ない。
File.rename を何気なく使っていました。 require 'fileutils' するのが面倒くさいという、それだけの理由で。
そして今日は見事にドハマリした。cron でエラーが出ているので追いかけてみたら。なんとrename出来ないというerror
File.rename # too bad FileUtils.mv # good manner
まさか、ブロックデバイスが異なると rename 出来ないなんて予想もしなかった。システムコールがそうなってるんだろうけど。油断した。
パーティションを超えてコピーやリネーム、移動、ファイルの変更が発生するおそれがあるので、 File.rename はよほどのことがないと使ってはいけない。
require が面倒くさいとか言う理由で避けてた自分が馬鹿でした