我一直在寻找,但我似乎找不到这个问题的答案。
我需要编写一个程序,它将使用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。感谢您的帮助。
答案 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