Dir.mktmpdir when given a block will call FileUtil.remove_entry_secure in the ensure section. If the contents of the block happens to move/delete/modify that folder, then that will fail with Errno::ENOENT. I believe the correct behavior in this case should be to successfully return, since the folder is clearly gone in some way.
Dir.mktmpdir when given a block will call FileUtil.remove_entry_secure in the ensure section. If the contents of the block happens to move/delete/modify that folder, then that will fail with Errno::ENOENT. I believe the correct behavior in this case should be to successfully return, since the folder is clearly gone in some way.
I think such application may remove another application's temporary
directory unintentionally.
After you remove the directory, another application may create a
directory with same name.
Then Dir.mktmpdir {} removes that.
If an application itself removes a temporary directory, Dir.mktmpdir
without a block should be used.
It avoids the problem above because Dir.mktmpdir without a block
doesn't remove the directory anyway.¶