Require Method in Ruby
I have been searching around but I cant seem to find any answers for this problem.
I am required to write a program that will use the reflection methods built into ruby to tell me information about a class a user will specify.
I have this method:
def validFile(input)
filename = String.new()
filename = Dir.getwd + "/" + input
require(filename)
end
however I get this error:
internal:lib/rubygems/customrequire:29:in 'require' no such file to load -- C:\Users\David\Ruby Projects\MyTestClass.rb
I am not sure why this doesn't work but this does:
def validFile(input)
filename = Dir.getwd + "/MyTestClass.rb"
require(filename)
end
This code doesn't help me because I have to have the user specify the file. I am using开发者_如何学运维 the gets method to get user input and that is being passed as a parameter to this method.
Are they not both strings? What am I doing wrong here? Additional note, I'm running the latest version of ruby on Windows 7. Thanks for the help.
Just in case. Have you chomp
ed the string that you got by gets
before passing it as an argument? If you havn't, then it will contain extra carriage return characters at the end. You need to remove them like input = gets.chomp
You can use File.exist?(filename)
to see if a file or directory exists. This should help narrow down the problem.
Most likely, you're getting this input with gets
. Either chomp
it in this method or use the more common idiom of gets.chomp
. So you can do something like this.
def do_require(input)
require( Dir.getwd + "/" + input )
end
do_require gets.chomp
精彩评论