Module: Sohm::Collection
Instance Method Summary collapse
- #each ⇒ Object
- #empty? ⇒ Boolean
-
#fetch(ids) ⇒ Object
Wraps the whole pipelining functionality.
-
#to_a ⇒ Object
Fetch the data from Redis in one go.
-
#to_json(*args) ⇒ Object
Sugar for to_a.to_json for all types of Sets.
Instance Method Details
#each ⇒ Object
139 140 141 142 143 144 145 146 147 |
# File 'lib/sohm.rb', line 139 def each if block_given? ids.each_slice(1000) do |slice| fetch(slice).each { |e| yield(e) } end else to_enum end end |
#empty? ⇒ Boolean
154 155 156 |
# File 'lib/sohm.rb', line 154 def empty? size == 0 end |
#fetch(ids) ⇒ Object
Wraps the whole pipelining functionality.
159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 |
# File 'lib/sohm.rb', line 159 def fetch(ids) data = nil model.synchronize do ids.each do |id| redis.queue("HGETALL", namespace[id]) end data = redis.commit end return [] if data.nil? [].tap do |result| data.each_with_index do |atts, idx| if atts.is_a?(Array) && atts.size > 0 result << model.new(Utils.dict(atts).update(:id => ids[idx])) end end end end |
#to_a ⇒ Object
Fetch the data from Redis in one go.
150 151 152 |
# File 'lib/sohm.rb', line 150 def to_a fetch(ids) end |
#to_json(*args) ⇒ Object
Sugar for to_a.to_json for all types of Sets
13 14 15 |
# File 'lib/sohm/json.rb', line 13 def to_json(*args) to_a.to_json(*args) end |