在Ruby中需要方法

时间:2011-04-05 04:29:55

标签: ruby file parameters user-input require

我一直在寻找,但我似乎找不到这个问题的答案。

我需要编写一个程序,它将使用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方法来获取用户输入,并将其作为参数传递给此方法。

他们不是两个字符串吗?我在这做错了什么?另外请注意,我在Windows 7上运行最新版本的ruby。感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

以防万一。在将chomp作为参数传递之前,您是否gets编辑了input = gets.chomp得到的字符串?如果你没有,那么它最后会包含额外的回车字符。您需要将其删除,例如{{1}}

答案 1 :(得分:0)

您可以使用File.exist?(filename)查看文件或目录是否存在。这应该有助于缩小问题范围。

答案 2 :(得分:0)

最有可能的是,您使用gets获得此输入。在此方法中chomp或使用gets.chomp更常见的习语。所以你可以这样做。

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

do_require gets.chomp