module Riveter::AssociatedTypeRegistry::ClassMethods
Public Instance Methods
key_for(type)
click to toggle source
# File lib/riveter/associated_type_registry.rb, line 19 def key_for(type) type.is_a?(Symbol) ? type : type.name.underscore.to_sym end
register_type(type, associated_type, options={})
click to toggle source
# File lib/riveter/associated_type_registry.rb, line 23 def register_type(type, associated_type, options={}) options = { :key => key_for(associated_type) }.merge(options) # prevent duplicate registrations type_list = container.registry[options[:key]] type_list << type unless type_list.include?(type) end
resolve(type)
click to toggle source
# File lib/riveter/associated_type_registry.rb, line 39 def resolve(type) self.resolve_all(type).first end
resolve!(type)
click to toggle source
# File lib/riveter/associated_type_registry.rb, line 33 def resolve!(type) registered = self.resolve(type) raise UnregisteredTypeError.new(type) unless registered registered end
resolve_all(type)
click to toggle source
# File lib/riveter/associated_type_registry.rb, line 43 def resolve_all(type) container.registry[key_for(type)] || [] end