Sha256: a9ea7d726c6a65b8279ef4422812c4dbde31c4d5d6f8eef66677f0a2519f64ac

Contents?: true

Size: 656 Bytes

Versions: 2

Compression:

Stored size: 656 Bytes

Contents

require_relative 'service/base'
require_relative 'service/facebook'
require_relative 'service/twitter'
require_relative 'service/linkedin'

module SocialMedia::Service
  def self.service_classes
    ObjectSpace.each_object(Class).select { |klass| klass < SocialMedia::Service::Base }
  end

  def self.services
    service_classes.map(&:name)
  end

  def self.service name
    service_classes.detect{ |d| d.name == name.to_sym }
  end

  def self.method_missing method_sym, *arguments
    if service_by_name = service(method_sym)
      return service_by_name if arguments.empty?
      service_by_name.new *arguments
    else
      super
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
social_media-0.0.3 lib/social_media/service.rb
social_media-0.0.1 lib/social_media/service.rb