Требуется метод в Ruby - PullRequest
       17

Требуется метод в Ruby

0 голосов
/ 05 апреля 2011

Я искал, но не могу найти ответы на эту проблему.

Мне необходимо написать программу, которая будет использовать методы отражения, встроенные в ruby, чтобы сообщить мне информацию о классе, который определит пользователь.

У меня есть этот метод:

def validFile(input)  
  filename = String.new()  
  filename = Dir.getwd + "/" + input  
  require(filename)  
end  

однако я получаю эту ошибку:

internal:lib/rubygems/customrequire:29:in 'require' no such file to load --         C:\Users\David\Ruby Projects\MyTestClass.rb

Я не уверен, почему это не работает, но это работает:

def validFile(input)
  filename = Dir.getwd + "/MyTestClass.rb"
  require(filename)
end

Этот код мне не помогает, потому что мне нужно, чтобы пользователь указал файл. Я использую метод gets для получения пользовательского ввода, который передается в качестве параметра этому методу.

Разве они не обе строки? Что я здесь не так делаю? Дополнительное примечание, я использую последнюю версию ruby ​​на Windows 7. Спасибо за помощь.

Ответы [ 3 ]

1 голос
/ 05 апреля 2011

На всякий случай.Вы chomp редактировали строку, которую получили gets, перед тем, как передать ее в качестве аргумента?Если вы этого не сделаете, то в конце он будет содержать дополнительные символы возврата каретки.Вы должны удалить их как input = gets.chomp

0 голосов
/ 05 апреля 2011

Скорее всего, вы получаете этот ввод с gets. Либо chomp в этом методе, либо используйте более распространенную идиому gets.chomp. Таким образом, вы можете сделать что-то вроде этого.

def do_require(input)
  require( Dir.getwd + "/" + input )
end

do_require gets.chomp
0 голосов
/ 05 апреля 2011

Вы можете использовать File.exist?(filename), чтобы увидеть, существует ли файл или каталог.Это должно помочь сузить проблему.

...