为什么我会得到未定义的方法`mktmpdir';for Dir:irb中使用Ruby 2.6.3的类?

为什么我会得到未定义的方法`mktmpdir';for Dir:irb中使用Ruby 2.6.3的类?,ruby,directory,irb,temp,Ruby,Directory,Irb,Temp,包含关于Dir类的mktmpdir方法的说明 mktmpdir(前缀\后缀=nil,*rest) ::mktmpdir创建一个临时目录 我们有一个正在使用的应用程序,它没有任何错误,但为什么不能在控制台/irb中运行它呢?为什么黑客在控制台中不起作用?我也用Dir.new…进行了测试,下面是我用Dir.mktmpdir进行的尝试 irb(main):010:0> Dir.mktmpdir {|dir| dir is ".../d..." } Traceback (most recent c

包含关于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)
irb(main):010:0>Dir.mktmpdir{| Dir | Dir是“../d…”
回溯(最近一次呼叫最后一次):
5:from C:/Ruby26/bin/irb.cmd:31:in`'
4:from C:/Ruby26/bin/irb.cmd:31:in'load'
3:来自C:/Ruby26/lib/ruby/gems/2.6.0/gems/irb-1.0.0/exe/irb:11:in`'
2:from(irb):10
1:from(irb):10:in“irb_绑定中的救援”
NoMethodError(Dir:Class的未定义方法“mktmpdir”)
Dir.methods
未显示此方法,仅显示mkdir。为什么它是文档的一部分,它是如何工作的


分别缺少了什么?这种行为的原因是什么?

您将补丁程序与标准库中的
tmpdir
与核心中的普通未补丁
Dir
类一起添加的
Dir
类混淆了。如果您查看
tmpdir
软件包的文档:

然后您将在路径中找到
Dir.mktmpdir
(注意
stdlib/libdoc/tmpdir
)。但如果我们看一下core中的
Dir

您将找到所有常用的类方法(
chdir
chroot
,…),但没有
mktmpdir

如果要使用
mktmpdir
,则必须
要求使用“tmpdir”

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

require 'tmpdir'
Dir.method(:mktmpdir)
# #<Method: Dir.mktmpdir> 
Dir.method(:mktmpdir)
#NameError(类“#”的未定义方法“mktmpdir”)
需要“tmpdir”
目录方法(:mktmpdir)
# #