class Terrestrial::LazyCollection
Attributes
database_enum[R]
loader[R]
queries[R]
Public Class Methods
new(database_enum, loader, queries)
click to toggle source
# File lib/terrestrial/lazy_collection.rb, line 8 def initialize(database_enum, loader, queries) @database_enum = database_enum @loader = loader @queries = queries @loaded = false end
Public Instance Methods
each(&block)
click to toggle source
# File lib/terrestrial/lazy_collection.rb, line 34 def each(&block) enum.each(&block) end
each_loaded(&block)
click to toggle source
# File lib/terrestrial/lazy_collection.rb, line 38 def each_loaded(&block) loaded_objects.each(&block) end
subset(name, *params)
click to toggle source
# File lib/terrestrial/lazy_collection.rb, line 22 def subset(name, *params) self.class.new( queries.execute(database_enum, name, *params), loader, queries, ) end
to_ary()
click to toggle source
# File lib/terrestrial/lazy_collection.rb, line 30 def to_ary to_a end
where(criteria)
click to toggle source
# File lib/terrestrial/lazy_collection.rb, line 18 def where(criteria) self.class.new(database_enum.where(criteria), loader, queries) end
Private Instance Methods
enum()
click to toggle source
# File lib/terrestrial/lazy_collection.rb, line 44 def enum @enum ||= Enumerator.new { |yielder| loaded_objects.each do |obj| yielder.yield(obj) end loop do object_enum.next.tap { |obj| loaded_objects.push(obj) yielder.yield(obj) } end } end
inspectable_properties()
click to toggle source
# File lib/terrestrial/lazy_collection.rb, line 67 def inspectable_properties [ :database_enum, :loaded, ] end
loaded_objects()
click to toggle source
# File lib/terrestrial/lazy_collection.rb, line 63 def loaded_objects @loaded_objects ||= [] end
object_enum()
click to toggle source
# File lib/terrestrial/lazy_collection.rb, line 59 def object_enum @object_enum ||= database_enum.lazy.map(&loader) end