Actions
Bug #13254
closedDir.exist? などで「ディスクがありません」ダイアログが表示される
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.4.0p0 (2016-12-24 revision 57164) [x64-mswin64_140]
Backport:
Description
概要¶
windows 10で使用しています。
sdカードリーダーにメディアを差していない状態で、同ドライブに Dir.exist? などを行うと、次のメッセージダイアログが表示されスクリプトの実行が一時停止します。
「キャンセル」か「続行」を2回クリックするとスクリプトが再開し、Dir.exist? であれば false を返します。
---------------------------
ruby.exe - ディスクがありません
---------------------------
ドライブにディスクがありません。 ディスクをドライブ H: に挿入してください。
---------------------------
キャンセル 再実行(T) 続行(C)
---------------------------
期待する動作¶
現状では手動操作が必要になるため、メッセージダイアログが表示されないこと、一時停止しないことを期待します。
手元での再現手順1¶
- sdカードリーダーをusbにつなぎ、sdカードをセットします。
- タスクトレイの「ハードウェアを安全に取り外してメディアを取り出す」からカードをアンマウントし、
sdカードおよびカードリーダーを取り外します。 - メディアを差していないsdカードリーダーをusbにつなぎます。
- コマンドプロンプトで diskpart から list volume すると次の状態になっています。H: がカードリーダーです。
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ---- ---------- ------- --------- --------
Volume 0 E DVD-ROM 0 B メディアなし
Volume 1 D NTFS Partition 931 GB 正常
Volume 2 システムで予約済み NTFS Partition 85 MB 正常 システム
Volume 3 C NTFS Partition 111 GB 正常 ブート
Volume 4 NTFS Partition 450 MB 正常 非表示
Volume 5 H リムーバブル 0 B メディアなし
- irb でいくつか試すと以下のようになります。
irb(main):001:0> Dir.exist?("h:")
# 注:ここでダイアログが表示されます。閉じると次に進みます。
=> false
irb(main):002:0> File.stat("h:")
# 注:ここでダイアログが表示されます。閉じると次に進みます。
Errno::ENXIO: No such device or address @ rb_file_s_stat - h:
from (irb):2:in `stat'
from (irb):2
from c:/ruby/bin/irb.cmd:19:in `<main>'
irb(main):003:0> File.directory?("h:")
# 注:ここでダイアログが表示されます。閉じると次に進みます。
=> false
手元での再現手順2¶
DVD ドライブの場合です。ダイアログは3回クリックすると閉じます。
a) DVD ドライブにディスクをセットします。
b) ディスクを取り出します。
c) irb での実行結果は以下のようになります。
irb(main):001:0> Dir.exist?("e:")
# 注:ここでダイアログが表示されます。閉じると次に進みます。
=> false
irb(main):002:0> File.stat("e:")
# 注:ここでダイアログが表示されます。閉じると次に進みます。
Errno::EINVAL: Invalid argument @ rb_file_s_stat - e:
from (irb):2:in `stat'
from (irb):2
from c:/ruby/bin/irb.cmd:19:in `<main>'
irb(main):003:0> File.directory?("e:")
# 注:ここでダイアログが表示されます。閉じると次に進みます。
=> false
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0