class SequelMapper::LazyObjectProxy

Attributes

known_fields[R]
object_loader[R]

Public Class Methods

new(object_loader, known_fields) click to toggle source
# File lib/sequel_mapper/lazy_object_proxy.rb, line 5
def initialize(object_loader, known_fields)
  @object_loader = object_loader
  @known_fields = known_fields
  @lazy_object = nil
end

Public Instance Methods

__getobj__() click to toggle source
# File lib/sequel_mapper/lazy_object_proxy.rb, line 26
def __getobj__
  lazy_object
end
each_loaded(&block) click to toggle source
# File lib/sequel_mapper/lazy_object_proxy.rb, line 30
def each_loaded(&block)
  [self].select(&:loaded?).each(&block)
end
loaded?() click to toggle source
# File lib/sequel_mapper/lazy_object_proxy.rb, line 22
def loaded?
  !!@lazy_object
end
method_missing(method_id, *args, &block) click to toggle source
# File lib/sequel_mapper/lazy_object_proxy.rb, line 14
def method_missing(method_id, *args, &block)
  if args.empty? && known_fields.include?(method_id)
    known_fields.fetch(method_id)
  else
    lazy_object.public_send(method_id, *args, &block)
  end
end

Private Instance Methods

inspectable_properties() click to toggle source
# File lib/sequel_mapper/lazy_object_proxy.rb, line 44
def inspectable_properties
  [
    :known_fields,
    :lazy_object,
  ]
end
lazy_object() click to toggle source
# File lib/sequel_mapper/lazy_object_proxy.rb, line 40
def lazy_object
  @lazy_object ||= object_loader.call
end
respond_to_missing?(method_id, _include_private = false) click to toggle source
# File lib/sequel_mapper/lazy_object_proxy.rb, line 36
def respond_to_missing?(method_id, _include_private = false)
  known_fields.include?(method_id) || lazy_object.respond_to?(method_id)
end