Ruby exist?()の罠にはまった
Rubyで
現在いるディレクトリ内にenglishディレクトリがあるかどうか確認する。なければ作る。そんなプログラムをかきました。
ENGLISH_DIR = "english" Dir.foreach(".") do |file| if file != File.exist?(ENGLISH_DIR) next else Dir.mkdir(ENGLISH_DIR) end end
当然動かなかった訳です。exist?()関数は「?」が付いているので、引数とマッチしたかどうかをTRUE or FALSEで返します。しかし、私はファイル名またはディレクトリ名が返ってくると思っていたので、foreachで回して名前を全てチェックしていました。
TRUE or FALSEで返ってくるとわかれば、コードの書き直し。
ENGLISH_DIR = "english" if true != File.exist?(ENGLISH_DIR) Dir.mkdir(ENGLISH_DIR) end