【发布时间】:2020-08-22 19:05:26
【问题描述】:
我正在尝试创建一个临时目录,该目录在脚本退出时会被删除。
#!/usr/bin/env ruby
require 'pathname'
require 'tmpdir'
Tmp_dir = Pathname.new(Dir.mktmpdir)
Signal.trap('EXIT') {
Tmp_dir.rmtree
puts 'Doing cleanup'
}
puts 'Will exit after this message'
Doing cleanup 消息永远不会触发并且目录保持不变。经过一些测试,Tmp_dir.rmtree 似乎永远不会运行,之后也不会执行任何操作。
The documentation 建议Pathname.rmtree 调用FileUtils.rm_r,所以我这样尝试:
#!/usr/bin/env ruby
require 'fileutils'
require 'pathname'
require 'tmpdir'
Tmp_dir = Pathname.new(Dir.mktmpdir)
Signal.trap('EXIT') {
FileUtils.rm_r(Tmp_dir.to_path)
puts 'Doing cleanup'
}
puts 'Will exit after this message'
而且它有效。那么rmtree 版本为什么没有呢?
【问题讨论】:
标签: ruby signals fileutils pathname