簡體   English   中英

如何在 Ruby 中創建臨時目錄?

[英]How to create temp dir in Ruby?

如何以一種不錯的方式在 Ruby 中創建一個臨時目錄? 我還想在進程退出時自動刪除它。 謝謝!

請參閱tmpdir 的文檔。 如果為塊提供了mktmpdir方法,則在塊返回時將刪除臨時目錄。 在您的情況下,您將在沒有塊的情況下調用並稍后處理刪除(=程序退出)。

關於退出時的自動刪除,我認為 tmpdir 不會為您做到這一點。 但是, at_exit應該會有所幫助。

例如, Homebrew是這樣做的:

require 'tmpdir'

# rest omitted

TEST_TMPDIR = ENV.fetch("HOMEBREW_TEST_TMPDIR") do |k|
  dir = Dir.mktmpdir("homebrew-tests-", ENV["HOMEBREW_TEMP"] || "/tmp")
  at_exit { FileUtils.remove_entry(dir) }
  ENV[k] = dir
end

使用來自 stdlib 的Dir.mktmpdir方法:

require 'tmpdir'
Dir.mktmpdir do |d|
  File.open("#{d}/1.txt", 'w') do |f|
    f.write('1.txt') 
  end
end
# at this point 1.txt and the dir no longer exist

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM