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
您将找到所有常用的类方法(chdirchroot,…),但没有mktmpdir
如果要使用mktmpdir,则必须require 'tmpdir'

Dir.method(:mktmpdir)
# NameError (undefined method `mktmpdir' for class `#<Class:Dir>')

require 'tmpdir'
Dir.method(:mktmpdir)
# #<Method: Dir.mktmpdir>

07-24 09:29