Module: Sohm::Collection

Includes:
Enumerable
Included in:
BasicSet, List
Defined in:
lib/sohm.rb,
lib/sohm/json.rb

Instance Method Summary collapse

Instance Method Details

#eachObject



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

Returns:

  • (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_aObject

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