Ruby中的Require方法
我一直在四处寻找,但似乎找不到这个问题的答案 我需要编写一个程序,该程序将使用ruby中内置的反射方法来告诉我有关用户将指定的类的信息 我有这个方法:Ruby中的Require方法,ruby,file,parameters,user-input,require,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 '
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方法获取用户输入,并将其作为参数传递给此方法
它们不都是字符串吗?我做错了什么?另外,我正在Windows7上运行最新版本的ruby。谢谢您的帮助。您可以使用
File.exist?(文件名)
查看文件或目录是否存在。这将有助于缩小问题的范围。以防万一。在将其作为参数传递之前,gets
是否对通过gets
获得的字符串进行了chomp
处理?如果没有,那么它将在末尾包含额外的回车字符。您需要像input=gets.chomp
那样删除它们。很可能,您是通过gets
获得此输入的。在这个方法中使用chomp
或者使用更常见的习惯用法gets.chomp
。所以你可以这样做
def do_require(input)
require( Dir.getwd + "/" + input )
end
do_require gets.chomp
仅供参考,您的filename=String.new()不起任何作用,因为您正在为filename分配一个新的值,直到清除它。谢谢你。我花了两个小时胡闹,现在觉得自己真的很傻。