2013-05-06 66 views
3

我看了Dir.exists?方法了在documentation,我相信我正确地使用它,但在每次调用我打这个错误:Ruby Dir.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?修复我的计划,但并没有解释这个错误。

回答

7

您使用的是哪个版本的Ruby?您提供的文档链接适用于Ruby 2.0。 Dir.exists?方法was not available in 1.8

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

ruby -v 

或从IRB会议,检查RUBY_VERSION常量的值。

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

+0

刚刚检查,我在1.8.7。看起来这是问题!谢谢! – AnthonyW 2013-05-06 22:13:56

+0

即使使用RVM,我也有同样的问题o安装最新的ruby'$ ruby​​ -v'给出'ruby 2.1.2p95(2014-05-08修订版45877)[x86_64-linux]'。我在一台Ubuntu 12.04 LTS机器上运行。任何想法可能会导致这个问题? – 2014-06-25 14:15:57

+1

@FMKerckhof:在您调用'Dir.exists?'的脚本中,添加一行像'puts“Ruby版本:#{RUBY_VERSION}”',以确保它与使用RVM安装的Ruby版本一起运行。 – 2014-06-25 14:39:06