2011-04-05 197 views
0

我一直在四處搜尋,但我似乎無法找到任何解決此問題的答案。紅寶石要求方法

我需要編寫一個程序,它將使用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

僅供參考,您的文件名= String.new()不會做任何事情,因爲你被分配一個新的值到文件名 – 2011-04-05 04:37:58

回答

1

爲了以防萬一。在將它作爲參數傳遞之前,你有沒有用gets得到的字符串chomp?如果你沒有,那麼它將在最後包含額外的回車符。你需要刪除他們像input = gets.chomp

+0

後立即清除這是正確的。感謝那。現在我花了兩個小時弄到這裏,我感到非常沮喪。 – yaegerbomb 2011-04-06 04:35:58

0

您可以使用File.exist?(filename)來查看文件或目錄是否存在。這應該有助於縮小問題的範圍。

0

最有可能的,你得到這個輸入與getschomp這個方法或者使用更常見的成語gets.chomp。所以你可以做這樣的事情。

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

do_require gets.chomp