任何人都可以请解释为什么下面的代码段不起作用吗?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