2012-05-12 2 views

ответ

5

Вы можете использовать const_get:

instance = Object.const_get(classname).new 
instance.perform 
2

Да, это possible-

class Foo 
    def perform 
    puts 'hello' 
    end 
end 

f = 'Foo' 

klass = Object.const_get f 

f.new.perform 
2

Вы можете использовать Module#const_get

klass = Object.const_get(classname) 
instance = klass.new 

Но вы можете добавить в белый список имя класса первым, если он идет от пользовательского ввода. В противном случае вы потенциально открываете дыру в безопасности.

Смежные вопросы