pheme 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 00c2ac8b1b0c53223f919385d56d28d28a69e359
4
- data.tar.gz: ac3c0acb319ba0837408608c7816df99318ca572
2
+ SHA256:
3
+ metadata.gz: 89a8338f64d87daa837b51db3c2420f7a58b1c90145d269cd4bdf64d95e0e116
4
+ data.tar.gz: 4fd2cde4cc7738eaaa9c0f53b4372a9be5ff1dfc156667da3254023d3d2211f7
5
5
  SHA512:
6
- metadata.gz: a8270f91d5f1d157332f757d0cff23c333ffc8215e4c359b35f25f1313d2f647c0ccc22ac93759d59ae70669e56ce3ff896bda11191e9b49d5e053ef293486d9
7
- data.tar.gz: 52766f23041b4281452779480fe1bd4c3f748131e41f362b2a52f19c10b23863d3b82e015daf3be1d6d712d845cdf9ada0064a0827c15a1ec00c9964a76669c0
6
+ metadata.gz: 293ff87ae4c74c81100cfffe3e45c62357f33ca48e29c65916e8e4f88026102c9c7caf85ff1599e9362f188d172d955091ac069634de806fb05b68d3f1b7fa58
7
+ data.tar.gz: 2cae0f28474ab6f5fa1ad7c89662423a0e1c8782d782b1e1e42a0da421d283316518de2eda9d0779f169a295cd777ea7986012be87af2cee1b39e679edc77d3e
@@ -20,7 +20,7 @@ references:
20
20
  --out test_results/rspec.xml \
21
21
  --format documentation \
22
22
  $(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)
23
-
23
+
24
24
  bundle_audit: &bundle_audit
25
25
  run:
26
26
  name: Bundle audit
@@ -28,20 +28,20 @@ references:
28
28
 
29
29
  version: 2
30
30
  jobs:
31
- build_2_3_5:
31
+ build_2_3_8:
32
32
  working_directory: ~/repo
33
33
  docker:
34
- - image: wealthsimple/ruby:2.3.5-node-docker
34
+ - image: wealthsimple/ruby:2.3.8-node-docker
35
35
  environment:
36
36
  RAILS_ENV: test
37
37
  steps:
38
38
  - checkout
39
39
  - *which_bundler
40
40
  - restore_cache:
41
- key: rails-demo-bundle-v2-{{ checksum "pheme.gemspec" }}-{{ checksum "Gemfile" }}
41
+ key: v1-ruby-2_3-{{ checksum "pheme.gemspec" }}-{{ checksum "Gemfile" }}
42
42
  - *bundle_install
43
43
  - save_cache:
44
- key: rails-demo-bundle-v2-{{ checksum "pheme.gemspec" }}-{{ checksum "Gemfile" }}
44
+ key: v1-ruby-2_3-{{ checksum "pheme.gemspec" }}-{{ checksum "Gemfile" }}
45
45
  paths:
46
46
  - vendor/bundle
47
47
  - *run_rspec
@@ -49,20 +49,20 @@ jobs:
49
49
  - store_test_results:
50
50
  path: test_results
51
51
 
52
- build_2_4_2:
52
+ build_2_4_5:
53
53
  working_directory: ~/repo
54
54
  docker:
55
- - image: wealthsimple/ruby:2.4.2-node-docker
55
+ - image: wealthsimple/ruby:2.4.5-node-docker
56
56
  environment:
57
57
  RAILS_ENV: test
58
58
  steps:
59
59
  - checkout
60
60
  - *which_bundler
61
61
  - restore_cache:
62
- key: rails-demo-bundle-v2-{{ checksum "pheme.gemspec" }}-{{ checksum "Gemfile" }}
62
+ key: v1-ruby-2_4-{{ checksum "pheme.gemspec" }}-{{ checksum "Gemfile" }}
63
63
  - *bundle_install
64
64
  - save_cache:
65
- key: rails-demo-bundle-v2-{{ checksum "pheme.gemspec" }}-{{ checksum "Gemfile" }}
65
+ key: v1-ruby-2_4-{{ checksum "pheme.gemspec" }}-{{ checksum "Gemfile" }}
66
66
  paths:
67
67
  - vendor/bundle
68
68
  - *run_rspec
@@ -70,20 +70,20 @@ jobs:
70
70
  - store_test_results:
71
71
  path: test_results
72
72
 
73
- build_2_5_1:
73
+ build_2_5_3:
74
74
  working_directory: ~/repo
75
75
  docker:
76
- - image: wealthsimple/ruby:2.5.1-node-docker
76
+ - image: wealthsimple/ruby:2.5.3-node-docker
77
77
  environment:
78
78
  RAILS_ENV: test
79
79
  steps:
80
80
  - checkout
81
81
  - *which_bundler
82
82
  - restore_cache:
83
- key: rails-demo-bundle-v2-{{ checksum "pheme.gemspec" }}-{{ checksum "Gemfile" }}
83
+ key: v1-ruby-2_5--{{ checksum "pheme.gemspec" }}-{{ checksum "Gemfile" }}
84
84
  - *bundle_install
85
85
  - save_cache:
86
- key: rails-demo-bundle-v2-{{ checksum "pheme.gemspec" }}-{{ checksum "Gemfile" }}
86
+ key: v1-ruby-2_5--{{ checksum "pheme.gemspec" }}-{{ checksum "Gemfile" }}
87
87
  paths:
88
88
  - vendor/bundle
89
89
  - *run_rspec
@@ -95,6 +95,6 @@ workflows:
95
95
  version: 2
96
96
  build:
97
97
  jobs:
98
- - build_2_3_5
99
- - build_2_4_2
100
- - build_2_5_1
98
+ - build_2_3_8
99
+ - build_2_4_5
100
+ - build_2_5_3
@@ -0,0 +1 @@
1
+ * @wealthsimple/developer-tools
@@ -0,0 +1,16 @@
1
+ #### Why <!-- A short description of why this change is required -->
2
+
3
+
4
+
5
+ #### What changed <!-- Summary of changes when modifying hundreds of lines -->
6
+
7
+
8
+
9
+ <!--
10
+ Consider adding the following sections:
11
+
12
+ #### How I tested [ Bullets for test cases covered ]
13
+ #### Next steps [ If your PR is part of a few or a WIP, give context to reviewers ]
14
+ #### Screenshot [ An image is worth a thousand words ]
15
+ #### Bug/Ticket tracker [ Unnecessary when prefixing branch with JIRA ticket, e.g. SECURITY-123-human-readable-thing ]
16
+ -->
@@ -11,7 +11,7 @@ AllCops:
11
11
  - 'db/**/*'
12
12
  - 'lib/tasks/circle_0.rake' # Ignore circleci code:
13
13
  - 'node_modules/**/*'
14
- TargetRubyVersion: 2.4
14
+ TargetRubyVersion: 2.3
15
15
 
16
16
  Lint/AmbiguousOperator:
17
17
  Enabled: false
@@ -74,7 +74,7 @@ Style/Documentation:
74
74
  Layout/TrailingBlankLines:
75
75
  EnforcedStyle: final_newline
76
76
 
77
- Style/VariableName:
77
+ Naming/VariableName:
78
78
  EnforcedStyle: snake_case
79
79
 
80
80
  Style/MethodDefParentheses:
@@ -83,7 +83,7 @@ Style/MethodDefParentheses:
83
83
  Style/Semicolon:
84
84
  AllowAsExpressionSeparator: false
85
85
 
86
- Style/TrailingCommaInLiteral:
86
+ Style/TrailingCommaInHashLiteral:
87
87
  EnforcedStyleForMultiline: comma
88
88
 
89
89
  Style/Alias:
@@ -11,6 +11,7 @@ module Pheme
11
11
 
12
12
  def decompress(body)
13
13
  return Zlib::GzipReader.new(StringIO.new(Base64.decode64(body))).read if gzip?(body)
14
+
14
15
  body
15
16
  end
16
17
 
@@ -1,9 +1,10 @@
1
1
  module Pheme
2
2
  class MessageHandler
3
- attr_reader :message, :timestamp
3
+ attr_reader :message, :metadata, :timestamp
4
4
 
5
5
  def initialize(message:, metadata: {})
6
6
  @message = message
7
+ @metadata = metadata
7
8
  end
8
9
 
9
10
  def handle
@@ -8,6 +8,7 @@ module Pheme
8
8
 
9
9
  def initialize(queue_url:, connection_pool_block: false, max_messages: nil, format: :json, poller_configuration: {}, sqs_client: nil)
10
10
  raise ArgumentError, "must specify non-nil queue_url" unless queue_url.present?
11
+
11
12
  @queue_url = queue_url
12
13
  @queue_poller = Aws::SQS::QueuePoller.new(queue_url, client: sqs_client)
13
14
  @connection_pool_block = connection_pool_block
@@ -70,6 +71,7 @@ module Pheme
70
71
  else
71
72
  method_name = "parse_#{format}".to_sym
72
73
  raise ArgumentError, "Unknown format #{format}" unless respond_to?(method_name)
74
+
73
75
  parsed_content = __send__(method_name, raw_content)
74
76
  body['Records'] = parsed_content
75
77
  end
@@ -146,7 +148,7 @@ module Pheme
146
148
  end
147
149
 
148
150
  def log_delete(queue_message)
149
- Pheme.logger.info({
151
+ Pheme.logger.debug({
150
152
  message: "#{self.class} deleted message #{queue_message.message_id}",
151
153
  message_id: queue_message.message_id,
152
154
  queue_poller: self.class.to_s,
@@ -155,7 +157,7 @@ module Pheme
155
157
  end
156
158
 
157
159
  def log_message_received(queue_message, body)
158
- Pheme.logger.info({
160
+ Pheme.logger.debug({
159
161
  message: "#{self.class} received message #{queue_message.message_id}",
160
162
  queue_poller: self.class.to_s,
161
163
  message_id: queue_message.message_id,
@@ -1,6 +1,7 @@
1
1
  module Pheme
2
2
  def self.rollbar(exception, message, data={})
3
3
  return if configuration.rollbar.nil?
4
+
4
5
  configuration.rollbar.error(exception, message, data)
5
6
  end
6
7
  end
@@ -15,12 +15,20 @@ module Pheme
15
15
  EXPECTED_METADATA_SIZE = 1.kilobyte
16
16
  MESSAGE_SIZE_LIMIT = SNS_SIZE_LIMIT - EXPECTED_METADATA_SIZE
17
17
 
18
- attr_accessor :topic_arn
18
+ class << self
19
+ attr_reader :_topic_arn
20
+
21
+ def topic_arn(topic_arn)
22
+ @_topic_arn = topic_arn
23
+ end
24
+ end
19
25
 
20
- def initialize(topic_arn:)
26
+ def initialize(topic_arn: self.class._topic_arn)
21
27
  raise ArgumentError, "must specify non-nil topic_arn" unless topic_arn.present?
28
+
22
29
  @topic_arn = topic_arn
23
30
  end
31
+ attr_accessor :topic_arn
24
32
 
25
33
  def publish_events
26
34
  raise NotImplementedError
@@ -1,3 +1,3 @@
1
1
  module Pheme
2
- VERSION = "1.2.1".freeze
2
+ VERSION = "1.2.2".freeze
3
3
  end
@@ -1,5 +1,4 @@
1
-
2
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path('lib', __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
 
5
4
  require "pheme/version"
@@ -18,7 +17,7 @@ Gem::Specification.new do |gem|
18
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
18
  gem.require_paths = ["lib"]
20
19
  gem.licenses = ["MIT"]
21
- gem.required_ruby_version = ">= 2.1.0"
20
+ gem.required_ruby_version = ">= 2.3.0"
22
21
 
23
22
  gem.add_dependency "activesupport", ">= 4"
24
23
  gem.add_dependency "aws-sdk-sns", "~> 1.1"
@@ -55,14 +55,14 @@ describe Pheme::QueuePoller do
55
55
  let(:expected_message) do
56
56
  [
57
57
  { test1: 'value1', test2: 'value2' },
58
- { test1: 'value3', test2: 'value4' },
58
+ { test1: 'value3', test2: 'value4' }
59
59
  ]
60
60
  end
61
61
  let(:message) do
62
62
  [
63
63
  %w[test1 test2].join(','),
64
64
  %w[value1 value2].join(','),
65
- %w[value3 value4].join(','),
65
+ %w[value3 value4].join(',')
66
66
  ].join("\n")
67
67
  end
68
68
 
@@ -116,7 +116,7 @@ describe Pheme::QueuePoller do
116
116
  let(:mock_connection_pool) { double }
117
117
  subject { ExampleQueuePoller.new(queue_url: queue_url, connection_pool_block: true) }
118
118
  let(:message) { { status: 'complete' } }
119
- let(:notification) { { 'MessageId' => SecureRandom.uuid, 'Message' => message.to_json, 'Type' => 'Notification', 'Timestamp' => timestamp, } }
119
+ let(:notification) { { 'MessageId' => SecureRandom.uuid, 'Message' => message.to_json, 'Type' => 'Notification', 'Timestamp' => timestamp } }
120
120
  let!(:queue_message) do
121
121
  OpenStruct.new(
122
122
  body: notification.to_json,
@@ -140,7 +140,7 @@ describe Pheme::QueuePoller do
140
140
  context "without connection pool block" do
141
141
  subject { ExampleQueuePoller.new(queue_url: queue_url) }
142
142
  let(:message) { { status: 'complete' } }
143
- let(:notification) { { 'MessageId' => SecureRandom.uuid, 'Message' => message.to_json, 'Type' => 'Notification', 'Timestamp' => timestamp, } }
143
+ let(:notification) { { 'MessageId' => SecureRandom.uuid, 'Message' => message.to_json, 'Type' => 'Notification', 'Timestamp' => timestamp } }
144
144
  let!(:queue_message) do
145
145
  OpenStruct.new(
146
146
  body: notification.to_json,
@@ -0,0 +1,3 @@
1
+ class ExampleWithArnPublisher < Pheme::TopicPublisher
2
+ topic_arn "arn:aws:sns:whatever"
3
+ end
@@ -13,6 +13,12 @@ describe Pheme::TopicPublisher do
13
13
  expect { ExamplePublisher.new(topic_arn: nil) }.to raise_error(ArgumentError)
14
14
  end
15
15
  end
16
+
17
+ context "when topic_arn set via class setter" do
18
+ it "does not raise an error" do
19
+ expect { ExampleWithArnPublisher.new }.not_to raise_error
20
+ end
21
+ end
16
22
  end
17
23
 
18
24
  describe "#publish_events" do
@@ -59,11 +65,12 @@ describe Pheme::TopicPublisher do
59
65
 
60
66
  it "publishes gzipped, base64 encoded message" do
61
67
  expect(Pheme.configuration.sns_client).to(
62
- receive(:publish)
63
- .with({
64
- topic_arn: topic_arn,
65
- message: compressed_message,
66
- }))
68
+ receive(:publish).
69
+ with({
70
+ topic_arn: topic_arn,
71
+ message: compressed_message,
72
+ }),
73
+ )
67
74
 
68
75
  subject
69
76
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pheme
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Graham
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-31 00:00:00.000000000 Z
11
+ date: 2018-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -192,6 +192,8 @@ extensions: []
192
192
  extra_rdoc_files: []
193
193
  files:
194
194
  - ".circleci/config.yml"
195
+ - ".github/CODEOWNERS"
196
+ - ".github/PULL_REQUEST_TEMPLATE.md"
195
197
  - ".gitignore"
196
198
  - ".rspec"
197
199
  - ".rubocop.yml"
@@ -221,6 +223,7 @@ files:
221
223
  - spec/support/example_message_handler.rb
222
224
  - spec/support/example_publisher.rb
223
225
  - spec/support/example_queue_poller.rb
226
+ - spec/support/example_with_arn_publisher.rb
224
227
  - spec/topic_publisher_spec.rb
225
228
  - spec/version_spec.rb
226
229
  homepage: https://github.com/wealthsimple/pheme
@@ -235,7 +238,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
235
238
  requirements:
236
239
  - - ">="
237
240
  - !ruby/object:Gem::Version
238
- version: 2.1.0
241
+ version: 2.3.0
239
242
  required_rubygems_version: !ruby/object:Gem::Requirement
240
243
  requirements:
241
244
  - - ">="
@@ -243,7 +246,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
243
246
  version: '0'
244
247
  requirements: []
245
248
  rubyforge_project:
246
- rubygems_version: 2.5.1
249
+ rubygems_version: 2.7.6
247
250
  signing_key:
248
251
  specification_version: 4
249
252
  summary: Ruby SNS publisher + SQS poller & message handler
@@ -258,5 +261,6 @@ test_files:
258
261
  - spec/support/example_message_handler.rb
259
262
  - spec/support/example_publisher.rb
260
263
  - spec/support/example_queue_poller.rb
264
+ - spec/support/example_with_arn_publisher.rb
261
265
  - spec/topic_publisher_spec.rb
262
266
  - spec/version_spec.rb