Rubyが嫌いになりそう

大ミスからの生還

10年以上はしたことない大ミスをした。理由は後から説明するが下のコマンドを実行したのだ。

rm -r ~/

幸い、数日前にバックアップを取っていたので被害はほとんど無かったが、しばらく真っ白になってしまった。

なぜ

これをやった理由は、何気ない作業中に不要なディレクトリを見つけたからだ。

01:~/work$ ls
1.c makafile  ~/

~/ 以下にはbakと言うディレクトリがある。要するに"~/work/~/bak"と言うディレクトリが作られていたのだ。

  1. bakの存在により"~"はrmdir出来ない
  2. lsの見た目が"~/"と表示されている
  3. なぜかbashの補完を使わなかった

この要因により、見たまま"rm -r ~/"と実行することになった。

昔からの格言でrmdirを使えと言うのは正しいが、それでも俺は"rm -r"を使う。なぜならめんどくさいからだ。

そもそも

なぜ"~/work/~/bak"のようなディレクトリが作られたのか。ここからが本題になる。最終的には「おまえが悪い」なんだけど。

古い自分用Rubyスクリプト

久しぶりに動かした昔に作った自分用のRubyスクリプトが以下の様なコードになっていた。

require 'fileutils'
path = "~/bak/bakup/hoge.txt" 
FileUtils.mkdir_p(File.dirname(path))
File.open(path,"w") {|wfile|
  wfile.write "123"
}

"~/bak"はemacs等で作られるバックアップファイルを集約しているディレクトリになる。未確認だけどRuby1.8ぐらいまでは、"~/bak/bakup/hoge.txtにファイルが作られていた。Ruby1.9で色々な挙動が変わっているので、同じ頃に変わったのだろう。セキュリティ的によろしくないであろうことは予想出来るので。

Rubyからの

どこかのサッカー選手じゃないが、"~/"がHOME以下になることをRubyに期待したボクがバカでした。*1

昔はRubyは良いと人に勧めることが出来たけど、Ruby1.9あたりからしなくなった。聞かれたら、自分は使わないけどPythonを勧める。今さらPythonに移ることもないので、新しい移行先が登場するまではRubyで生活する。

*1:重ねて書くが、"~/"を使った自分が悪いのは理解しています。