BitArts Blog

ロードバイク通勤のRubyプログラマで伊豆ダイバー。の個人的なブログ。

DEATH CODE

分かっていたのに、なぜかやってしまった。…ていうか、こういう事故を危惧して再帰的なディレクトリ削除は実装しないポリシーで今までやってきたのを、今回「あえて」載せてみようとしたところでアホみたいにつかまった。

 

どうして死のコードを書いてしまったのか。

「あるディレクトリ(の中身)を空にしたい」

def clear_dir(path)
  Dir.glob(path + "/*").each {|f|
    FileUtils.rm_rf(f)
  }
end

うまくできた!

あれ?でもこれだと「.htaccess」とかが消えないなあ。

def clear_dir(path)
  (Dir.glob(path + "/*") + Dir.glob(dir + "/.*")).each {|f|
    FileUtils.rm_rf(f)
  }
end

注)上記のコードを動かすと即死します。絶対にまねをしないでください。

 

今回は幸い、すぐに異常に気付いてストップできたので、影響を受けたのがsvnの作業コピー下だけだったのと、EmEditorの自動バックアップが残っていたので被害は少なくて済みました。危うく切腹ものの事態になるところでしたが、幾重ものバックアップ体制を配備していたおかげで助かりました。

「/*」が正常に動いたところで油断して、影響するパスを事前に確認することを怠ったのが死因です。猛省。