class Github::ApiFactory
def self.convert_to_constant(classes)
Convert name to constant
def self.convert_to_constant(classes) classes.split('::').inject(Github) do |constant, klass| constant.const_get klass end end
def self.create_instance(klass, options, &block)
Passes configuration options to instantiated class
def self.create_instance(klass, options, &block) options.symbolize_keys! convert_to_constant(klass.to_s).new options, &block end
def self.new(klass, options={}, &block)
Instantiates a new github api object
def self.new(klass, options={}, &block) return create_instance(klass, options, &block) if klass raise ArgumentError, 'must provide API class to be instantiated' end