better_sqs 0.1.1 → 0.2.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.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +9 -2
- data/README.md +38 -0
- data/better_sqs.gemspec +3 -2
- data/lib/better_sqs/client.rb +8 -0
- data/lib/better_sqs/queue.rb +52 -0
- data/lib/better_sqs.rb +1 -0
- data/spec/better_sqs/client_spec.rb +8 -7
- data/spec/better_sqs/queue_spec.rb +47 -0
- data/spec/support/mocks.rb +82 -12
- metadata +39 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9fc0e03ed8b4c5106c87e9046b2911ededc75b45
|
4
|
+
data.tar.gz: b38ac02b1f0aac3bc3ee50424e98b54fa7851a31
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 286e9d755d6444667bc77abcaa124b0224e45c3fab2b6fa4470576a261c3607a5ebd33f377921717471899c90d72370c5d1f84a2093cced2edee5ef2721531c0
|
7
|
+
data.tar.gz: dcbdcfa04471da11f5033ffc6572f32b10b0b40f861c0a2fa12b2dbfb6ce433372aee278acebbd7d38b24ab5f57f4512b8140ff540ec7c1ae696217f28ecef18
|
data/.rubocop_todo.yml
CHANGED
@@ -1,12 +1,19 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on 2016-
|
3
|
+
# on 2016-04-12 01:43:20 +0000 using RuboCop version 0.35.1.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
8
8
|
|
9
|
-
# Offense count:
|
9
|
+
# Offense count: 1
|
10
|
+
# Cop supports --auto-correct.
|
11
|
+
# Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods.
|
12
|
+
Lint/UnusedMethodArgument:
|
13
|
+
Exclude:
|
14
|
+
- 'spec/support/mocks.rb'
|
15
|
+
|
16
|
+
# Offense count: 57
|
10
17
|
# Configuration parameters: AllowURI, URISchemes.
|
11
18
|
Metrics/LineLength:
|
12
19
|
Max: 173
|
data/README.md
CHANGED
@@ -21,6 +21,44 @@ puts message.message_body
|
|
21
21
|
message.delete
|
22
22
|
```
|
23
23
|
|
24
|
+
If you prefer you can interact with a Queue directly for enqueue and dequeue operations
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
require "better_sqs"
|
28
|
+
|
29
|
+
better = BetterSqs::Client.new
|
30
|
+
queue = better.queue "better_sqs_dev_queue"
|
31
|
+
queue.push "You pushed the message successfully!"
|
32
|
+
message = queue.reserve
|
33
|
+
|
34
|
+
puts message.message_body
|
35
|
+
message.delete
|
36
|
+
```
|
37
|
+
|
38
|
+
### Inspecting a queue
|
39
|
+
|
40
|
+
BetterSqs makes it easy to check on the attributes of a SQS queue.
|
41
|
+
|
42
|
+
```ruby
|
43
|
+
require "better_sqs"
|
44
|
+
|
45
|
+
better = BetterSqs::Client.new
|
46
|
+
queue = better.queue("better_sqs_dev_queue")
|
47
|
+
queue.approximate_number_of_messages
|
48
|
+
queue.approximate_number_of_messages_not_visible
|
49
|
+
queue.visibility_timeout
|
50
|
+
queue.created_timestamp
|
51
|
+
queue.last_modified_timestamp
|
52
|
+
queue.policy
|
53
|
+
queue.maximum_message_size
|
54
|
+
queue.message_retention_period
|
55
|
+
queue.queue_arn
|
56
|
+
queue.approximate_number_of_messages_delayed
|
57
|
+
queue.delay_seconds
|
58
|
+
queue.receive_message_wait_time_seconds
|
59
|
+
queue.redrive_policy
|
60
|
+
```
|
61
|
+
|
24
62
|
## Configuration
|
25
63
|
|
26
64
|
To configure BetterSqs use the configuration block pattern
|
data/better_sqs.gemspec
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "better_sqs"
|
3
|
-
s.version = "0.
|
3
|
+
s.version = "0.2.0"
|
4
4
|
s.license = "MIT"
|
5
|
-
s.date = "2016-
|
5
|
+
s.date = "2016-04-12"
|
6
6
|
s.summary = "A more idiomatic interface to SQS."
|
7
7
|
s.description = "A convenient API for developers to interact with SQS with a trivial amount of effort"
|
8
8
|
s.authors = ["Courtland Caldwell"]
|
@@ -13,6 +13,7 @@ Gem::Specification.new do |s|
|
|
13
13
|
"https://github.com/Referly/better_sqs"
|
14
14
|
s.add_runtime_dependency "lincoln_logger", "~> 1.0" # Mattermark gem
|
15
15
|
s.add_runtime_dependency "aws-sdk", "~> 2" # Apache2 https://github.com/aws/aws-sdk-ruby/blob/master/LICENSE.txt
|
16
|
+
s.add_runtime_dependency "activesupport"
|
16
17
|
s.add_development_dependency "rspec", "~> 3.2" # MIT - @link https://github.com/rspec/rspec/blob/master/License.txt
|
17
18
|
s.add_development_dependency "byebug", "~> 3.5" # BSD (content is BSD) https://github.com/deivid-rodriguez/byebug/blob/master/LICENSE
|
18
19
|
s.add_development_dependency "simplecov", "~> 0.10" # MIT - @link https://github.com/colszowka/simplecov/blob/master/MIT-LICENSE
|
data/lib/better_sqs/client.rb
CHANGED
@@ -60,5 +60,13 @@ module BetterSqs
|
|
60
60
|
def url_for_queue(queue_name)
|
61
61
|
sqs.create_queue(queue_name: queue_name).queue_url
|
62
62
|
end
|
63
|
+
|
64
|
+
# Get a BetterSqs::Queue instance
|
65
|
+
#
|
66
|
+
# @param queue_name [String, Symbol] the name of the SQS queue
|
67
|
+
# @return [BetterSqs::Queue] the requested Queue instance
|
68
|
+
def queue(queue_name)
|
69
|
+
Queue.new self, queue_name
|
70
|
+
end
|
63
71
|
end
|
64
72
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require "active_support/inflector"
|
2
|
+
module BetterSqs
|
3
|
+
# A Class for interacting with an SQS queue as an OOP style entity
|
4
|
+
class Queue
|
5
|
+
attr_accessor :better_client,
|
6
|
+
:queue_name
|
7
|
+
|
8
|
+
def initialize(better_client, queue_name)
|
9
|
+
@better_client = better_client
|
10
|
+
@queue_name = queue_name
|
11
|
+
end
|
12
|
+
|
13
|
+
# Push a message onto a queue
|
14
|
+
#
|
15
|
+
# @param message_body [String] the message as it will be pushed onto the queue, no serialization occurs as
|
16
|
+
# part of this method. You need to encode or serialize your object to a string before sending it to this method
|
17
|
+
# @return [Types::SendMessageResult] the sent message object returned from s3
|
18
|
+
def push(message_body)
|
19
|
+
better_client.push queue_name, message_body
|
20
|
+
end
|
21
|
+
|
22
|
+
# Reserve a message from the specified queue
|
23
|
+
#
|
24
|
+
# @return [Messages::Sqs, NilClass] the message retrieved from the queue
|
25
|
+
def reserve
|
26
|
+
better_client.reserve queue_name
|
27
|
+
end
|
28
|
+
|
29
|
+
QUEUE_ATTRIBUTES = [
|
30
|
+
:approximate_number_of_messages,
|
31
|
+
:approximate_number_of_messages_not_visible,
|
32
|
+
:visibility_timeout,
|
33
|
+
:created_timestamp,
|
34
|
+
:last_modified_timestamp,
|
35
|
+
:policy,
|
36
|
+
:maximum_message_size,
|
37
|
+
:message_retention_period,
|
38
|
+
:queue_arn,
|
39
|
+
:approximate_number_of_messages_delayed,
|
40
|
+
:delay_seconds,
|
41
|
+
:receive_message_wait_time_seconds,
|
42
|
+
:redrive_policy,
|
43
|
+
]
|
44
|
+
QUEUE_ATTRIBUTES.each do |queue_attribute|
|
45
|
+
define_method queue_attribute do
|
46
|
+
resp = better_client.sqs.get_queue_attributes queue_url: better_client.url_for_queue(queue_name),
|
47
|
+
attribute_names: [queue_attribute.to_s.camelize]
|
48
|
+
resp.attributes[queue_attribute.to_s.camelize]
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/lib/better_sqs.rb
CHANGED
@@ -4,7 +4,8 @@ describe BetterSqs::Client do
|
|
4
4
|
subject { described_class.new }
|
5
5
|
|
6
6
|
let(:queue_name) { "anotherqueue" }
|
7
|
-
let(:
|
7
|
+
let(:queue_url) { "sqs://foo/bar" }
|
8
|
+
let(:sqs) { mock_aws_sqs_client }
|
8
9
|
let(:sqs_message) { mock_sqs_message }
|
9
10
|
|
10
11
|
before do
|
@@ -17,7 +18,7 @@ describe BetterSqs::Client do
|
|
17
18
|
it "enqueues the message into the SQS queue" do
|
18
19
|
expect(sqs).
|
19
20
|
to receive(:send_message).
|
20
|
-
with(queue_url: sqs.
|
21
|
+
with(queue_url: sqs.queues[queue_name].queue_url, message_body: message_body).
|
21
22
|
and_return(double "SendMessageResult")
|
22
23
|
|
23
24
|
subject.push queue_name, message_body
|
@@ -33,7 +34,7 @@ describe BetterSqs::Client do
|
|
33
34
|
it "retrieves a message from SQS" do
|
34
35
|
expect(sqs).
|
35
36
|
to receive(:receive_message).
|
36
|
-
with(queue_url: sqs.
|
37
|
+
with(queue_url: sqs.queues[queue_name].queue_url, max_number_of_messages: 1).
|
37
38
|
and_return receive_message_response
|
38
39
|
|
39
40
|
subject.reserve queue_name
|
@@ -54,7 +55,7 @@ describe BetterSqs::Client do
|
|
54
55
|
sqs_message: sqs_message
|
55
56
|
expect(sqs).
|
56
57
|
to receive(:delete_message).
|
57
|
-
with(queue_url: sqs.
|
58
|
+
with(queue_url: sqs.queues[queue_name].queue_url, receipt_handle: sqs_message.receipt_handle)
|
58
59
|
|
59
60
|
subject.delete message_to_delete
|
60
61
|
end
|
@@ -64,7 +65,7 @@ describe BetterSqs::Client do
|
|
64
65
|
let(:mock_queue) {
|
65
66
|
mq = SqsMocks::MockQueue.new
|
66
67
|
mq.queue_name = queue_name
|
67
|
-
mq.queue_url =
|
68
|
+
mq.queue_url = queue_url
|
68
69
|
mq
|
69
70
|
}
|
70
71
|
it "creates the queue" do
|
@@ -73,7 +74,7 @@ describe BetterSqs::Client do
|
|
73
74
|
end
|
74
75
|
|
75
76
|
it "is the queue_url for the queue" do
|
76
|
-
expect(subject.url_for_queue queue_name).to eq sqs.queue_url
|
77
|
+
expect(subject.url_for_queue queue_name).to eq sqs.queues.values.first.queue_url
|
77
78
|
end
|
78
79
|
end
|
79
80
|
|
@@ -85,7 +86,7 @@ describe BetterSqs::Client do
|
|
85
86
|
|
86
87
|
expect(sqs).
|
87
88
|
to receive(:change_message_visibility).
|
88
|
-
with(queue_url: sqs.
|
89
|
+
with(queue_url: sqs.queues[queue_name].queue_url,
|
89
90
|
receipt_handle: message_to_defer.receipt_handle,
|
90
91
|
visibility_timeout: BetterSqs.configuration.sqs_message_deferral_seconds)
|
91
92
|
subject.defer_retry message_to_defer
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe BetterSqs::Queue do
|
4
|
+
subject { described_class.new better_client, queue_name }
|
5
|
+
|
6
|
+
let(:better_client) {
|
7
|
+
b = BetterSqs::Client.new
|
8
|
+
allow(b).to receive(:sqs).and_return mock_sqs
|
9
|
+
b
|
10
|
+
}
|
11
|
+
let(:mock_sqs) { SqsMocks::MockClient.new }
|
12
|
+
# let(:queue_url) { "some arn" }
|
13
|
+
let(:queue_name) { "superdupertuberqueue" }
|
14
|
+
let(:encoded_message) { { foo: "i am a foo" }.to_json }
|
15
|
+
|
16
|
+
describe "#push" do
|
17
|
+
it "pushes the encoded message onto the SQS queue" do
|
18
|
+
subject.push encoded_message
|
19
|
+
expect(mock_sqs.queues[queue_name].messages).to eq [encoded_message]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "#reserve" do
|
24
|
+
context "when there are messages in the queue to be received" do
|
25
|
+
it "returns a message from the queue" do
|
26
|
+
expected_message = BetterSqs::Message.new queue_client: better_client, queue: queue_name, sqs_message: encoded_message
|
27
|
+
|
28
|
+
subject.push encoded_message
|
29
|
+
|
30
|
+
expect(subject.reserve).to eq expected_message
|
31
|
+
end
|
32
|
+
end
|
33
|
+
context "when there are no messages in the queue to be received" do
|
34
|
+
it "is nil" do
|
35
|
+
expect(subject.reserve).to be_nil
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
described_class::QUEUE_ATTRIBUTES.each do |queue_attribute|
|
41
|
+
describe "##{queue_attribute}" do
|
42
|
+
it "gets the queue attribute: '#{queue_attribute}' from SQS" do
|
43
|
+
expect(subject.public_send queue_attribute).to eq SqsMocks::MockClient::FAUX_ATTRIBUTES[queue_attribute.to_s.camelize]
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/spec/support/mocks.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require "securerandom"
|
2
|
+
|
1
3
|
def mock_queue_client
|
2
4
|
double "QueueClient"
|
3
5
|
end
|
@@ -12,30 +14,98 @@ end
|
|
12
14
|
|
13
15
|
module SqsMocks
|
14
16
|
class MockQueue
|
15
|
-
attr_accessor :queue_name, :queue_url
|
16
|
-
end
|
17
|
+
attr_accessor :queue_name, :queue_url, :messages
|
17
18
|
|
18
|
-
|
19
|
-
|
19
|
+
def initialize
|
20
|
+
@messages = []
|
21
|
+
end
|
22
|
+
end
|
20
23
|
|
21
|
-
|
22
|
-
|
24
|
+
class MockQueues < Hash
|
25
|
+
def [](key)
|
26
|
+
existing_val = super
|
27
|
+
return existing_val if existing_val
|
28
|
+
self[key] = create_queue queue_name: key
|
23
29
|
end
|
24
30
|
|
25
|
-
def create_queue(queue_name)
|
26
|
-
@queue_name = queue_name
|
31
|
+
def create_queue(queue_name: nil)
|
27
32
|
q = MockQueue.new
|
28
33
|
q.queue_name = queue_name
|
34
|
+
queue_url = SecureRandom.hex(10)
|
29
35
|
q.queue_url = queue_url
|
30
36
|
q
|
31
37
|
end
|
38
|
+
end
|
39
|
+
|
40
|
+
class MockClient
|
41
|
+
FAUX_ATTRIBUTES = {
|
42
|
+
"ApproximateNumberOfMessages" => 5,
|
43
|
+
"ApproximateNumberOfMessagesNotVisible" => 2,
|
44
|
+
"VisibilityTimeout" => 10,
|
45
|
+
"CreatedTimestamp" => 123_456,
|
46
|
+
"LastModifiedTimestamp" => 123_456,
|
47
|
+
"Policy" => :some_policy,
|
48
|
+
"MaximumMessageSize" => 256_000,
|
49
|
+
"MessageRetentionPeriod" => 86_400,
|
50
|
+
"QueueArn" => "arn:aws:sqs:us-east-1:201024061765:dolla-custom_list_creation_delete_user_tag_lots",
|
51
|
+
"ApproximateNumberOfMessagesDelayed" => 3,
|
52
|
+
"DelaySeconds" => 12,
|
53
|
+
"ReceiveMessageWaitTimeSeconds" => 25,
|
54
|
+
"RedrivePolicy" => :redrive_policy,
|
55
|
+
}
|
56
|
+
attr_accessor :queues
|
57
|
+
|
58
|
+
def initialize
|
59
|
+
@queues = MockQueues.new
|
60
|
+
end
|
61
|
+
|
62
|
+
def create_queue(queue_name: nil)
|
63
|
+
queues[queue_name]
|
64
|
+
end
|
65
|
+
|
66
|
+
def send_message(queue_url: nil, message_body: nil)
|
67
|
+
queue = queue_by_url queue_url
|
68
|
+
queue.messages << message_body
|
69
|
+
end
|
70
|
+
|
71
|
+
# If we get to the point of needing to mock visiblity then this approximation will not be adequate
|
72
|
+
def receive_message(queue_url: nil, max_number_of_messages: nil)
|
73
|
+
queue = queue_by_url queue_url
|
74
|
+
r = MockResponse.new
|
75
|
+
r.messages = Array(queue.messages.shift max_number_of_messages) if queue.messages.any?
|
76
|
+
r
|
77
|
+
end
|
78
|
+
|
79
|
+
# Just a static mock of the get_queue_attributes API
|
80
|
+
def get_queue_attributes(queue_url: nil, attribute_names: nil)
|
81
|
+
r = MockResponse.new
|
82
|
+
if attribute_names == "All"
|
83
|
+
r.attributes = FAUX_ATTRIBUTES
|
84
|
+
else
|
85
|
+
attribute_names.each do |attribute_name|
|
86
|
+
r.attributes[attribute_name] = FAUX_ATTRIBUTES[attribute_name]
|
87
|
+
end
|
88
|
+
end
|
89
|
+
r
|
90
|
+
end
|
91
|
+
|
92
|
+
private
|
93
|
+
|
94
|
+
def queue_by_url(queue_url)
|
95
|
+
queues.select { |_queue_name, q| q.queue_url == queue_url }.values.first
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
class MockResponse
|
100
|
+
attr_accessor :messages, :attributes
|
32
101
|
|
33
|
-
def
|
34
|
-
@
|
102
|
+
def initialize
|
103
|
+
@messages = []
|
104
|
+
@attributes = {}
|
35
105
|
end
|
36
106
|
end
|
37
107
|
end
|
38
108
|
|
39
|
-
def mock_aws_sqs_client
|
40
|
-
SqsMocks::MockClient.new
|
109
|
+
def mock_aws_sqs_client
|
110
|
+
SqsMocks::MockClient.new
|
41
111
|
end
|
metadata
CHANGED
@@ -1,111 +1,125 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: better_sqs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Courtland Caldwell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lincoln_logger
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: aws-sdk
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '2'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '2'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: activesupport
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rspec
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
|
-
- -
|
59
|
+
- - ~>
|
46
60
|
- !ruby/object:Gem::Version
|
47
61
|
version: '3.2'
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
|
-
- -
|
66
|
+
- - ~>
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '3.2'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: byebug
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
|
-
- -
|
73
|
+
- - ~>
|
60
74
|
- !ruby/object:Gem::Version
|
61
75
|
version: '3.5'
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
|
-
- -
|
80
|
+
- - ~>
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '3.5'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: simplecov
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
|
-
- -
|
87
|
+
- - ~>
|
74
88
|
- !ruby/object:Gem::Version
|
75
89
|
version: '0.10'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- -
|
94
|
+
- - ~>
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0.10'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: rubocop
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
|
-
- -
|
101
|
+
- - ~>
|
88
102
|
- !ruby/object:Gem::Version
|
89
103
|
version: '0.31'
|
90
104
|
type: :development
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
|
-
- -
|
108
|
+
- - ~>
|
95
109
|
- !ruby/object:Gem::Version
|
96
110
|
version: '0.31'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: rspec_junit_formatter
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
|
-
- -
|
115
|
+
- - ~>
|
102
116
|
- !ruby/object:Gem::Version
|
103
117
|
version: '0.2'
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
107
121
|
requirements:
|
108
|
-
- -
|
122
|
+
- - ~>
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '0.2'
|
111
125
|
description: A convenient API for developers to interact with SQS with a trivial amount
|
@@ -115,9 +129,9 @@ executables: []
|
|
115
129
|
extensions: []
|
116
130
|
extra_rdoc_files: []
|
117
131
|
files:
|
118
|
-
-
|
119
|
-
-
|
120
|
-
-
|
132
|
+
- .gitignore
|
133
|
+
- .rubocop.yml
|
134
|
+
- .rubocop_todo.yml
|
121
135
|
- LICENSE
|
122
136
|
- README.md
|
123
137
|
- better_sqs.gemspec
|
@@ -126,8 +140,10 @@ files:
|
|
126
140
|
- lib/better_sqs/client.rb
|
127
141
|
- lib/better_sqs/configuration.rb
|
128
142
|
- lib/better_sqs/message.rb
|
143
|
+
- lib/better_sqs/queue.rb
|
129
144
|
- spec/better_sqs/client_spec.rb
|
130
145
|
- spec/better_sqs/message_spec.rb
|
146
|
+
- spec/better_sqs/queue_spec.rb
|
131
147
|
- spec/better_sqs_spec.rb
|
132
148
|
- spec/simplecov_custom_profile.rb
|
133
149
|
- spec/spec_helper.rb
|
@@ -142,23 +158,24 @@ require_paths:
|
|
142
158
|
- lib
|
143
159
|
required_ruby_version: !ruby/object:Gem::Requirement
|
144
160
|
requirements:
|
145
|
-
- -
|
161
|
+
- - '>='
|
146
162
|
- !ruby/object:Gem::Version
|
147
163
|
version: '0'
|
148
164
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
149
165
|
requirements:
|
150
|
-
- -
|
166
|
+
- - '>='
|
151
167
|
- !ruby/object:Gem::Version
|
152
168
|
version: '0'
|
153
169
|
requirements: []
|
154
170
|
rubyforge_project:
|
155
|
-
rubygems_version: 2.
|
171
|
+
rubygems_version: 2.4.2
|
156
172
|
signing_key:
|
157
173
|
specification_version: 4
|
158
174
|
summary: A more idiomatic interface to SQS.
|
159
175
|
test_files:
|
160
176
|
- spec/better_sqs/client_spec.rb
|
161
177
|
- spec/better_sqs/message_spec.rb
|
178
|
+
- spec/better_sqs/queue_spec.rb
|
162
179
|
- spec/better_sqs_spec.rb
|
163
180
|
- spec/simplecov_custom_profile.rb
|
164
181
|
- spec/spec_helper.rb
|