https://ruby-doc.org/stdlib-2.6.3/libdoc/tmpdir/rdoc/Dir.html包含关于dir类的mktmpdir
方法的描述。
mktmpdir(前缀后缀=nil,*rest)
:mktmpdir创建临时目录。
我们有一个应用程序在工作,它正在使用它,没有任何错误,但为什么它不可能运行在控制台/irb?为什么黑客不在控制台工作?我也用Dir.new ...
进行了测试,低于我用Dir.mktmpdir
的尝试。
irb(main):010:0> Dir.mktmpdir {|dir| dir is ".../d..." }
Traceback (most recent call last):
5: from C:/Ruby26/bin/irb.cmd:31:in `<main>'
4: from C:/Ruby26/bin/irb.cmd:31:in `load'
3: from C:/Ruby26/lib/ruby/gems/2.6.0/gems/irb-1.0.0/exe/irb:11:in `<top (required)>'
2: from (irb):10
1: from (irb):10:in `rescue in irb_binding'
NoMethodError (undefined method `mktmpdir' for Dir:Class)
Dir.methods
未显示此方法,但仅显示mkdir。为什么它是文档的一部分,它是如何工作的?分别缺少了什么?这种行为的原因是什么?
最佳答案
您将标准库中Dir
添加的tmpdir
类的修补程序与core中的普通未修补的Dir
类混淆了。如果您查看tmpdir
包的文档:
https://ruby-doc.com/stdlib/libdoc/tmpdir/rdoc/Dir.html
然后您将在路径中找到Dir.mktmpdir
(注意stdlib/libdoc/tmpdir
)。但如果我们看一下核心的Dir
:
https://ruby-doc.org/core/Dir.html
您将找到所有常用的类方法(chdir
,chroot
,…),但没有mktmpdir
。
如果要使用mktmpdir
,则必须require 'tmpdir'
:
Dir.method(:mktmpdir)
# NameError (undefined method `mktmpdir' for class `#<Class:Dir>')
require 'tmpdir'
Dir.method(:mktmpdir)
# #<Method: Dir.mktmpdir>