任何人都可以請解釋爲什麼下面的代碼段不起作用嗎?Can not cd in a ruby script
@t=`mktemp -d`
puts @t
at_exit {system "rm -rf #{@t}"}
begin
Dir.chdir @t
rescue
puts $!
sleep 2
retry
end
在cd
基本上,甚至不反覆嘗試荷蘭國際集團到新創建的臨時目錄的工作,但在代碼是retry
循環內,我可以非常清楚cd
到它從一個不同的終端。 (at_exit
部分工作 - 如果我打破retry
循環與Ctrl-C
,該目錄被刪除)。
我甚至嘗試在Dir.chdir
和FileUtils.cd
之間切換,並運行幾個版本的ruby(> = 1.9.3)的腳本,都無濟於事。
FWIW Ruby有[迪爾:: mktmpdir(HTTP目錄:// ruby-doc.org/stdlib-2.1.0/libdoc/tmpdir/rdoc/Dir.html#method-c-mktmpdir)。 – steenslag
謝謝。這是有用的信息。我正在尋找它,但找不到它。 – PSkocik
它看起來更乾淨,但我確實運行了一些基準測試,並且與外部命令相關的開銷與本機ruby函數看起來幾乎可以忽略不計,除非您正在運行巨大的循環。 – PSkocik