динамически создавать класс без пространства имен
Я пытаюсь динамически создать класс, используя метод eval. Работает нормально, за исключением одной маленькой проблемы. Как показывает мой код, я создаю класс Browser внутри класса BrowserFactory. Когда я делаю это, класс Browser имеет добавленное пространство имен BrowserFactory. Есть ли способ оценить класс Browser из строки без присоединенного пространства имен BrowserFactory?
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