class PublicIp::Service::Registry

Attributes

service_database[R]

Public Class Methods

[](service) click to toggle source
# File lib/public_ip/service/registry.rb, line 15
def self.[](service)
  instance[service]
end
available_services() click to toggle source
# File lib/public_ip/service/registry.rb, line 23
def self.available_services
  instance.available_services
end
new() click to toggle source
# File lib/public_ip/service/registry.rb, line 47
def initialize
  @service_database = {}
end
random_service() click to toggle source
# File lib/public_ip/service/registry.rb, line 19
def self.random_service
  instance.random_service
end
register_service(service_class) click to toggle source
# File lib/public_ip/service/registry.rb, line 10
def self.register_service(service_class)
  return if instance.service_database.key?(service_class.symbol)
  instance.service_database[service_class.symbol] = service_class
end

Public Instance Methods

[](service) click to toggle source
# File lib/public_ip/service/registry.rb, line 27
def [](service)
  require "public_ip/service/#{service}"
  service_database[service]
rescue LoadError
  raise PublicIp::UnknownService, "Service #{service} is not a valid service"
end
available_services() click to toggle source
# File lib/public_ip/service/registry.rb, line 40
def available_services
  register_all_services
  service_database
end
random_service() click to toggle source
# File lib/public_ip/service/registry.rb, line 34
def random_service
  register_all_services

  service_database.values.sample
end

Private Instance Methods

register_all_services() click to toggle source
# File lib/public_ip/service/registry.rb, line 51
def register_all_services
  path = File.join(File.dirname(__FILE__), '*.rb')
  Dir[path].each { |file| require file }
end