我一直在四处寻找,但似乎找不到这个问题的答案。
我需要编写一个程序,该程序将使用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:UsersDavidRuby ProjectsMyTestClass.rb
我不确定为什么这不起作用,但这确实起作用:
def validFile(input)
filename = Dir.getwd + "/MyTestClass.rb"
require(filename)
end
这段代码对我没有帮助,因为我必须让用户指定文件。我使用gets方法来获取用户输入,并将其作为参数传递给该方法。
它们不是都是字符串吗?我在这里做错了什么?另外请注意,我正在Windows7上运行最新版本的ruby。谢谢你的帮助。
以防万一。在将gets
得到的字符串作为参数传递之前,您是否对其进行了chomp
处理?如果没有,那么它将在末尾包含额外的回车字符。您需要像input = gets.chomp
一样删除它们
您可以使用File.exist?(filename)
查看是否存在文件或目录。这应该有助于缩小问题范围。
最有可能的情况是,您使用gets
获得此输入。要么用chomp
这个方法,要么用更常见的成语gets.chomp
。所以你可以做这样的事情。
def do_require(input)
require( Dir.getwd + "/" + input )
end
do_require gets.chomp