динамически создавать класс без пространства имен

Я пытаюсь динамически создать класс, используя метод 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

Ответы на вопрос(3)

Ваш ответ на вопрос