criar dinamicamente uma classe sem um espaço para nome
Estou tentando criar dinamicamente uma classe usando o método eval. Está funcionando bem, exceto por um pequeno problema. Como meu código mostra, estou criando a classe Browser dentro da classe BrowserFactory. Quando faço isso, a classe Browser possui um namespace adicionado de BrowserFactory. Existe alguma maneira de avaliar a classe Browser a partir de uma seqüência de caracteres sem o namespace BrowserFactory ser anexado?
class BrowserFactory
def self.create_browser(browser)
super_class = nil
case browser
when 'IE'
require 'watir'
super_class = 'Watir::IE'
when 'celerity'
require 'celerity'
super_class = 'Celerity::Browser'
end
raise StandardError.new("Browser '#{browser}' is not currentlys supported") if super_class.nil?
eval <<EOS
class Browser < #{super_class}
include Singleton
include BrowserModification
end
EOS
return Browser.instance
end
end