2013-05-06 2 views
3

Я посмотрел метод Dir.exists? вверх в documentation и я считаю, я использую его правильно, но при каждом вызове я попал с этой ошибкой:Ruby Dir.exists? не определен метод

неопределенный метод `существует» для Dir: Class (NoMethodError)

Я пропустил что-то невероятно очевидное? Ниже приведен соответствующий код.

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

EDIT:

Использование File.directory? вместо Dir.exists? исправления моей программы, но не объясняет эту ошибку.

ответ

7

Какую версию Ruby вы используете? Ссылка на документацию для Ruby 2.0. Метод Dir.exists?was not available in 1.8.

Вы можете проверить свою версию Ruby, из командной строки с:

ruby -v 

Или из IRB сессии, проверьте значение константы RUBY_VERSION.

Если вы заинтересованы в использовании новых или нескольких версий Ruby на своей машине, я рекомендую посмотреть на RVM или rbenv.

+0

Только что проверено, я на 1.8.7. Похоже, это проблема! Благодаря! – AnthonyW

+0

У меня такая же проблема, хотя я использовал RVM o установить обновленный ruby ​​'$ ruby ​​-v' дает' ruby ​​2.1.2p95 (версия 2014-05-08 45877) [x86_64-linux] '. Я работаю на машине Ubuntu 12.04 LTS. Любые идеи, что может вызвать проблему? –

+1

@FMKerckhof: В скрипте, где вы вызываете 'Dir.exists?', Добавьте строку типа 'puts 'Ruby version: # {RUBY_VERSION}" ', чтобы убедиться, что она запущена с версией Ruby, которую вы установили с RVM. –

 Смежные вопросы

  • Нет связанных вопросов^_^