2014-05-25 23 views
0

我有foo.rb和由另一個文件創建的main.rb文件。如何在ruby中傳遞類名作爲變量

foo.rb:

class Foo 
    def initialize 
    @val = 1 
    end 
end 

main.rb的:

file_name = gets.chomp() 
require_relative(file_name) 
class_name = file_name.capitalize 
a = class_name.new() 
p "This is val: #{a.val}" 

但我得到一個錯誤:undefined method新」爲 「Foo.rb」:字符串(NoMethodError)`

我的問題:我如何傳遞類名作爲值。

回答

0

您需要刪除擴展...

class_name = Object.const_get(file_name.capitalize[/^[^.]*/]) 
+0

你不需要*正則表達式* ... :-)我的意思是,我們有專門的方法。 –

+0

您將其標記爲重複,但您正在提供答案 – bjhaid