Class: ModelFact::Registry
- Inherits:
-
Object
- Object
- ModelFact::Registry
- Includes:
- Singleton, TR::CondUtils
- Defined in:
- lib/model_fact/registry.rb
Instance Method Summary collapse
- #find(id) ⇒ Object
- #is_alias_registered?(als) ⇒ Boolean
- #is_registered?(id) ⇒ Boolean
- #on_event(id, event, opts = {}, &block) ⇒ Object
-
#register(id, cls, opts = { }) ⇒ Object
To be called by application developer during startup to match which model to give to application This is configuration per se like on which ‘database adapter’ to go.
Instance Method Details
#find(id) ⇒ Object
48 49 50 51 52 53 54 55 56 57 |
# File 'lib/model_fact/registry.rb', line 48 def find(id) if is_registered?(id) idCls[id][:target] elsif is_alias_registered?(id) indx = aliases[id] idCls[indx][:target] else nil end end |
#is_alias_registered?(als) ⇒ Boolean
44 45 46 |
# File 'lib/model_fact/registry.rb', line 44 def is_alias_registered?(als) aliases.keys.include?(als) end |
#is_registered?(id) ⇒ Boolean
40 41 42 |
# File 'lib/model_fact/registry.rb', line 40 def is_registered?(id) idCls.keys.include?(id) end |
#on_event(id, event, opts = {}, &block) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/model_fact/registry.rb', line 59 def on_event(id, event ,opts = {}, &block) inst = find(id) if not_empty?(inst) hasMethod = inst.respond_to?(:on_event) if hasMethod inst.on_event(event,opts,&block) true else logger.warn "Instance '#{id}' does not have method on_event" false end else false end end |
#register(id, cls, opts = { }) ⇒ Object
To be called by application developer during startup to match which model to give to application This is configuration per se like on which ‘database adapter’ to go
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/model_fact/registry.rb', line 14 def register(id, cls, opts = { }) opts = { } if opts.nil? overwrite = opts[:overwrite] overwrite = false if is_empty?(overwrite) or not_bool?(overwrite) raise InvalidParamValue, "Given ID is nil or empty" if is_empty?(id) raise InvalidParamValue, "Given class is nil or empty" if is_empty?(cls) raise DuplicatedIDException, "Given ID '#{id}' already registered" if is_registered?(id) idCls[id] = { target: cls } als = opts[:alias] if not_empty?(als) if is_alias_registered?(als) and not overwrite raise DuplicatedIDException, "Given alias '#{als}' already registered" else aliases[als] = id end end cls end |