Module: Ohm::Collection

Includes:
Enumerable
Included in:
List, Set
Defined in:
lib/ohm.rb,
lib/ohm/json.rb

Instance Method Summary collapse

Instance Method Details

#eachObject


115
116
117
118
119
120
121
122
123
# File 'lib/ohm.rb', line 115

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)

130
131
132
# File 'lib/ohm.rb', line 130

def empty?
  size == 0
end

#fetch(ids) ⇒ Object

Wraps the whole pipelining functionality.


135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# File 'lib/ohm.rb', line 135

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|
      result << model.new(Utils.dict(atts).update(:id => ids[idx]))
    end
  end
end

#to_aObject

Fetch the data from Redis in one go.


126
127
128
# File 'lib/ohm.rb', line 126

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/ohm/json.rb', line 13

def to_json(*args)
  to_a.to_json(*args)
end