class Terrestrial::LazyObjectProxy
TODO: This should do a better job of showing what will be loaded when it is inspected
Attributes
object_loader[R]
Public Class Methods
new(object_loader, key_fields)
click to toggle source
# File lib/terrestrial/lazy_object_proxy.rb, line 6 def initialize(object_loader, key_fields) @object_loader = object_loader @key_fields = key_fields @lazy_object = nil end
Public Instance Methods
__getobj__()
click to toggle source
# File lib/terrestrial/lazy_object_proxy.rb, line 27 def __getobj__ lazy_object end
__key_fields()
click to toggle source
# File lib/terrestrial/lazy_object_proxy.rb, line 35 def __key_fields @key_fields end
each_loaded(&block)
click to toggle source
# File lib/terrestrial/lazy_object_proxy.rb, line 31 def each_loaded(&block) [self].each(&block) end
loaded?()
click to toggle source
# File lib/terrestrial/lazy_object_proxy.rb, line 23 def loaded? !!@lazy_object end
method_missing(method_id, *args, &block)
click to toggle source
# File lib/terrestrial/lazy_object_proxy.rb, line 15 def method_missing(method_id, *args, &block) if args.empty? && __key_fields.include?(method_id) __key_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/terrestrial/lazy_object_proxy.rb, line 49 def inspectable_properties [ :key_fields, :lazy_object, ] end
lazy_object()
click to toggle source
# File lib/terrestrial/lazy_object_proxy.rb, line 45 def lazy_object @lazy_object ||= object_loader.call end
respond_to_missing?(method_id, _include_private = false)
click to toggle source
# File lib/terrestrial/lazy_object_proxy.rb, line 41 def respond_to_missing?(method_id, _include_private = false) __key_fields.include?(method_id) || lazy_object.respond_to?(method_id) end