Sha256: c4a4e8207465b934eb83fc44219916b28d21f450dbced155d7249da28875f992
Contents?: true
Size: 918 Bytes
Versions: 4
Compression:
Stored size: 918 Bytes
Contents
module Yoda module HasServices module ClassMethods # Register a service with the specified name # @params name [String] def service(name, &block) service_hub_class.register_service(name, &block) define_method(:"#{name}_service") { services.public_send(name) } end # @return [Class<ServiceHub>] def service_hub_class @service_hub_class ||= Class.new(ServiceHub) end end class ServiceHub attr_reader :instance def initialize(instance) @instance = instance end def self.register_service(name, &block) define_method(name) do instance.instance_exec(instance, &block) end end end # @return [ServiceHub] def services @services ||= self.class.service_hub_class.new(self) end def self.included(klass) klass.extend ClassMethods end end end
Version data entries
4 entries across 4 versions & 1 rubygems