queuel 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- queuel (0.3.1)
4
+ queuel (0.4.0)
5
5
  mono_logger
6
6
  multi_json
7
7
  thread
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/encodeing features. With MultiJson you may install your own engine
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:
@@ -0,0 +1,9 @@
1
+ staging: &staging
2
+ s3:
3
+ access_key: "[access_key]"
4
+ secret_access_key: "[secret_key]"
5
+ bucket_name: "example-bucket-name"
6
+ max_bytesize: 100000
7
+
8
+ development:
9
+ <<: *staging
@@ -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
@@ -32,6 +32,10 @@ module Queuel
32
32
  poller_klass.new(self, block, options, thread_count).poll
33
33
  end
34
34
 
35
+ def size
36
+ raise NotImplementedError, "must implement #size"
37
+ end
38
+
35
39
  private
36
40
  attr_accessor :client
37
41
  attr_accessor :name
@@ -17,6 +17,10 @@ module Queuel
17
17
  queue_connection.post build_push_message(message, options)
18
18
  end
19
19
 
20
+ def size
21
+ queue_connection.size
22
+ end
23
+
20
24
  private
21
25
  def pop_bare_message(options = {})
22
26
  queue_connection.get options.merge(default_get_message_options)
@@ -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
@@ -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
- (message_object && raw_body_with_sns_check) ||
7
- encoded_body
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
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Queuel
2
- VERSION = "0.3.1"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -8,7 +8,7 @@ module Queuel
8
8
 
9
9
  its(:thread_count) { should == 1 }
10
10
 
11
- it "fails on non-impleneted push" do
11
+ it "fails on non-implemented push" do
12
12
  expect { subject.push("") }.to raise_error NotImplementedError
13
13
  end
14
14
 
@@ -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 "that is json" do
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 IronMq
3
+ module SQS
4
4
  describe Queue do
5
- let(:queue_object_with_message) { double "QueueObject", get: message, peek: [message] }
6
- let(:queue_object_with_nil_message) { double "QueueObject", get: nil, peek: nil }
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 :peek }
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.stub named: queue_object_with_message
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.stub named: queue_object_with_message
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.3.1
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-02-18 00:00:00.000000000 Z
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: 2.0.14
418
+ rubygems_version: 1.8.23.2
372
419
  signing_key:
373
- specification_version: 4
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=