Ruby中的Dir.exists?方法未定义。

3

我在官方文档中查找了Dir.exists?方法,并且我相信我使用的是正确的方式,但是每次调用时都出现以下错误:

undefined method `exists?' for Dir:Class (NoMethodError)

我是否忽略了什么极其明显的东西?下面是相关的代码。

#!/usr/bin/ruby
ARGV.each do |dir|          # Arguements are directory names.
    if !Dir.exists?(dir)
#dosomething
end
end

编辑:

使用File.directory?而不是Dir.exists?修复了我的程序,但并不能解释这个错误。

1个回答

8

您正在使用哪个版本的Ruby?您提供的文档链接是Ruby 2.0的。 Dir.exists?方法在1.8中不可用

您可以通过命令行检查您的Ruby版本:

ruby -v

或者在IRB会话中检查RUBY_VERSION常量的值。

如果您有兴趣在计算机上使用更新/多个Ruby版本,我建议您研究RVMrbenv


刚刚检查了一下,我使用的是1.8.7版本。看起来这就是问题所在!谢谢! - AnthonyW
我使用RVM安装了最新版本的ruby,但仍然遇到相同的持久性问题。$ ruby -v显示ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]。我在运行Ubuntu 12.04 LTS机器。有任何想法是什么原因导致这个问题? - FM Kerckhof
1
@FMKerckhof:在你调用 Dir.exists? 的脚本中,添加一行像 puts "Ruby version: #{RUBY_VERSION}" 这样的代码,仅仅是为了确保它正常运行在你使用 RVM 安装的 Ruby 版本上。 - Dan Tao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接