gpt4 book ai didi

ruby - 为什么我得到 Dir :Class in irb using Ruby 2. 6.3 的未定义方法 `mktmpdir'?

转载 作者:数据小太阳 更新时间:2023-10-29 08:42:20 28 4
gpt4 key购买 nike

https://ruby-doc.org/stdlib-2.6.3/libdoc/tmpdir/rdoc/Dir.html包含有关 Dir 类的 mktmpdir 方法的说明。

mktmpdir(prefix_suffix=nil, *rest)
::mktmpdir creates a temporary directory.

应用程序使用它没有错误,但为什么无法在控制台/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。

分别缺少什么导致此行为的原因是什么?

最佳答案

您将标准库中的 tmpdir 添加到 Dir 类的补丁与核心中未打补丁的 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>

关于ruby - 为什么我得到 Dir :Class in irb using Ruby 2. 6.3 的未定义方法 `mktmpdir'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58036493/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com