鍋あり谷あり

テーマを決めずに適当に書いています。

ドライブが使えるかどうか調べるの続き

先日 ( d:id:Nabetani:20060104:p4 ) の続き。
コメントありがとうございます>なかだ様
で。
私の手元の環境(winXP pro SP2 / ruby 1.8.2 (2004-12-25) [i386-mswin32] ) では、フロッピーディスクを刺していない状態で File.directory?( 'A:' ) を実行すると:

Windows - ディスクがありません
ドライブにディスクがありません。 ディスクをドライブ に挿入してください。
[キャンセル][再実行(T)][続行(C)]

というプロンプトが出てしまいます。
しかも。ここでキャンセルを選んでも続行を選んでも、帰ってくる値は true です。

なかださんのところと何が違うのかわからないんですが(あるいは、1.8.4 で治ってるとか?)私の手元では上記の通りです。
(ここで文体が変わり)
手元で調べてみると:

メソッド そんなドライブはない ドライブはあるけどメディアがない ドライブもメディアもある
FileTest.directory? false true+MB true
FileTest.exist? false true+MB true
FileTest.drive_ready?*1 false false true
Dir.open No such file or directory Invalid argument+MB Dirオブジェクト

となっている。返り値と例外をごっちゃにして書いているので要注意。
「+MB」 と書いたのは、メッセージボックスが出るという意味。

というわけで(私の知る限り)先日書いた drive_ready? は必要なのであった。

*1:d:id:Nabetani:20060104:p4 で書いたもの。組み込みではない