Class: Taskinator::Persistence::LazyLoader

Inherits:
Delegator
  • Object
show all
Defined in:
lib/taskinator/persistence.rb

Overview

lazily loads the object specified by the type and uuid

Instance Method Summary collapse

Constructor Details

#initialize(type, uuid, instance_cache = {}) ⇒ LazyLoader

NOTE: the instance cached is passed from the first deserializer onto the next one, to prevent needing to keep loading the same objects again.

E.g. this is useful for tasks which refer to their parent processes



675
676
677
678
679
# File 'lib/taskinator/persistence.rb', line 675

def initialize(type, uuid, instance_cache={})
  @type = type
  @uuid = uuid
  @instance_cache = instance_cache
end

Instance Method Details

#__getobj__Object



681
682
683
684
685
# File 'lib/taskinator/persistence.rb', line 681

def __getobj__
  # only fetch the object as needed
  # and memoize for subsequent calls
  @instance ||= @type.fetch(@uuid, @instance_cache)
end