pheme 4.0.0 → 4.0.6

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
2
  SHA256:
3
- metadata.gz: '0711608ea3831e4718cb928b6e3db90bd049c302b5ae864c4e457f3797215add'
4
- data.tar.gz: 1387f1048aef3104ff08aad3fb5cdc7d3a542bfbb9b2c71e49f02b78fe67b8c3
3
+ metadata.gz: 831f5d211fa45a5725eab09b256b39bfac28d25b6271f045466fe0c9f98d0cb6
4
+ data.tar.gz: 5e8a0b292396d2403af4da4cc6e71b883a8c4623683dd74a8c34fadc287ea0e0
5
5
  SHA512:
6
- metadata.gz: f6ef008cf929f3eb8e6f9d846ee316982e378039f9a40b7900eb52bedd073fbfb80221d6de1dfb72d74b660f7faf75e0bad5d9f20148368d9332446704267dda
7
- data.tar.gz: be52cf4fe2479f239568488fd5c498642842bb92646496907598a211700a1ad994fd889fb9d99c8923f411c24c0d258224fddbb3eb88414207ee92aff7bf437e
6
+ metadata.gz: c1e130b3a280ae8302d6946a57cd3d9592eb57ab1d53da9e1408aa265640e7197f0aeab67f31510bb6ed02641641cee0155a5ab872f6aae2523d7b0d7b0bc80b
7
+ data.tar.gz: 74ea895fc3daf7d577d100950a21f559450c3d2e6fa3da2e26974c5e534d8ba62364c47a6ebaa7e24667c8705b184681715eacc1e115db2861b99f0047de5db5
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: Pipeline
3
+ on:
4
+ push:
5
+ jobs:
6
+ build:
7
+ name: Build
8
+ runs-on: ubuntu-20.04
9
+ steps:
10
+ - uses: actions/checkout@v2
11
+ with:
12
+ fetch-depth: 0
13
+ - uses: ruby/setup-ruby@v1
14
+ with:
15
+ bundler-cache: true
16
+ - name: Lint
17
+ run: bundle exec rubocop
18
+ - name: Test
19
+ run: bundle exec rspec
20
+ - name: Release the gem
21
+ if: ${{ github.ref == 'refs/heads/main' }}
22
+ run: |
23
+ mkdir -p ~/.gem
24
+ cat << EOF > ~/.gem/credentials
25
+ ---
26
+ :github: Bearer ${GITHUB_TOKEN}
27
+ :rubygems_api_key: ${RUBYGEMS_API_KEY}
28
+ EOF
29
+ chmod 0600 ~/.gem/credentials
30
+ git config user.email "noreply@wealthsimple.com"
31
+ git config user.name "Wolfbot"
32
+ bundle exec rake release
33
+ env:
34
+ RUBYGEMS_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}
data/.gitignore CHANGED
@@ -28,7 +28,6 @@ build/
28
28
 
29
29
  # for a library or gem, you might want to ignore these files since the code is
30
30
  # intended to run in multiple environments; otherwise, check them in:
31
- Gemfile.lock
32
31
  .ruby-version
33
32
  .ruby-gemset
34
33
 
data/.rubocop.yml CHANGED
@@ -6,4 +6,4 @@ inherit_gem:
6
6
 
7
7
  AllCops:
8
8
  # Specify your target Ruby version here (only major/minor versions):
9
- TargetRubyVersion: 2.4
9
+ TargetRubyVersion: 2.7
data/.rubocop_todo.yml CHANGED
@@ -1,42 +1,42 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2019-07-09 13:48:32 -0400 using RuboCop version 0.72.0.
3
+ # on 2021-01-07 16:23:09 UTC using RuboCop version 1.6.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: 19
10
+ # Cop supports --auto-correct.
11
+ # Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
12
+ # URISchemes: http, https
13
+ Layout/LineLength:
14
+ Max: 147
15
+
9
16
  # Offense count: 2
17
+ # Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
10
18
  Metrics/AbcSize:
11
19
  Max: 22
12
20
 
13
21
  # Offense count: 1
14
- # Configuration parameters: CountComments.
15
- Metrics/ClassLength:
16
- Max: 164
17
-
18
- # Offense count: 1
22
+ # Configuration parameters: IgnoredMethods.
19
23
  Metrics/CyclomaticComplexity:
20
24
  Max: 10
21
25
 
22
- # Offense count: 17
23
- # Cop supports --auto-correct.
24
- # Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
25
- # URISchemes: http, https
26
- Metrics/LineLength:
27
- Max: 147
28
-
29
26
  # Offense count: 3
30
- # Configuration parameters: CountComments, ExcludedMethods.
27
+ # Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
28
+ # IgnoredMethods: extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended, extended
31
29
  Metrics/MethodLength:
32
30
  Max: 28
33
31
 
34
32
  # Offense count: 1
33
+ # Configuration parameters: IgnoredMethods.
35
34
  Metrics/PerceivedComplexity:
36
35
  Max: 11
37
36
 
38
- # Offense count: 5
39
- # Configuration parameters: CustomTransform, IgnoreMethods.
37
+ # Offense count: 9
38
+ # Configuration parameters: Include, CustomTransform, IgnoreMethods, SpecSuffixOnly.
39
+ # Include: **/*_spec*rb*, **/spec/**/*
40
40
  RSpec/FilePath:
41
41
  Exclude:
42
42
  - 'spec/configuration_spec.rb'
@@ -45,8 +45,8 @@ RSpec/FilePath:
45
45
  - 'spec/message_type/aws_event_spec.rb'
46
46
  - 'spec/message_type/sns_message_spec.rb'
47
47
  - 'spec/queue_poller_spec.rb'
48
- - 'spec/topic_publisher_spec.rb'
49
48
  - 'spec/rollbar_spec.rb'
49
+ - 'spec/topic_publisher_spec.rb'
50
50
  - 'spec/version_spec.rb'
51
51
 
52
52
  # Offense count: 14
@@ -70,3 +70,10 @@ RSpec/VerifiedDoubles:
70
70
  Style/GuardClause:
71
71
  Exclude:
72
72
  - 'lib/pheme/queue_poller.rb'
73
+
74
+ # Offense count: 2
75
+ # Cop supports --auto-correct.
76
+ Style/IfUnlessModifier:
77
+ Exclude:
78
+ - 'lib/pheme/queue_poller.rb'
79
+ - 'pheme.gemspec'
data/CHANGELOG.md CHANGED
@@ -4,6 +4,28 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## 4.0.6 - 2021-06-28
8
+ ### Changed
9
+ - Update dependencies
10
+
11
+ ## 4.0.5 - 2021-04-20
12
+ ### Changed
13
+ - Update dependencies
14
+
15
+ ## 4.0.4 - 2021-04-16
16
+ ### Changed
17
+ - Migrate CI from CircleCI to GitHub Actions
18
+
19
+ ## 4.0.3 - 2021-03-08
20
+ - Update documentation to include instructions on directly publishing to SQS
21
+
22
+ ## 4.0.2 - 2020-12-17
23
+ - Bump local dev version, rubocop fixes, add backstage catalog file + sonarqube project settings
24
+
25
+ ## 4.0.1 - 2020-03-23
26
+ ### Fixes
27
+ - Fixes 4.0.0. Instead of expecting message attributes in the message from `poll`, retrieves them from the right place.
28
+
7
29
  ## 4.0.0 - 2020-03-18
8
30
  ### Breaking Changes
9
31
  - Add the ability for SQS to receive message attributes
data/Gemfile.lock ADDED
@@ -0,0 +1,138 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ pheme (4.0.6)
5
+ activesupport (>= 4)
6
+ aws-sdk-sns (~> 1.1)
7
+ aws-sdk-sqs (~> 1.3)
8
+ recursive-open-struct (~> 1)
9
+ smarter_csv (~> 1)
10
+
11
+ GEM
12
+ remote: https://rubygems.org/
13
+ specs:
14
+ activesupport (6.1.3.1)
15
+ concurrent-ruby (~> 1.0, >= 1.0.2)
16
+ i18n (>= 1.6, < 2)
17
+ minitest (>= 5.1)
18
+ tzinfo (~> 2.0)
19
+ zeitwerk (~> 2.3)
20
+ ast (2.4.2)
21
+ aws-eventstream (1.1.1)
22
+ aws-partitions (1.449.0)
23
+ aws-sdk-core (3.114.0)
24
+ aws-eventstream (~> 1, >= 1.0.2)
25
+ aws-partitions (~> 1, >= 1.239.0)
26
+ aws-sigv4 (~> 1.1)
27
+ jmespath (~> 1.0)
28
+ aws-sdk-sns (1.40.0)
29
+ aws-sdk-core (~> 3, >= 3.112.0)
30
+ aws-sigv4 (~> 1.1)
31
+ aws-sdk-sqs (1.38.0)
32
+ aws-sdk-core (~> 3, >= 3.112.0)
33
+ aws-sigv4 (~> 1.1)
34
+ aws-sigv4 (1.2.3)
35
+ aws-eventstream (~> 1, >= 1.0.2)
36
+ bundler-audit (0.8.0)
37
+ bundler (>= 1.2.0, < 3)
38
+ thor (~> 1.0)
39
+ concurrent-ruby (1.1.8)
40
+ diff-lcs (1.4.4)
41
+ docile (1.3.5)
42
+ git (1.8.1)
43
+ rchardet (~> 1.8)
44
+ i18n (1.8.10)
45
+ concurrent-ruby (~> 1.0)
46
+ jmespath (1.4.0)
47
+ minitest (5.14.4)
48
+ parallel (1.20.1)
49
+ parser (3.0.1.1)
50
+ ast (~> 2.4.1)
51
+ rack (2.2.3)
52
+ rainbow (3.0.0)
53
+ rake (13.0.3)
54
+ rchardet (1.8.0)
55
+ recursive-open-struct (1.1.3)
56
+ regexp_parser (2.1.1)
57
+ rexml (3.2.5)
58
+ rspec (3.10.0)
59
+ rspec-core (~> 3.10.0)
60
+ rspec-expectations (~> 3.10.0)
61
+ rspec-mocks (~> 3.10.0)
62
+ rspec-collection_matchers (1.2.0)
63
+ rspec-expectations (>= 2.99.0.beta1)
64
+ rspec-core (3.10.1)
65
+ rspec-support (~> 3.10.0)
66
+ rspec-expectations (3.10.1)
67
+ diff-lcs (>= 1.2.0, < 2.0)
68
+ rspec-support (~> 3.10.0)
69
+ rspec-its (1.3.0)
70
+ rspec-core (>= 3.0.0)
71
+ rspec-expectations (>= 3.0.0)
72
+ rspec-mocks (3.10.2)
73
+ diff-lcs (>= 1.2.0, < 2.0)
74
+ rspec-support (~> 3.10.0)
75
+ rspec-support (3.10.2)
76
+ rspec_junit_formatter (0.4.1)
77
+ rspec-core (>= 2, < 4, != 2.12.0)
78
+ rubocop (1.13.0)
79
+ parallel (~> 1.10)
80
+ parser (>= 3.0.0.0)
81
+ rainbow (>= 2.2.2, < 4.0)
82
+ regexp_parser (>= 1.8, < 3.0)
83
+ rexml
84
+ rubocop-ast (>= 1.2.0, < 2.0)
85
+ ruby-progressbar (~> 1.7)
86
+ unicode-display_width (>= 1.4.0, < 3.0)
87
+ rubocop-ast (1.5.0)
88
+ parser (>= 3.0.1.1)
89
+ rubocop-performance (1.11.1)
90
+ rubocop (>= 1.7.0, < 2.0)
91
+ rubocop-ast (>= 0.4.0)
92
+ rubocop-rails (2.9.1)
93
+ activesupport (>= 4.2.0)
94
+ rack (>= 1.1)
95
+ rubocop (>= 0.90.0, < 2.0)
96
+ rubocop-rspec (2.3.0)
97
+ rubocop (~> 1.0)
98
+ rubocop-ast (>= 1.1.0)
99
+ rubocop-vendor (0.6.0)
100
+ rubocop (>= 0.53.0)
101
+ ruby-progressbar (1.11.0)
102
+ simplecov (0.21.2)
103
+ docile (~> 1.1)
104
+ simplecov-html (~> 0.11)
105
+ simplecov_json_formatter (~> 0.1)
106
+ simplecov-html (0.12.3)
107
+ simplecov_json_formatter (0.1.3)
108
+ smarter_csv (1.2.8)
109
+ thor (1.1.0)
110
+ tzinfo (2.0.4)
111
+ concurrent-ruby (~> 1.0)
112
+ unicode-display_width (2.0.0)
113
+ ws-style (6.9.0)
114
+ rubocop (>= 1.12.1)
115
+ rubocop-performance (>= 1.10.2)
116
+ rubocop-rails (>= 2.9.1)
117
+ rubocop-rspec (>= 2.2.0)
118
+ rubocop-vendor (>= 0.6.0)
119
+ zeitwerk (2.4.2)
120
+
121
+ PLATFORMS
122
+ ruby
123
+
124
+ DEPENDENCIES
125
+ bundler
126
+ bundler-audit
127
+ git
128
+ pheme!
129
+ rake
130
+ rspec
131
+ rspec-collection_matchers
132
+ rspec-its
133
+ rspec_junit_formatter (~> 0.2)
134
+ simplecov
135
+ ws-style
136
+
137
+ BUNDLED WITH
138
+ 2.2.16
data/README.md CHANGED
@@ -1,4 +1,7 @@
1
- # pheme [![CircleCI](https://circleci.com/gh/wealthsimple/pheme.svg?style=svg&circle-token=76942be0b1712ac066627be264886ee18039ad11)](https://circleci.com/gh/wealthsimple/pheme) [![Coverage Status](https://coveralls.io/repos/github/wealthsimple/pheme/badge.svg)](https://coveralls.io/github/wealthsimple/pheme)
1
+ # pheme
2
+ [![Github Actions Badge](https://github.com/wealthsimple/pheme/actions/workflows/main.yml/badge.svg)](https://github.com/wealthsimple/pheme/actions)
3
+
4
+ [![GitHub Actions Workflow Badge](https://github.com/wealthsimple/pheme/actions/workflows/master-workflow.yml/badge.svg)](https://github.com/wealthsimple/pheme/actions)
2
5
 
3
6
  Ruby SNS publisher + SQS poller & message handler
4
7
 
@@ -39,3 +42,9 @@ end
39
42
  See https://github.com/wealthsimple/pheme/tree/master/spec/support for example implementations of each class.
40
43
 
41
44
  TODO: write better usage instructions.
45
+
46
+ ### Handling SQS messages
47
+
48
+ Pheme expects that the SQS messages it is handling will have first been published to an SNS topic
49
+ before being sent to the SQS queue. This means if the service publishing messages is publishing them
50
+ **directly** to the SQS queue, that service must nest the message payload underneath a `Message` property.
data/catalog-info.yaml ADDED
@@ -0,0 +1,12 @@
1
+ ---
2
+ apiVersion: backstage.io/v1alpha1
3
+ kind: Component
4
+ metadata:
5
+ name: pheme
6
+ description: Ruby SNS publisher + SQS message handler
7
+ tags:
8
+ - ruby
9
+ - open-source
10
+ spec:
11
+ type: library
12
+ lifecycle: production
@@ -19,8 +19,7 @@ module Pheme
19
19
  ATTRIBUTES = %i[sns_client sqs_client logger].freeze
20
20
  OPTIONAL_ATTRIBUTES = %i[rollbar].freeze
21
21
 
22
- attr_accessor(*ATTRIBUTES)
23
- attr_accessor(*OPTIONAL_ATTRIBUTES)
22
+ attr_accessor(*ATTRIBUTES, *OPTIONAL_ATTRIBUTES)
24
23
 
25
24
  def initialize
26
25
  @logger ||= Logger.new(STDOUT) # rubocop:disable Lint/DisjunctiveAssignmentInConstructor
@@ -58,20 +58,18 @@ module Pheme
58
58
  queue_poller.poll(poller_configuration) do |queue_message|
59
59
  @messages_received += 1
60
60
  Pheme.logger.tagged(queue_message.message_id) do
61
- begin
62
- content = parse_body(queue_message)
63
- metadata = parse_metadata(queue_message)
64
- message_attributes = parse_message_attributes(queue_message)
65
- with_optional_connection_pool_block { handle(content, metadata, message_attributes) }
66
- queue_poller.delete_message(queue_message)
67
- log_delete(queue_message)
68
- @messages_processed += 1
69
- rescue SignalException
70
- throw :stop_polling
71
- rescue StandardError => e
72
- Pheme.logger.error(e)
73
- Pheme.rollbar(e, "#{self.class} failed to process message", { message: content })
74
- end
61
+ content = parse_body(queue_message)
62
+ metadata = parse_metadata(queue_message)
63
+ message_attributes = parse_message_attributes(queue_message)
64
+ with_optional_connection_pool_block { handle(content, metadata, message_attributes) }
65
+ queue_poller.delete_message(queue_message)
66
+ log_delete(queue_message)
67
+ @messages_processed += 1
68
+ rescue SignalException
69
+ throw :stop_polling
70
+ rescue StandardError => e
71
+ Pheme.logger.error(e)
72
+ Pheme.rollbar(e, "#{self.class} failed to process message", { message: content })
75
73
  end
76
74
  end
77
75
  log_polling_end(time_start)
@@ -110,8 +108,9 @@ module Pheme
110
108
  end
111
109
 
112
110
  def parse_message_attributes(queue_message)
111
+ message_body = JSON.parse(queue_message.body)
113
112
  message_attributes = {}
114
- queue_message.message_attributes&.each do |key, value|
113
+ message_body['MessageAttributes']&.each do |key, value|
115
114
  message_attributes[key.to_sym] = coerce_message_attribute(value)
116
115
  end
117
116
 
@@ -149,24 +148,20 @@ module Pheme
149
148
  private
150
149
 
151
150
  def coerce_message_attribute(value)
152
- case value['data_type']
153
- when 'String'
154
- value['string_value']
155
- when 'Number'
156
- JSON.parse(value['string_value'])
157
- when 'String.Array'
158
- JSON.parse(value['string_value'])
159
- when 'Binary'
160
- value['binary_value']
151
+ case value['Type']
152
+ when 'Binary', 'String'
153
+ value['Value']
154
+ when 'Number', 'String.Array'
155
+ JSON.parse(value['Value'])
161
156
  else
162
157
  Pheme.logger.info("Unsupported custom data type")
163
- value["binary_value"] || value["string_value"]
158
+ value["Value"]
164
159
  end
165
160
  end
166
161
 
167
- def with_optional_connection_pool_block
162
+ def with_optional_connection_pool_block(&block)
168
163
  if connection_pool_block
169
- ActiveRecord::Base.connection_pool.with_connection { yield }
164
+ ActiveRecord::Base.connection_pool.with_connection(&block)
170
165
  else
171
166
  yield
172
167
  end
data/lib/pheme/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pheme
2
- VERSION = '4.0.0'.freeze
2
+ VERSION = '4.0.6'.freeze
3
3
  end
data/pheme.gemspec CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
20
20
  s.require_paths = ["lib"]
21
21
  s.license = "MIT"
22
22
 
23
- s.required_ruby_version = '>= 2.4'
23
+ s.required_ruby_version = '>= 2.7.3'
24
24
 
25
25
  s.add_dependency "activesupport", ">= 4"
26
26
  s.add_dependency "aws-sdk-sns", "~> 1.1"
@@ -29,7 +29,6 @@ Gem::Specification.new do |s|
29
29
  s.add_dependency "smarter_csv", "~> 1"
30
30
 
31
31
  s.add_development_dependency 'bundler'
32
- s.add_development_dependency 'coveralls', "~> 0.8"
33
32
  s.add_development_dependency 'git'
34
33
  s.add_development_dependency 'rake'
35
34
  s.add_development_dependency 'rspec'
@@ -0,0 +1,4 @@
1
+ sonar.projectKey=pheme
2
+ sonar.ruby.coverage.reportPaths=coverage/.resultset.json
3
+ sonar.sources=lib
4
+ sonar.tests=spec
@@ -146,14 +146,13 @@ describe Pheme::QueuePoller do
146
146
  context 'when message attributes' do
147
147
  let(:queue_message) do
148
148
  OpenStruct.new(
149
- body: { Message: message }.to_json,
150
- message_id: message_id,
151
- message_attributes: {
152
- "key" => {
153
- "data_type" => data_type,
154
- "string_value" => string_value,
149
+ body: {
150
+ Message: message,
151
+ MessageAttributes: {
152
+ key: { Type: data_type, Value: string_value },
155
153
  },
156
- },
154
+ }.to_json,
155
+ message_id: message_id,
157
156
  )
158
157
  end
159
158
 
@@ -419,7 +418,7 @@ describe Pheme::QueuePoller do
419
418
 
420
419
  let(:queue_message) { OpenStruct.new(body: { 'Records' => records }.to_json) }
421
420
  let(:records) do
422
- [{ 'eventVersion' => '2.0', 'eventSource': 'aws:s3' }]
421
+ [{ 'eventVersion' => '2.0', eventSource: 'aws:s3' }]
423
422
  end
424
423
 
425
424
  before do
data/spec/spec_helper.rb CHANGED
@@ -1,10 +1,5 @@
1
1
  require 'simplecov'
2
- require 'coveralls'
3
2
 
4
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
5
- SimpleCov::Formatter::HTMLFormatter,
6
- Coveralls::SimpleCov::Formatter,
7
- ])
8
3
  SimpleCov.start do
9
4
  add_filter 'spec'
10
5
  end
data/spec/version_spec.rb CHANGED
@@ -4,7 +4,7 @@ describe Pheme do
4
4
  def get_version(git, branch = 'HEAD')
5
5
  git.grep('VERSION = ', 'lib/*/version.rb', { object: branch }).
6
6
  map { |_sha, matches| matches.first[1] }.
7
- map(&method(:parse_version)).
7
+ map { |version_string| parse_version(version_string) }.
8
8
  reject(&:nil?).
9
9
  first
10
10
  end
@@ -21,14 +21,15 @@ describe Pheme do
21
21
 
22
22
  it 'has a bumped version' do
23
23
  git = Git.open('.')
24
- skip('already on master branch, no need to compare versions') if git.current_branch == 'master'
24
+ main_version = get_version(git, 'origin/main')
25
+ skip('first time publishing, no need to compare versions') if main_version.nil?
25
26
 
26
- head_version = get_version(git, 'HEAD')
27
- master_version = get_version(git, 'origin/master')
27
+ is_main_branch = git.current_branch == 'main'
28
+ skip('already on main branch, no need to compare versions') if is_main_branch
28
29
 
30
+ head_version = get_version(git, 'HEAD')
29
31
  raise 'no version.rb file found on the current branch' if head_version.nil?
30
- raise 'no version.rb file found on the master branch' if master_version.nil?
31
32
 
32
- expect(Gem::Version.new(head_version)).to be > Gem::Version.new(master_version)
33
+ expect(Gem::Version.new(head_version)).to be > Gem::Version.new(main_version)
33
34
  end
34
35
  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: 4.0.0
4
+ version: 4.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Graham
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-20 00:00:00.000000000 Z
11
+ date: 2021-06-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -94,20 +94,6 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: coveralls
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '0.8'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '0.8'
111
97
  - !ruby/object:Gem::Dependency
112
98
  name: git
113
99
  requirement: !ruby/object:Gem::Requirement
@@ -227,9 +213,9 @@ executables: []
227
213
  extensions: []
228
214
  extra_rdoc_files: []
229
215
  files:
230
- - ".circleci/config.yml"
231
216
  - ".github/CODEOWNERS"
232
217
  - ".github/PULL_REQUEST_TEMPLATE.md"
218
+ - ".github/workflows/main.yml"
233
219
  - ".gitignore"
234
220
  - ".rspec"
235
221
  - ".rubocop.yml"
@@ -237,9 +223,11 @@ files:
237
223
  - ".ruby-version"
238
224
  - CHANGELOG.md
239
225
  - Gemfile
226
+ - Gemfile.lock
240
227
  - LICENSE
241
228
  - README.md
242
229
  - Rakefile
230
+ - catalog-info.yaml
243
231
  - lib/pheme.rb
244
232
  - lib/pheme/compression.rb
245
233
  - lib/pheme/configuration.rb
@@ -252,6 +240,7 @@ files:
252
240
  - lib/pheme/topic_publisher.rb
253
241
  - lib/pheme/version.rb
254
242
  - pheme.gemspec
243
+ - sonar-project.properties
255
244
  - spec/configuration_spec.rb
256
245
  - spec/logger_spec.rb
257
246
  - spec/message_handler_spec.rb
@@ -281,15 +270,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
281
270
  requirements:
282
271
  - - ">="
283
272
  - !ruby/object:Gem::Version
284
- version: '2.4'
273
+ version: 2.7.3
285
274
  required_rubygems_version: !ruby/object:Gem::Requirement
286
275
  requirements:
287
276
  - - ">="
288
277
  - !ruby/object:Gem::Version
289
278
  version: '0'
290
279
  requirements: []
291
- rubyforge_project:
292
- rubygems_version: 2.7.6
280
+ rubygems_version: 3.1.6
293
281
  signing_key:
294
282
  specification_version: 4
295
283
  summary: Ruby SNS publisher + SQS poller & message handler
data/.circleci/config.yml DELETED
@@ -1,149 +0,0 @@
1
- version: 2
2
-
3
- references:
4
- defaults:
5
- 2_4_5: &defaults_2_4_5
6
- working_directory: ~/wealthsimple
7
- docker:
8
- - image: circleci/ruby:2.4.5
9
- environment:
10
- RAILS_ENV: test
11
-
12
- 2_5_3: &defaults
13
- working_directory: ~/wealthsimple
14
- docker:
15
- - image: circleci/ruby:2.5.3
16
- environment:
17
- RAILS_ENV: test
18
-
19
- which_bundler: &which_bundler
20
- run:
21
- name: Which bundler?
22
- command: bundle -v
23
-
24
- bundle_install: &bundle_install
25
- run:
26
- name: Bundle Install
27
- command: bundle install --jobs=4 --retry=3 --path vendor/bundle
28
-
29
- attach_code_workspace: &attach_code_workspace
30
- attach_workspace:
31
- at: ~/wealthsimple
32
-
33
- restore_bundle_dependencies: &restore_bundle_dependencies
34
- run:
35
- name: Restore bundle dependencies from workspace
36
- command: bundle --path vendor/bundle
37
-
38
- run_rspec: &run_rspec
39
- run:
40
- name: Run rspec
41
- command: |
42
- bundle exec rspec \
43
- --require spec_helper \
44
- --format RspecJunitFormatter \
45
- --out test_results/rspec.xml \
46
- --format documentation
47
-
48
- jobs:
49
- checkout_and_bundle_2_4_5:
50
- <<: *defaults_2_4_5
51
- environment:
52
- COVERALLS_REPO_TOKEN: ''
53
- steps:
54
- - checkout
55
- - *which_bundler
56
- - *bundle_install
57
- - *run_rspec
58
- - store_test_results:
59
- path: test_results
60
-
61
- checkout_and_bundle:
62
- <<: *defaults
63
- steps:
64
- - checkout
65
- - *which_bundler
66
- - *bundle_install
67
- - persist_to_workspace:
68
- root: .
69
- paths: .
70
-
71
- rspec:
72
- <<: *defaults
73
- steps:
74
- - *attach_code_workspace
75
- - *restore_bundle_dependencies
76
- - *run_rspec
77
- - store_test_results:
78
- path: test_results
79
-
80
- lint_check:
81
- <<: *defaults
82
- steps:
83
- - *attach_code_workspace
84
- - *restore_bundle_dependencies
85
- - run: bundle exec rubocop
86
-
87
- vulnerability_check:
88
- <<: *defaults
89
- steps:
90
- - *attach_code_workspace
91
- - *restore_bundle_dependencies
92
- - run: bundle exec bundle-audit update && bundle exec bundle-audit check
93
-
94
- release:
95
- <<: *defaults
96
- steps:
97
- - checkout
98
- - *attach_code_workspace
99
- - *restore_bundle_dependencies
100
- - run:
101
- name: Release to rubygems.org
102
- command: |
103
- mkdir ~/.gem
104
- echo ":rubygems_api_key: ${RUBYGEMS_API_KEY}" >> ~/.gem/credentials
105
- chmod 600 ~/.gem/credentials
106
- bundle exec rake release
107
-
108
- workflows:
109
- version: 2
110
- build:
111
- jobs:
112
- - checkout_and_bundle_2_4_5:
113
- context: wealthsimple
114
- - checkout_and_bundle:
115
- context: wealthsimple
116
- - rspec:
117
- requires:
118
- - checkout_and_bundle
119
- - lint_check:
120
- requires:
121
- - checkout_and_bundle
122
- - vulnerability_check:
123
- requires:
124
- - checkout_and_bundle
125
- - release:
126
- context: wealthsimple
127
- filters:
128
- branches:
129
- only: master
130
- requires:
131
- - checkout_and_bundle_2_4_5
132
- - rspec
133
- - lint_check
134
- - vulnerability_check
135
-
136
- security-audit:
137
- triggers:
138
- - schedule:
139
- # 11:05 am UTC: 6:05 am EST / 7:05 am EDT
140
- cron: "5 11 * * *"
141
- filters:
142
- branches:
143
- only: master
144
- jobs:
145
- - checkout_and_bundle:
146
- context: wealthsimple
147
- - vulnerability_check:
148
- requires:
149
- - checkout_and_bundle