2013-05-06 67 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