class Polipus::QueueOverflow::MongoQueueCapped

Public Class Methods

new(mongo_db, queue_name, options = {}) click to toggle source
Calls superclass method Polipus::QueueOverflow::MongoQueue::new
# File lib/polipus/queue_overflow/mongo_queue_capped.rb, line 6
def initialize(mongo_db, queue_name, options = {})
  super
  @max = @options[:max]
end

Public Instance Methods

<<(data)
Alias for: push
enc(data)
Alias for: push
push(data) click to toggle source
Calls superclass method Polipus::QueueOverflow::MongoQueue#push
# File lib/polipus/queue_overflow/mongo_queue_capped.rb, line 11
def push(data)
  super
  @semaphore.synchronize do
    s = size
    if s > @max
      docs = @mongo_db[@collection_name].find({}, { sort: { _id: 1 }, fields: [:_id] }).limit(s - @max).map { |e| e['_id'] }
      @mongo_db[@collection_name].remove(:_id => { '$in' => docs }, '$isolated' => 1)
    end
  end
end
Also aliased as: enc, <<