queuel 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile.lock +1 -1
- data/README.md +7 -1
- data/config/s3_example.yml +9 -0
- data/lib/queuel/base/engine.rb +2 -0
- data/lib/queuel/base/queue.rb +4 -0
- data/lib/queuel/iron_mq/queue.rb +4 -0
- data/lib/queuel/sqs/engine.rb +5 -0
- data/lib/queuel/sqs/message.rb +62 -3
- data/lib/queuel/sqs/queue.rb +20 -0
- data/lib/queuel/version.rb +1 -1
- data/spec/lib/queuel/base/queue_spec.rb +1 -1
- data/spec/lib/queuel/iron_mq/queue_spec.rb +28 -0
- data/spec/lib/queuel/sqs/message_spec.rb +23 -2
- data/spec/lib/queuel/sqs/queue_spec.rb +23 -3
- data/spec/support/queue_shared_example.rb +3 -16
- metadata +52 -5
- checksums.yaml +0 -15
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -7,6 +7,7 @@ | |
| 7 7 | 
             
            Queuel is a kewl, lite wrapper around Queue interfaces. Currently it implements:
         | 
| 8 8 |  | 
| 9 9 | 
             
            * IronMQ
         | 
| 10 | 
            +
            * Amazon SQS
         | 
| 10 11 | 
             
            * Null pattern
         | 
| 11 12 |  | 
| 12 13 | 
             
            Each of these should reliably implement:
         | 
| @@ -89,6 +90,11 @@ Queuel.receive break_if_nil: true do |message| | |
| 89 90 | 
             
            end
         | 
| 90 91 | 
             
            ```
         | 
| 91 92 |  | 
| 93 | 
            +
            Notes specific to the SQS engine:
         | 
| 94 | 
            +
            A config should be added to provide `bucket_name`, `max_bytesize`, `access_key`
         | 
| 95 | 
            +
            and `secret_access_key`. Without these, messages over the max_bytesize setting
         | 
| 96 | 
            +
            (defaults to 64kb) will be dropped from the queue.
         | 
| 97 | 
            +
             | 
| 92 98 | 
             
            #### Caveats of the receiver
         | 
| 93 99 |  | 
| 94 100 | 
             
            * Your block must return true in order to not replace the message to the Queue
         | 
| @@ -105,7 +111,7 @@ message.delete    # => Delete the message | |
| 105 111 | 
             
            #### Parsing
         | 
| 106 112 |  | 
| 107 113 | 
             
            Queuel uses [MultiJson](https://github.com/intridea/multi_json) to provide
         | 
| 108 | 
            -
            some auto-message decoding/ | 
| 114 | 
            +
            some auto-message decoding/encoding features. With MultiJson you may install your own engine
         | 
| 109 115 | 
             
            (like [Oj](https://github.com/ohler55/oj)).
         | 
| 110 116 |  | 
| 111 117 | 
             
            Because of the parsing given, you will default to encoding and decoding JSON:
         | 
    
        data/lib/queuel/base/engine.rb
    CHANGED
    
    | @@ -12,6 +12,7 @@ module Queuel | |
| 12 12 |  | 
| 13 13 | 
             
                  def initialize(credentials = {})
         | 
| 14 14 | 
             
                    self.credentials = credentials
         | 
| 15 | 
            +
                    self.bucket_name = credentials[:bucket_name]
         | 
| 15 16 | 
             
                    self.memoized_queues = {}
         | 
| 16 17 | 
             
                  end
         | 
| 17 18 |  | 
| @@ -21,6 +22,7 @@ module Queuel | |
| 21 22 |  | 
| 22 23 | 
             
                  private
         | 
| 23 24 | 
             
                  attr_accessor :credentials
         | 
| 25 | 
            +
                  attr_accessor :bucket_name
         | 
| 24 26 | 
             
                  attr_accessor :memoized_queues
         | 
| 25 27 |  | 
| 26 28 | 
             
                  def client
         | 
    
        data/lib/queuel/base/queue.rb
    CHANGED
    
    
    
        data/lib/queuel/iron_mq/queue.rb
    CHANGED
    
    
    
        data/lib/queuel/sqs/engine.rb
    CHANGED
    
    | @@ -7,8 +7,13 @@ module Queuel | |
| 7 7 |  | 
| 8 8 | 
             
                  AWSSDKMissingError = Class.new(StandardError)
         | 
| 9 9 |  | 
| 10 | 
            +
                  def queue(which_queue)
         | 
| 11 | 
            +
                    memoized_queues[which_queue.to_s] ||= queue_klass.new(client, which_queue, credentials)
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
             | 
| 10 14 | 
             
                  private
         | 
| 11 15 |  | 
| 16 | 
            +
             | 
| 12 17 | 
             
                  def client_klass
         | 
| 13 18 | 
             
                    if defined?(::AWS::SQS)
         | 
| 14 19 | 
             
                      ::AWS::SQS
         | 
    
        data/lib/queuel/sqs/message.rb
    CHANGED
    
    | @@ -1,10 +1,69 @@ | |
| 1 1 | 
             
            module Queuel
         | 
| 2 2 | 
             
              module SQS
         | 
| 3 3 | 
             
                class Message < Base::Message
         | 
| 4 | 
            +
                  # if message_object exists (not nil), receive the data, otherwise push
         | 
| 4 5 | 
             
                  def raw_body
         | 
| 5 | 
            -
                    @raw_body  | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 6 | 
            +
                    @raw_body ||= message_object.nil? ? push_message : pull_message
         | 
| 7 | 
            +
                  end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  def generate_key
         | 
| 10 | 
            +
                    key = [
         | 
| 11 | 
            +
                      (Time.now.to_f * 10000).to_i,
         | 
| 12 | 
            +
                      SecureRandom.urlsafe_base64,
         | 
| 13 | 
            +
                      Thread.current.object_id
         | 
| 14 | 
            +
                    ].join('-')
         | 
| 15 | 
            +
                    key
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  def push_message
         | 
| 19 | 
            +
                    if encoded_body.bytesize > max_bytesize
         | 
| 20 | 
            +
                      key = generate_key
         | 
| 21 | 
            +
                      write_to_s3(encoded_body, key)
         | 
| 22 | 
            +
                      self.body = { 'queuel_s3_object' => key }
         | 
| 23 | 
            +
                    end
         | 
| 24 | 
            +
                    encoded_body
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  def pull_message
         | 
| 28 | 
            +
                    begin
         | 
| 29 | 
            +
                      decoded_body = JSON.parse(message_object.body)
         | 
| 30 | 
            +
                      if decoded_body.key?('queuel_s3_object')
         | 
| 31 | 
            +
                        read_from_s3 decoded_body[:queuel_s3_object]
         | 
| 32 | 
            +
                      else
         | 
| 33 | 
            +
                        message_object.body
         | 
| 34 | 
            +
                      end
         | 
| 35 | 
            +
                    rescue ::JSON::ParserError, TypeError
         | 
| 36 | 
            +
                      raw_body_with_sns_check
         | 
| 37 | 
            +
                    end
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                  def max_bytesize
         | 
| 41 | 
            +
                    options[:max_bytesize] || 64 * 1024
         | 
| 42 | 
            +
                  end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                  def self.s3
         | 
| 45 | 
            +
                    @s3 ||= AWS::S3.new(
         | 
| 46 | 
            +
                              :access_key_id => options[:access_token],
         | 
| 47 | 
            +
                              :secret_access_key => options[:secret_access_token] )
         | 
| 48 | 
            +
                  end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                  def read_from_s3 key
         | 
| 51 | 
            +
                    object = s3.buckets[options[:bucket_name]].objects[key]
         | 
| 52 | 
            +
                    object.read
         | 
| 53 | 
            +
                  end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                  # this assumes you've set up some rules for file expiration on your
         | 
| 56 | 
            +
                  # configured bucket.
         | 
| 57 | 
            +
                  def write_to_s3(message, key)
         | 
| 58 | 
            +
                    begin
         | 
| 59 | 
            +
                      my_bucket = s3.buckets[options[:bucket_name]]
         | 
| 60 | 
            +
                      my_bucket.objects[key].write(message)
         | 
| 61 | 
            +
                    rescue
         | 
| 62 | 
            +
                      raise BucketDoesNotExistError, "Bucket has either expired or does not exist"
         | 
| 63 | 
            +
                    end
         | 
| 64 | 
            +
                  end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                  class BucketDoesNotExistError < StandardError
         | 
| 8 67 | 
             
                  end
         | 
| 9 68 |  | 
| 10 69 | 
             
                  def delete
         | 
    
        data/lib/queuel/sqs/queue.rb
    CHANGED
    
    | @@ -5,6 +5,15 @@ module Queuel | |
| 5 5 | 
             
                class Queue < Base::Queue
         | 
| 6 6 | 
             
                  extend Forwardable
         | 
| 7 7 |  | 
| 8 | 
            +
                  attr_accessor :credentials
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  def initialize(client, queue_name, credentials={})
         | 
| 11 | 
            +
                    self.client = client
         | 
| 12 | 
            +
                    self.name = queue_name
         | 
| 13 | 
            +
                    self.credentials = credentials
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
             | 
| 8 17 | 
             
                  def push(message, options = {})
         | 
| 9 18 | 
             
                    queue_connection.send_message build_push_message(message, options)
         | 
| 10 19 | 
             
                  end
         | 
| @@ -13,7 +22,18 @@ module Queuel | |
| 13 22 | 
             
                    queue_connection.approximate_number_of_messages
         | 
| 14 23 | 
             
                  end
         | 
| 15 24 |  | 
| 25 | 
            +
                  def size
         | 
| 26 | 
            +
                    approximate_number_of_messages
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
             | 
| 16 29 | 
             
                  private
         | 
| 30 | 
            +
             | 
| 31 | 
            +
             | 
| 32 | 
            +
                  def build_new_message(bare_message, options = {})
         | 
| 33 | 
            +
                    message_klass.new(bare_message, credentials)
         | 
| 34 | 
            +
                  end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
             | 
| 17 37 | 
             
                  def pop_bare_message(options = {})
         | 
| 18 38 | 
             
                    queue_connection.receive_message options
         | 
| 19 39 | 
             
                  end
         | 
    
        data/lib/queuel/version.rb
    CHANGED
    
    
| @@ -2,9 +2,37 @@ require 'spec_helper' | |
| 2 2 | 
             
            module Queuel
         | 
| 3 3 | 
             
              module IronMq
         | 
| 4 4 | 
             
                describe Queue do
         | 
| 5 | 
            +
                  let(:message) { double "Message", body: "uhuh" }
         | 
| 6 | 
            +
                  let(:client) { double "ClientObject" }
         | 
| 7 | 
            +
                  let(:name) { "venues queue" }
         | 
| 5 8 | 
             
                  let(:queue_object_with_message) { double "QueueObject", get: message, peek: [message] }
         | 
| 6 9 | 
             
                  let(:queue_object_with_nil_message) { double "QueueObject", get: nil, peek: nil }
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  subject do
         | 
| 12 | 
            +
                    described_class.new client, name
         | 
| 13 | 
            +
                  end
         | 
| 14 | 
            +
             | 
| 7 15 | 
             
                  it_should_behave_like "a queue"
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  describe "size" do
         | 
| 18 | 
            +
                    it "should check the queue_connection for size" do
         | 
| 19 | 
            +
                      client.stub queue: queue_object_with_message
         | 
| 20 | 
            +
                      queue_object_with_message.should_receive(:size)
         | 
| 21 | 
            +
                      subject.size
         | 
| 22 | 
            +
                    end
         | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                  describe "peek" do
         | 
| 26 | 
            +
                    before do
         | 
| 27 | 
            +
                      not_for_null do
         | 
| 28 | 
            +
                        client.stub queue: queue_object_with_message
         | 
| 29 | 
            +
                      end
         | 
| 30 | 
            +
                    end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                    it "should take options and return an array" do
         | 
| 33 | 
            +
                      subject.peek(option: true).should be_an Array
         | 
| 34 | 
            +
                    end
         | 
| 35 | 
            +
                  end
         | 
| 8 36 | 
             
                end
         | 
| 9 37 | 
             
              end
         | 
| 10 38 | 
             
            end
         | 
| @@ -13,12 +13,33 @@ module Queuel | |
| 13 13 | 
             
                    before do
         | 
| 14 14 | 
             
                      subject.stub decode_body?: false
         | 
| 15 15 | 
             
                      message_object.stub(:as_sns_message).and_raise ::JSON::ParserError
         | 
| 16 | 
            +
                      Queuel.configure { engine :sqs }
         | 
| 16 17 | 
             
                    end
         | 
| 17 18 |  | 
| 18 19 | 
             
                    its(:id) { should == 1 }
         | 
| 19 20 | 
             
                    its(:body) { should == "body" }
         | 
| 20 21 | 
             
                    its(:queue) { should == queue_double }
         | 
| 21 22 |  | 
| 23 | 
            +
                    describe "when pulling an oversized message" do
         | 
| 24 | 
            +
                      let(:body) { '{"queuel_s3_object": "whatever" }' }
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                      it "should call read_from_s3" do
         | 
| 27 | 
            +
                        subject.should_receive(:read_from_s3)
         | 
| 28 | 
            +
                        subject.raw_body
         | 
| 29 | 
            +
                      end
         | 
| 30 | 
            +
                    end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                    describe "when pushing an oversized json hash" do
         | 
| 33 | 
            +
                      before do
         | 
| 34 | 
            +
                        subject.send("message_object=", nil)
         | 
| 35 | 
            +
                        subject.stub(:encoded_body).and_return double("body", bytesize: subject.max_bytesize+1)
         | 
| 36 | 
            +
                      end
         | 
| 37 | 
            +
                      it "should call write_to_s3" do
         | 
| 38 | 
            +
                        subject.should_receive(:write_to_s3)
         | 
| 39 | 
            +
                        subject.raw_body
         | 
| 40 | 
            +
                      end
         | 
| 41 | 
            +
                    end
         | 
| 42 | 
            +
             | 
| 22 43 | 
             
                    describe "with json" do
         | 
| 23 44 | 
             
                      let(:body) { '{"username":"jon"}' }
         | 
| 24 45 | 
             
                      before do
         | 
| @@ -30,14 +51,14 @@ module Queuel | |
| 30 51 | 
             
                    end
         | 
| 31 52 |  | 
| 32 53 | 
             
                    describe "with valid SNS message" do
         | 
| 33 | 
            -
                      let(:sns_body) { "Hello From SNS"}
         | 
| 54 | 
            +
                      let(:sns_body) { "Hello From SNS" }
         | 
| 34 55 | 
             
                      before do
         | 
| 35 56 | 
             
                        message_object.stub(:as_sns_message).and_return double("SNSMessage", body: sns_body)
         | 
| 36 57 | 
             
                      end
         | 
| 37 58 | 
             
                      its(:raw_body) { should == sns_body }
         | 
| 38 59 | 
             
                      its(:raw_body) { should_not == message_object.body}
         | 
| 39 60 |  | 
| 40 | 
            -
                      describe " | 
| 61 | 
            +
                      describe "which is json" do
         | 
| 41 62 | 
             
                        let(:sns_body) { '{"username":"jon"}' }
         | 
| 42 63 | 
             
                        before do
         | 
| 43 64 | 
             
                          subject.stub decode_body?: true
         | 
| @@ -1,11 +1,31 @@ | |
| 1 1 | 
             
            require 'spec_helper'
         | 
| 2 2 | 
             
            module Queuel
         | 
| 3 | 
            -
              module  | 
| 3 | 
            +
              module SQS
         | 
| 4 4 | 
             
                describe Queue do
         | 
| 5 | 
            -
                  let(: | 
| 6 | 
            -
                  let(: | 
| 5 | 
            +
                  let(:message) { double "Message", body: "uhuh" }
         | 
| 6 | 
            +
                  let(:client) { double "ClientObject" }
         | 
| 7 | 
            +
                  let(:name) { "venues queue" }
         | 
| 8 | 
            +
                  let(:credentials) {{ access_key: "none", secret_access_key: "none" }}
         | 
| 9 | 
            +
                  let(:queue_object_with_message) { double "QueueObject", get: message, receive_message: message }
         | 
| 10 | 
            +
                  let(:queue_object_with_nil_message) { double "QueueObject", get: nil, receive_message: nil }
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  subject do
         | 
| 13 | 
            +
                    described_class.new client, name, credentials
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  before do
         | 
| 17 | 
            +
                    message.stub_chain :as_sns_message, body: "uhuh"
         | 
| 18 | 
            +
                    client.stub_chain :queues, named: queue_object_with_message
         | 
| 19 | 
            +
                  end
         | 
| 7 20 |  | 
| 8 21 | 
             
                  it_should_behave_like "a queue"
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  describe "size" do
         | 
| 24 | 
            +
                    it "should check the queue_connection's approximate_number_of_messages for size" do
         | 
| 25 | 
            +
                      queue_object_with_message.should_receive :approximate_number_of_messages
         | 
| 26 | 
            +
                      subject.size
         | 
| 27 | 
            +
                    end
         | 
| 28 | 
            +
                  end
         | 
| 9 29 | 
             
                end
         | 
| 10 30 | 
             
              end
         | 
| 11 31 | 
             
            end
         | 
| @@ -7,29 +7,16 @@ shared_examples "a queue" do | |
| 7 7 | 
             
              end
         | 
| 8 8 |  | 
| 9 9 | 
             
              # Poller object handles this
         | 
| 10 | 
            -
              it { should respond_to :receive }
         | 
| 11 10 | 
             
              it { should respond_to :push }
         | 
| 12 11 | 
             
              it { should respond_to :pop }
         | 
| 13 | 
            -
              it { should respond_to : | 
| 14 | 
            -
             | 
| 15 | 
            -
              describe "peek" do
         | 
| 16 | 
            -
                before do
         | 
| 17 | 
            -
                  not_for_null do
         | 
| 18 | 
            -
                    client.stub queue: queue_object_with_message
         | 
| 19 | 
            -
                  end
         | 
| 20 | 
            -
                end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                it "should take options and return an array" do
         | 
| 23 | 
            -
                  subject.peek(option: true).should be_an Array
         | 
| 24 | 
            -
                end
         | 
| 25 | 
            -
              end
         | 
| 12 | 
            +
              it { should respond_to :size }
         | 
| 26 13 |  | 
| 27 14 | 
             
              describe "pop" do
         | 
| 28 15 | 
             
                describe "with messages" do
         | 
| 29 16 | 
             
                  before do
         | 
| 30 17 | 
             
                    not_for_null do
         | 
| 31 18 | 
             
                      client.stub queue: queue_object_with_message
         | 
| 32 | 
            -
                      client. | 
| 19 | 
            +
                      client.stub_chain :queues, named: queue_object_with_message
         | 
| 33 20 | 
             
                    end
         | 
| 34 21 | 
             
                  end
         | 
| 35 22 |  | 
| @@ -52,7 +39,7 @@ shared_examples "a queue" do | |
| 52 39 | 
             
                before do
         | 
| 53 40 | 
             
                  not_for_null do
         | 
| 54 41 | 
             
                    client.stub queue: queue_object_with_nil_message
         | 
| 55 | 
            -
                    client. | 
| 42 | 
            +
                    client.stub_chain :queues, named: queue_object_with_nil_message
         | 
| 56 43 | 
             
                  end
         | 
| 57 44 | 
             
                end
         | 
| 58 45 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,18 +1,20 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: queuel
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.4.0
         | 
| 5 | 
            +
              prerelease: 
         | 
| 5 6 | 
             
            platform: ruby
         | 
| 6 7 | 
             
            authors:
         | 
| 7 8 | 
             
            - Jon Phenow
         | 
| 8 9 | 
             
            autorequire: 
         | 
| 9 10 | 
             
            bindir: bin
         | 
| 10 11 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2014- | 
| 12 | 
            +
            date: 2014-04-07 00:00:00.000000000 Z
         | 
| 12 13 | 
             
            dependencies:
         | 
| 13 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 15 | 
             
              name: bundler
         | 
| 15 16 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 17 | 
            +
                none: false
         | 
| 16 18 | 
             
                requirements:
         | 
| 17 19 | 
             
                - - ~>
         | 
| 18 20 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -20,6 +22,7 @@ dependencies: | |
| 20 22 | 
             
              type: :development
         | 
| 21 23 | 
             
              prerelease: false
         | 
| 22 24 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 25 | 
            +
                none: false
         | 
| 23 26 | 
             
                requirements:
         | 
| 24 27 | 
             
                - - ~>
         | 
| 25 28 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -27,6 +30,7 @@ dependencies: | |
| 27 30 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 31 | 
             
              name: rake
         | 
| 29 32 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 33 | 
            +
                none: false
         | 
| 30 34 | 
             
                requirements:
         | 
| 31 35 | 
             
                - - ! '>='
         | 
| 32 36 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -34,6 +38,7 @@ dependencies: | |
| 34 38 | 
             
              type: :development
         | 
| 35 39 | 
             
              prerelease: false
         | 
| 36 40 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 41 | 
            +
                none: false
         | 
| 37 42 | 
             
                requirements:
         | 
| 38 43 | 
             
                - - ! '>='
         | 
| 39 44 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -41,6 +46,7 @@ dependencies: | |
| 41 46 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 47 | 
             
              name: rspec
         | 
| 43 48 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 49 | 
            +
                none: false
         | 
| 44 50 | 
             
                requirements:
         | 
| 45 51 | 
             
                - - ! '>='
         | 
| 46 52 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -48,6 +54,7 @@ dependencies: | |
| 48 54 | 
             
              type: :development
         | 
| 49 55 | 
             
              prerelease: false
         | 
| 50 56 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 57 | 
            +
                none: false
         | 
| 51 58 | 
             
                requirements:
         | 
| 52 59 | 
             
                - - ! '>='
         | 
| 53 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -55,6 +62,7 @@ dependencies: | |
| 55 62 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 63 | 
             
              name: simplecov
         | 
| 57 64 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 65 | 
            +
                none: false
         | 
| 58 66 | 
             
                requirements:
         | 
| 59 67 | 
             
                - - ! '>='
         | 
| 60 68 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -62,6 +70,7 @@ dependencies: | |
| 62 70 | 
             
              type: :development
         | 
| 63 71 | 
             
              prerelease: false
         | 
| 64 72 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 73 | 
            +
                none: false
         | 
| 65 74 | 
             
                requirements:
         | 
| 66 75 | 
             
                - - ! '>='
         | 
| 67 76 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -69,6 +78,7 @@ dependencies: | |
| 69 78 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 79 | 
             
              name: iron_mq
         | 
| 71 80 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 81 | 
            +
                none: false
         | 
| 72 82 | 
             
                requirements:
         | 
| 73 83 | 
             
                - - ! '>='
         | 
| 74 84 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -76,6 +86,7 @@ dependencies: | |
| 76 86 | 
             
              type: :development
         | 
| 77 87 | 
             
              prerelease: false
         | 
| 78 88 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 89 | 
            +
                none: false
         | 
| 79 90 | 
             
                requirements:
         | 
| 80 91 | 
             
                - - ! '>='
         | 
| 81 92 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -83,6 +94,7 @@ dependencies: | |
| 83 94 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 95 | 
             
              name: typhoeus
         | 
| 85 96 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 97 | 
            +
                none: false
         | 
| 86 98 | 
             
                requirements:
         | 
| 87 99 | 
             
                - - ! '>='
         | 
| 88 100 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -90,6 +102,7 @@ dependencies: | |
| 90 102 | 
             
              type: :development
         | 
| 91 103 | 
             
              prerelease: false
         | 
| 92 104 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 105 | 
            +
                none: false
         | 
| 93 106 | 
             
                requirements:
         | 
| 94 107 | 
             
                - - ! '>='
         | 
| 95 108 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -97,6 +110,7 @@ dependencies: | |
| 97 110 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 98 111 | 
             
              name: aws-sdk
         | 
| 99 112 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 113 | 
            +
                none: false
         | 
| 100 114 | 
             
                requirements:
         | 
| 101 115 | 
             
                - - ! '>='
         | 
| 102 116 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -104,6 +118,7 @@ dependencies: | |
| 104 118 | 
             
              type: :development
         | 
| 105 119 | 
             
              prerelease: false
         | 
| 106 120 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 121 | 
            +
                none: false
         | 
| 107 122 | 
             
                requirements:
         | 
| 108 123 | 
             
                - - ! '>='
         | 
| 109 124 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -111,6 +126,7 @@ dependencies: | |
| 111 126 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 112 127 | 
             
              name: guard-bundler
         | 
| 113 128 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 129 | 
            +
                none: false
         | 
| 114 130 | 
             
                requirements:
         | 
| 115 131 | 
             
                - - ! '>='
         | 
| 116 132 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -118,6 +134,7 @@ dependencies: | |
| 118 134 | 
             
              type: :development
         | 
| 119 135 | 
             
              prerelease: false
         | 
| 120 136 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 137 | 
            +
                none: false
         | 
| 121 138 | 
             
                requirements:
         | 
| 122 139 | 
             
                - - ! '>='
         | 
| 123 140 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -125,6 +142,7 @@ dependencies: | |
| 125 142 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 126 143 | 
             
              name: guard-rspec
         | 
| 127 144 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 145 | 
            +
                none: false
         | 
| 128 146 | 
             
                requirements:
         | 
| 129 147 | 
             
                - - ! '>='
         | 
| 130 148 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -132,6 +150,7 @@ dependencies: | |
| 132 150 | 
             
              type: :development
         | 
| 133 151 | 
             
              prerelease: false
         | 
| 134 152 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 153 | 
            +
                none: false
         | 
| 135 154 | 
             
                requirements:
         | 
| 136 155 | 
             
                - - ! '>='
         | 
| 137 156 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -139,6 +158,7 @@ dependencies: | |
| 139 158 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 140 159 | 
             
              name: guard-cane
         | 
| 141 160 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 161 | 
            +
                none: false
         | 
| 142 162 | 
             
                requirements:
         | 
| 143 163 | 
             
                - - ! '>='
         | 
| 144 164 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -146,6 +166,7 @@ dependencies: | |
| 146 166 | 
             
              type: :development
         | 
| 147 167 | 
             
              prerelease: false
         | 
| 148 168 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 169 | 
            +
                none: false
         | 
| 149 170 | 
             
                requirements:
         | 
| 150 171 | 
             
                - - ! '>='
         | 
| 151 172 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -153,6 +174,7 @@ dependencies: | |
| 153 174 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 154 175 | 
             
              name: rb-inotify
         | 
| 155 176 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 177 | 
            +
                none: false
         | 
| 156 178 | 
             
                requirements:
         | 
| 157 179 | 
             
                - - ! '>='
         | 
| 158 180 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -160,6 +182,7 @@ dependencies: | |
| 160 182 | 
             
              type: :development
         | 
| 161 183 | 
             
              prerelease: false
         | 
| 162 184 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 185 | 
            +
                none: false
         | 
| 163 186 | 
             
                requirements:
         | 
| 164 187 | 
             
                - - ! '>='
         | 
| 165 188 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -167,6 +190,7 @@ dependencies: | |
| 167 190 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 168 191 | 
             
              name: rb-fsevent
         | 
| 169 192 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 193 | 
            +
                none: false
         | 
| 170 194 | 
             
                requirements:
         | 
| 171 195 | 
             
                - - ! '>='
         | 
| 172 196 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -174,6 +198,7 @@ dependencies: | |
| 174 198 | 
             
              type: :development
         | 
| 175 199 | 
             
              prerelease: false
         | 
| 176 200 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 201 | 
            +
                none: false
         | 
| 177 202 | 
             
                requirements:
         | 
| 178 203 | 
             
                - - ! '>='
         | 
| 179 204 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -181,6 +206,7 @@ dependencies: | |
| 181 206 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 182 207 | 
             
              name: rb-fchange
         | 
| 183 208 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 209 | 
            +
                none: false
         | 
| 184 210 | 
             
                requirements:
         | 
| 185 211 | 
             
                - - ! '>='
         | 
| 186 212 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -188,6 +214,7 @@ dependencies: | |
| 188 214 | 
             
              type: :development
         | 
| 189 215 | 
             
              prerelease: false
         | 
| 190 216 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 217 | 
            +
                none: false
         | 
| 191 218 | 
             
                requirements:
         | 
| 192 219 | 
             
                - - ! '>='
         | 
| 193 220 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -195,6 +222,7 @@ dependencies: | |
| 195 222 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 196 223 | 
             
              name: cane
         | 
| 197 224 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 225 | 
            +
                none: false
         | 
| 198 226 | 
             
                requirements:
         | 
| 199 227 | 
             
                - - ! '>='
         | 
| 200 228 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -202,6 +230,7 @@ dependencies: | |
| 202 230 | 
             
              type: :development
         | 
| 203 231 | 
             
              prerelease: false
         | 
| 204 232 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 233 | 
            +
                none: false
         | 
| 205 234 | 
             
                requirements:
         | 
| 206 235 | 
             
                - - ! '>='
         | 
| 207 236 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -209,6 +238,7 @@ dependencies: | |
| 209 238 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 210 239 | 
             
              name: json
         | 
| 211 240 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 241 | 
            +
                none: false
         | 
| 212 242 | 
             
                requirements:
         | 
| 213 243 | 
             
                - - ~>
         | 
| 214 244 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -216,6 +246,7 @@ dependencies: | |
| 216 246 | 
             
              type: :development
         | 
| 217 247 | 
             
              prerelease: false
         | 
| 218 248 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 249 | 
            +
                none: false
         | 
| 219 250 | 
             
                requirements:
         | 
| 220 251 | 
             
                - - ~>
         | 
| 221 252 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -223,6 +254,7 @@ dependencies: | |
| 223 254 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 224 255 | 
             
              name: coveralls
         | 
| 225 256 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 257 | 
            +
                none: false
         | 
| 226 258 | 
             
                requirements:
         | 
| 227 259 | 
             
                - - ! '>='
         | 
| 228 260 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -230,6 +262,7 @@ dependencies: | |
| 230 262 | 
             
              type: :development
         | 
| 231 263 | 
             
              prerelease: false
         | 
| 232 264 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 265 | 
            +
                none: false
         | 
| 233 266 | 
             
                requirements:
         | 
| 234 267 | 
             
                - - ! '>='
         | 
| 235 268 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -237,6 +270,7 @@ dependencies: | |
| 237 270 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 238 271 | 
             
              name: thread
         | 
| 239 272 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 273 | 
            +
                none: false
         | 
| 240 274 | 
             
                requirements:
         | 
| 241 275 | 
             
                - - ! '>='
         | 
| 242 276 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -244,6 +278,7 @@ dependencies: | |
| 244 278 | 
             
              type: :runtime
         | 
| 245 279 | 
             
              prerelease: false
         | 
| 246 280 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 281 | 
            +
                none: false
         | 
| 247 282 | 
             
                requirements:
         | 
| 248 283 | 
             
                - - ! '>='
         | 
| 249 284 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -251,6 +286,7 @@ dependencies: | |
| 251 286 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 252 287 | 
             
              name: mono_logger
         | 
| 253 288 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 289 | 
            +
                none: false
         | 
| 254 290 | 
             
                requirements:
         | 
| 255 291 | 
             
                - - ! '>='
         | 
| 256 292 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -258,6 +294,7 @@ dependencies: | |
| 258 294 | 
             
              type: :runtime
         | 
| 259 295 | 
             
              prerelease: false
         | 
| 260 296 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 297 | 
            +
                none: false
         | 
| 261 298 | 
             
                requirements:
         | 
| 262 299 | 
             
                - - ! '>='
         | 
| 263 300 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -265,6 +302,7 @@ dependencies: | |
| 265 302 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 266 303 | 
             
              name: multi_json
         | 
| 267 304 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 305 | 
            +
                none: false
         | 
| 268 306 | 
             
                requirements:
         | 
| 269 307 | 
             
                - - ! '>='
         | 
| 270 308 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -272,6 +310,7 @@ dependencies: | |
| 272 310 | 
             
              type: :runtime
         | 
| 273 311 | 
             
              prerelease: false
         | 
| 274 312 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 313 | 
            +
                none: false
         | 
| 275 314 | 
             
                requirements:
         | 
| 276 315 | 
             
                - - ! '>='
         | 
| 277 316 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -297,6 +336,7 @@ files: | |
| 297 336 | 
             
            - LICENSE.txt
         | 
| 298 337 | 
             
            - README.md
         | 
| 299 338 | 
             
            - Rakefile
         | 
| 339 | 
            +
            - config/s3_example.yml
         | 
| 300 340 | 
             
            - lib/queuel.rb
         | 
| 301 341 | 
             
            - lib/queuel/base/engine.rb
         | 
| 302 342 | 
             
            - lib/queuel/base/message.rb
         | 
| @@ -351,26 +391,33 @@ files: | |
| 351 391 | 
             
            homepage: ''
         | 
| 352 392 | 
             
            licenses:
         | 
| 353 393 | 
             
            - MIT
         | 
| 354 | 
            -
            metadata: {}
         | 
| 355 394 | 
             
            post_install_message: 
         | 
| 356 395 | 
             
            rdoc_options: []
         | 
| 357 396 | 
             
            require_paths:
         | 
| 358 397 | 
             
            - lib
         | 
| 359 398 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 399 | 
            +
              none: false
         | 
| 360 400 | 
             
              requirements:
         | 
| 361 401 | 
             
              - - ! '>='
         | 
| 362 402 | 
             
                - !ruby/object:Gem::Version
         | 
| 363 403 | 
             
                  version: '0'
         | 
| 404 | 
            +
                  segments:
         | 
| 405 | 
            +
                  - 0
         | 
| 406 | 
            +
                  hash: 2472164195127432886
         | 
| 364 407 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 408 | 
            +
              none: false
         | 
| 365 409 | 
             
              requirements:
         | 
| 366 410 | 
             
              - - ! '>='
         | 
| 367 411 | 
             
                - !ruby/object:Gem::Version
         | 
| 368 412 | 
             
                  version: '0'
         | 
| 413 | 
            +
                  segments:
         | 
| 414 | 
            +
                  - 0
         | 
| 415 | 
            +
                  hash: 2472164195127432886
         | 
| 369 416 | 
             
            requirements: []
         | 
| 370 417 | 
             
            rubyforge_project: 
         | 
| 371 | 
            -
            rubygems_version:  | 
| 418 | 
            +
            rubygems_version: 1.8.23.2
         | 
| 372 419 | 
             
            signing_key: 
         | 
| 373 | 
            -
            specification_version:  | 
| 420 | 
            +
            specification_version: 3
         | 
| 374 421 | 
             
            summary: Light Queue wrapper tool
         | 
| 375 422 | 
             
            test_files:
         | 
| 376 423 | 
             
            - spec/lib/queuel/base/queue_spec.rb
         | 
    
        checksums.yaml
    DELETED
    
    | @@ -1,15 +0,0 @@ | |
| 1 | 
            -
            ---
         | 
| 2 | 
            -
            !binary "U0hBMQ==":
         | 
| 3 | 
            -
              metadata.gz: !binary |-
         | 
| 4 | 
            -
                MTYyYjg5NTFlNjA2ZjNkYjFlMWExNmM1MWE5OTAzYzRjZjFlZDU0ZQ==
         | 
| 5 | 
            -
              data.tar.gz: !binary |-
         | 
| 6 | 
            -
                MGNhN2Q4YzQ2ZGUzZjg4MGFjMDdhYTVlZDlkZjYwYzgwNjE1ZDI0MQ==
         | 
| 7 | 
            -
            !binary "U0hBNTEy":
         | 
| 8 | 
            -
              metadata.gz: !binary |-
         | 
| 9 | 
            -
                MTFiMzQ3NjYzZDU3OGQxMTI0MzU5MWY2YTM5ODRmNzQ1MDE0ZDM0N2U0Njk1
         | 
| 10 | 
            -
                MWNjY2Q2Mjg0NmIyYTc2MWVjOTkxNzJlZjZlYWMyMGRmOGYyNjMxZmExN2U3
         | 
| 11 | 
            -
                NzAyYTNlZWY3NjFkYjVkOGU4Yzc3OWE1YmJiYjhmMmI5OGRlNjk=
         | 
| 12 | 
            -
              data.tar.gz: !binary |-
         | 
| 13 | 
            -
                ODM1OTBlYzhkMjNmMjE2MGZlYzE5MmU1ZWQxNDRjM2FlMmY1MzJkYTUwYmEz
         | 
| 14 | 
            -
                ZTVlMWE4MTdmYzdhZGYyMzI2Y2EzNzcwZjcyNjU0NzEyOGI4NGNlMjIyMzNl
         | 
| 15 | 
            -
                YWIyYmVjMGY3NDRiYjdkZmY4NDEwNmU2YTJiNDllMmQyMDllOWU=
         |