pheme 4.0.14 → 5.0.0

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: 122b36a8426c4735d9af6332bd7d72b60e6f874a9c908e3873a1fa406c0daaa3
4
- data.tar.gz: eb87161a6735af495fa3856ff86ed4ad0a34e409f4aa09bce67d9b9b10e1f39d
3
+ metadata.gz: 77aa7f2b7491323470cd9f9703b253281144ef680a474bd41dbc0b502f4f34cb
4
+ data.tar.gz: fa195a4334ea0b05e9a366411ae404802783423b12997af34d31d1438b8785e8
5
5
  SHA512:
6
- metadata.gz: b6f4116b22157714bcae5b11f4352376476674bd694470648ad1c48678c5849f8b3cc5a8ad62ccc6892d1076cb155ea946ea1aba4b570879ef41aa202ed0770e
7
- data.tar.gz: 2eb6a9aef8a1b46bf3ad64a20d9a1432d47e81509960357f6a0e2499b6d7f2367b9d488cddce2da8c7517fb0b8d3ec40154e1bf481d4bdf6b6049524d73c7cb8
6
+ metadata.gz: 417c01bd6811da7e393508c7b1fbb98dbdff0ab415854e3f08074dd63ae896a54c53d6c970b0f7b42eceb150e13eec4d099fc7688abb4c60136ef9155f765ae5
7
+ data.tar.gz: e7ad5f758ee7f699c45c2f7abd0fe4d18a1ff5bd4d6472d5fed4d6c8a25c92c5758720853f7191307ffd4a23c76eaad67820eba2363f547e4105000e015a7b7e
@@ -2,23 +2,47 @@
2
2
  name: Pipeline
3
3
  on:
4
4
  push:
5
+ concurrency:
6
+ group: ${{ github.workflow }}-${{ github.ref }}
7
+ cancel-in-progress: true
8
+
5
9
  jobs:
6
10
  build:
7
11
  name: Build
8
12
  runs-on: ubuntu-20.04
13
+ strategy:
14
+ matrix:
15
+ ruby-version: [2.7.5, 3.0.3, 3.1.0]
9
16
  steps:
10
17
  - uses: actions/checkout@v2
11
18
  with:
12
19
  fetch-depth: 0
13
- - uses: ruby/setup-ruby@v1
20
+ - name: Set up Ruby ${{ matrix.ruby-version }}
21
+ uses: ruby/setup-ruby@v1
14
22
  with:
15
23
  bundler-cache: true
24
+ ruby-version: ${{ matrix.ruby-version }}
16
25
  - name: Lint
17
26
  run: bundle exec rubocop
18
27
  - name: Test
19
28
  run: bundle exec rspec
29
+
30
+ # Separate `release` job from `build`, as we only want release to be run once
31
+ # and not run for each ruby version in the matrix:
32
+ release:
33
+ name: Release
34
+ if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master'
35
+ needs: build
36
+ runs-on: ubuntu-20.04
37
+ steps:
38
+ - uses: actions/checkout@v2
39
+ with:
40
+ fetch-depth: 0
41
+ - name: Set up Ruby
42
+ uses: ruby/setup-ruby@v1
43
+ with:
44
+ bundler-cache: true
20
45
  - name: Release the gem
21
- if: ${{ github.ref == 'refs/heads/main' }}
22
46
  run: |
23
47
  mkdir -p ~/.gem
24
48
  cat << EOF > ~/.gem/credentials
@@ -0,0 +1,20 @@
1
+ name: 'Close stale PRs'
2
+ on:
3
+ schedule:
4
+ - cron: '30 6 * * *' # 6:30 am UTC: 1:30 am EST
5
+
6
+ jobs:
7
+ stale:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: actions/stale@v4
11
+ with:
12
+ days-before-stale: 30
13
+ days-before-close: 60
14
+ stale-pr-message: >
15
+ This issue has been automatically marked as stale because it has not had
16
+ recent activity. It will be closed if no further activity occurs.
17
+ close-pr-message: >
18
+ This issue has been automatically closed because it has had no activity
19
+ for over 90 days. Please re-open if you feel this was done in error.
20
+ exempt-pr-labels: 'dependabot,depfu,dependencies,security'
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.7.3
1
+ 2.7.5
data/CHANGELOG.md CHANGED
@@ -4,6 +4,22 @@ 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
+ ## 5.0.0 - 2022-01-04
8
+ ### Changed
9
+ - Remove RecusiveOpenStruct in favor of ResourceStruct::FlexStruct
10
+
11
+ ## 4.1.1 - 2022-01-04
12
+ ### Changed
13
+ - Updated dependencies
14
+
15
+ ## 4.1.0 - 2021-12-31
16
+ ### Changed
17
+ - Add Ruby 3 support
18
+
19
+ ## 4.0.15 - 2021-12-03
20
+ ### Changed
21
+ - Updated dependencies
22
+
7
23
  ## 4.0.14 - 2021-11-05
8
24
  ### Changed
9
25
  - Update dependencies
data/Gemfile.lock CHANGED
@@ -1,35 +1,34 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pheme (4.0.14)
4
+ pheme (5.0.0)
5
5
  activesupport (>= 4)
6
6
  aws-sdk-sns (~> 1.1)
7
7
  aws-sdk-sqs (~> 1.3)
8
- recursive-open-struct (~> 1)
8
+ resource-struct (~> 0.4)
9
9
  smarter_csv (~> 1)
10
10
 
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- activesupport (6.1.4.1)
14
+ activesupport (7.0.1)
15
15
  concurrent-ruby (~> 1.0, >= 1.0.2)
16
16
  i18n (>= 1.6, < 2)
17
17
  minitest (>= 5.1)
18
18
  tzinfo (~> 2.0)
19
- zeitwerk (~> 2.3)
20
19
  ast (2.4.2)
21
20
  aws-eventstream (1.2.0)
22
- aws-partitions (1.525.0)
23
- aws-sdk-core (3.122.0)
21
+ aws-partitions (1.547.0)
22
+ aws-sdk-core (3.125.1)
24
23
  aws-eventstream (~> 1, >= 1.0.2)
25
24
  aws-partitions (~> 1, >= 1.525.0)
26
25
  aws-sigv4 (~> 1.1)
27
26
  jmespath (~> 1.0)
28
- aws-sdk-sns (1.47.0)
29
- aws-sdk-core (~> 3, >= 3.122.0)
27
+ aws-sdk-sns (1.50.0)
28
+ aws-sdk-core (~> 3, >= 3.125.0)
30
29
  aws-sigv4 (~> 1.1)
31
- aws-sdk-sqs (1.46.0)
32
- aws-sdk-core (~> 3, >= 3.122.0)
30
+ aws-sdk-sqs (1.49.0)
31
+ aws-sdk-core (~> 3, >= 3.125.0)
33
32
  aws-sigv4 (~> 1.1)
34
33
  aws-sigv4 (1.4.0)
35
34
  aws-eventstream (~> 1, >= 1.0.2)
@@ -37,23 +36,23 @@ GEM
37
36
  bundler (>= 1.2.0, < 3)
38
37
  thor (~> 1.0)
39
38
  concurrent-ruby (1.1.9)
40
- diff-lcs (1.4.4)
39
+ diff-lcs (1.5.0)
41
40
  docile (1.4.0)
42
- git (1.9.1)
41
+ git (1.10.2)
43
42
  rchardet (~> 1.8)
44
43
  i18n (1.8.11)
45
44
  concurrent-ruby (~> 1.0)
46
45
  jmespath (1.4.0)
47
- minitest (5.14.4)
46
+ minitest (5.15.0)
48
47
  parallel (1.21.0)
49
- parser (3.0.2.0)
48
+ parser (3.1.0.0)
50
49
  ast (~> 2.4.1)
51
50
  rack (2.2.3)
52
51
  rainbow (3.0.0)
53
52
  rake (13.0.6)
54
53
  rchardet (1.8.0)
55
- recursive-open-struct (1.1.3)
56
- regexp_parser (2.1.1)
54
+ regexp_parser (2.2.0)
55
+ resource-struct (0.4.0)
57
56
  rexml (3.2.5)
58
57
  rspec (3.10.0)
59
58
  rspec-core (~> 3.10.0)
@@ -73,29 +72,29 @@ GEM
73
72
  diff-lcs (>= 1.2.0, < 2.0)
74
73
  rspec-support (~> 3.10.0)
75
74
  rspec-support (3.10.3)
76
- rspec_junit_formatter (0.4.1)
75
+ rspec_junit_formatter (0.5.1)
77
76
  rspec-core (>= 2, < 4, != 2.12.0)
78
- rubocop (1.22.3)
77
+ rubocop (1.24.1)
79
78
  parallel (~> 1.10)
80
79
  parser (>= 3.0.0.0)
81
80
  rainbow (>= 2.2.2, < 4.0)
82
81
  regexp_parser (>= 1.8, < 3.0)
83
82
  rexml
84
- rubocop-ast (>= 1.12.0, < 2.0)
83
+ rubocop-ast (>= 1.15.1, < 2.0)
85
84
  ruby-progressbar (~> 1.7)
86
85
  unicode-display_width (>= 1.4.0, < 3.0)
87
- rubocop-ast (1.12.0)
86
+ rubocop-ast (1.15.1)
88
87
  parser (>= 3.0.1.1)
89
- rubocop-performance (1.12.0)
88
+ rubocop-performance (1.13.1)
90
89
  rubocop (>= 1.7.0, < 2.0)
91
90
  rubocop-ast (>= 0.4.0)
92
- rubocop-rails (2.12.4)
91
+ rubocop-rails (2.13.1)
93
92
  activesupport (>= 4.2.0)
94
93
  rack (>= 1.1)
95
94
  rubocop (>= 1.7.0, < 2.0)
96
- rubocop-rspec (2.5.0)
95
+ rubocop-rspec (2.7.0)
97
96
  rubocop (~> 1.19)
98
- rubocop-vendor (0.6.1)
97
+ rubocop-vendor (0.8.0)
99
98
  rubocop (>= 0.53.0)
100
99
  ruby-progressbar (1.11.0)
101
100
  simplecov (0.21.2)
@@ -104,18 +103,17 @@ GEM
104
103
  simplecov_json_formatter (~> 0.1)
105
104
  simplecov-html (0.12.3)
106
105
  simplecov_json_formatter (0.1.3)
107
- smarter_csv (1.2.8)
108
- thor (1.1.0)
106
+ smarter_csv (1.2.9)
107
+ thor (1.2.1)
109
108
  tzinfo (2.0.4)
110
109
  concurrent-ruby (~> 1.0)
111
110
  unicode-display_width (2.1.0)
112
- ws-style (6.11.0)
113
- rubocop (>= 1.12.1)
111
+ ws-style (6.13.1)
112
+ rubocop (>= 1.23)
114
113
  rubocop-performance (>= 1.10.2)
115
114
  rubocop-rails (>= 2.9.1)
116
115
  rubocop-rspec (>= 2.2.0)
117
116
  rubocop-vendor (>= 0.6.0)
118
- zeitwerk (2.5.1)
119
117
 
120
118
  PLATFORMS
121
119
  ruby
@@ -134,4 +132,4 @@ DEPENDENCIES
134
132
  ws-style
135
133
 
136
134
  BUNDLED WITH
137
- 2.2.30
135
+ 2.2.33
data/Rakefile CHANGED
@@ -6,7 +6,9 @@ end
6
6
 
7
7
  require 'bundler/gem_tasks'
8
8
  require 'rspec/core/rake_task'
9
+ require 'rubocop/rake_task'
9
10
 
10
11
  RSpec::Core::RakeTask.new(:spec)
12
+ RuboCop::RakeTask.new
11
13
 
12
- task default: :spec
14
+ task default: %i[spec rubocop]
@@ -19,7 +19,7 @@ module Pheme
19
19
  end
20
20
 
21
21
  def parse_aws_event(message_contents)
22
- RecursiveOpenStruct.new({ wrapper: message_contents }, recurse_over_arrays: true).wrapper
22
+ ResourceStruct::FlexStruct.new({ wrapper: message_contents }).wrapper
23
23
  end
24
24
  end
25
25
  end
@@ -127,12 +127,12 @@ module Pheme
127
127
 
128
128
  def parse_csv(message_contents)
129
129
  parsed_body = SmarterCSV.process(StringIO.new(message_contents))
130
- parsed_body.map { |item| RecursiveOpenStruct.new(item, recurse_over_arrays: true) }
130
+ parsed_body.map { |item| ResourceStruct::FlexStruct.new(item) }
131
131
  end
132
132
 
133
133
  def parse_json(message_contents)
134
134
  parsed_body = JSON.parse(message_contents)
135
- RecursiveOpenStruct.new({ wrapper: parsed_body }, recurse_over_arrays: true).wrapper
135
+ ResourceStruct::FlexStruct.new({ wrapper: parsed_body }).wrapper
136
136
  end
137
137
 
138
138
  def handle(message, metadata, message_attributes)
data/lib/pheme/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pheme
2
- VERSION = '4.0.14'.freeze
2
+ VERSION = '5.0.0'.freeze
3
3
  end
data/lib/pheme.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require 'active_support/all'
2
- require 'recursive-open-struct'
2
+ require 'resource-struct'
3
3
  require 'aws-sdk-sns'
4
4
  require 'aws-sdk-sqs'
5
5
  require 'securerandom'
data/pheme.gemspec CHANGED
@@ -1,32 +1,32 @@
1
1
  lib = File.expand_path('lib', __dir__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
- require "pheme/version"
4
+ require 'pheme/version'
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.' unless s.respond_to?(:metadata)
8
8
 
9
- s.name = "pheme"
9
+ s.name = 'pheme'
10
10
  s.version = Pheme::VERSION
11
- s.authors = ["Peter Graham"]
12
- s.email = ["peter@wealthsimple.com"]
11
+ s.authors = ['Peter Graham']
12
+ s.email = ['peter@wealthsimple.com']
13
13
  s.description = 'Ruby AWS SNS publisher + SQS poller & message handler'
14
14
  s.summary = 'Ruby SNS publisher + SQS poller & message handler'
15
- s.homepage = "https://github.com/wealthsimple/pheme"
15
+ s.homepage = 'https://github.com/wealthsimple/pheme'
16
16
 
17
17
  s.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
18
18
  s.executables = s.files.grep(%r{^bin/}).map { |f| File.basename(f) }
19
19
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
20
- s.require_paths = ["lib"]
21
- s.license = "MIT"
20
+ s.require_paths = ['lib']
21
+ s.license = 'MIT'
22
22
 
23
23
  s.required_ruby_version = '>= 2.7.3'
24
24
 
25
- s.add_dependency "activesupport", ">= 4"
26
- s.add_dependency "aws-sdk-sns", "~> 1.1"
27
- s.add_dependency "aws-sdk-sqs", "~> 1.3"
28
- s.add_dependency "recursive-open-struct", "~> 1"
29
- s.add_dependency "smarter_csv", "~> 1"
25
+ s.add_dependency 'activesupport', '>= 4'
26
+ s.add_dependency 'aws-sdk-sns', '~> 1.1'
27
+ s.add_dependency 'aws-sdk-sqs', '~> 1.3'
28
+ s.add_dependency 'resource-struct', '~> 0.4'
29
+ s.add_dependency 'smarter_csv', '~> 1'
30
30
 
31
31
  s.add_development_dependency 'bundler'
32
32
  s.add_development_dependency 'git'
@@ -3,7 +3,7 @@ describe Pheme::MessageHandler do
3
3
 
4
4
  before { use_default_configuration! }
5
5
 
6
- let(:message) { RecursiveOpenStruct.new(status: status) }
6
+ let(:message) { ResourceStruct::FlexStruct.new(status: status) }
7
7
  let(:timestamp) { '2018-04-17T21:45:05.915Z' }
8
8
 
9
9
  describe "#handle" do
@@ -3,7 +3,8 @@ describe Pheme::MessageType::AwsEvent do
3
3
  let(:message_id) { SecureRandom.uuid }
4
4
  let(:queue_url) { 'http://queue_url' }
5
5
  let(:queue_message) do
6
- OpenStruct.new(
6
+ instance_double(
7
+ Aws::SQS::Message,
7
8
  message_id: message_id,
8
9
  body: { 'Records' => records }.to_json,
9
10
  queue_url: queue_url,
@@ -22,7 +22,7 @@ describe Pheme::MessageType::SnsMessage do
22
22
 
23
23
  describe "#parse_message" do
24
24
  context "with JSON message" do
25
- let!(:message) { OpenStruct.new({ body: '{"Message":"{\"test\":\"test\"}"}' }) }
25
+ let!(:message) { ResourceStruct::FlexStruct.new({ body: '{"Message":"{\"test\":\"test\"}"}' }) }
26
26
 
27
27
  it 'parses the message correctly' do
28
28
  expect(subject.parse_body(message).test).to eq("test")
@@ -5,7 +5,7 @@ describe Pheme::QueuePoller do
5
5
  let(:topic_arn) { 'arn:topic:test' }
6
6
 
7
7
  let!(:queue_message) do
8
- OpenStruct.new(
8
+ ResourceStruct::FlexStruct.new(
9
9
  body: { Message: message }.to_json,
10
10
  message_id: message_id,
11
11
  )
@@ -57,7 +57,7 @@ describe Pheme::QueuePoller do
57
57
 
58
58
  before do
59
59
  allow(Aws::SQS::QueuePoller).to receive(:new).and_return(aws_poller)
60
- allow(aws_poller).to receive(:before_request).and_yield(OpenStruct.new(received_message_count: max_messages))
60
+ allow(aws_poller).to receive(:before_request).and_yield(ResourceStruct::FlexStruct.new(received_message_count: max_messages))
61
61
  end
62
62
 
63
63
  it 'throws error' do
@@ -145,7 +145,7 @@ describe Pheme::QueuePoller do
145
145
 
146
146
  context 'when message attributes' do
147
147
  let(:queue_message) do
148
- OpenStruct.new(
148
+ ResourceStruct::FlexStruct.new(
149
149
  body: {
150
150
  Message: message,
151
151
  MessageAttributes: {
@@ -222,7 +222,7 @@ describe Pheme::QueuePoller do
222
222
  end
223
223
 
224
224
  it { is_expected.to have(2).items }
225
- it { is_expected.to eq(RecursiveOpenStruct.new({ wrapper: expected_message }, recurse_over_arrays: true).wrapper) }
225
+ it { is_expected.to eq(ResourceStruct::FlexStruct.new({ wrapper: expected_message }).wrapper) }
226
226
  end
227
227
 
228
228
  context "with unknown message format" do
@@ -240,7 +240,7 @@ describe Pheme::QueuePoller do
240
240
 
241
241
  it { is_expected.to be_a(Array) }
242
242
  its(:first) { is_expected.to be_a(Array) }
243
- its('first.first') { is_expected.to be_a(RecursiveOpenStruct) }
243
+ its('first.first') { is_expected.to be_a(ResourceStruct::FlexStruct) }
244
244
 
245
245
  it "parses the nested object" do
246
246
  expect(subject.first.first.test).to eq('test')
@@ -284,7 +284,7 @@ describe Pheme::QueuePoller do
284
284
  }
285
285
  }
286
286
  let!(:queue_message) do
287
- OpenStruct.new(
287
+ ResourceStruct::FlexStruct.new(
288
288
  body: notification.to_json,
289
289
  message_id: message_id,
290
290
  )
@@ -317,7 +317,7 @@ describe Pheme::QueuePoller do
317
317
  }
318
318
  }
319
319
  let!(:queue_message) do
320
- OpenStruct.new(
320
+ ResourceStruct::FlexStruct.new(
321
321
  body: notification.to_json,
322
322
  message_id: message_id,
323
323
  )
@@ -348,7 +348,7 @@ describe Pheme::QueuePoller do
348
348
  }
349
349
  end
350
350
  let!(:queue_message) do
351
- OpenStruct.new(
351
+ ResourceStruct::FlexStruct.new(
352
352
  body: notification.to_json,
353
353
  message_id: message_id,
354
354
  )
@@ -361,7 +361,7 @@ describe Pheme::QueuePoller do
361
361
 
362
362
  it "handles the message" do
363
363
  expect(ExampleMessageHandler).to receive(:new).with(
364
- message: RecursiveOpenStruct.new(message),
364
+ message: ResourceStruct::FlexStruct.new(message),
365
365
  metadata: { timestamp: timestamp, topic_arn: topic_arn },
366
366
  message_attributes: {},
367
367
  )
@@ -387,7 +387,7 @@ describe Pheme::QueuePoller do
387
387
  }
388
388
  end
389
389
  let!(:queue_message) do
390
- OpenStruct.new(
390
+ ResourceStruct::FlexStruct.new(
391
391
  body: notification.to_json,
392
392
  message_id: message_id,
393
393
  )
@@ -416,7 +416,7 @@ describe Pheme::QueuePoller do
416
416
  context "AWS-event message" do
417
417
  subject { ExampleAwsEventQueuePoller.new(queue_url: queue_url) }
418
418
 
419
- let(:queue_message) { OpenStruct.new(body: { 'Records' => records }.to_json) }
419
+ let(:queue_message) { ResourceStruct::FlexStruct.new(body: { 'Records' => records }.to_json) }
420
420
  let(:records) do
421
421
  [{ 'eventVersion' => '2.0', eventSource: 'aws:s3' }]
422
422
  end
@@ -437,7 +437,7 @@ describe Pheme::QueuePoller do
437
437
  let(:message) { { status: 'complete' } }
438
438
  let(:notification) { { 'MessageId' => SecureRandom.uuid, 'Message' => message.to_json, 'Type' => 'Notification', 'Timestamp' => timestamp } }
439
439
  let!(:queue_message) do
440
- OpenStruct.new(
440
+ ResourceStruct::FlexStruct.new(
441
441
  body: notification.to_json,
442
442
  message_id: message_id,
443
443
  )
data/spec/version_spec.rb CHANGED
@@ -4,8 +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 { |version_string| parse_version(version_string) }.
8
- reject(&:nil?).
7
+ filter_map { |version_string| parse_version(version_string) }.
9
8
  first
10
9
  end
11
10
 
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.14
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Graham
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-05 00:00:00.000000000 Z
11
+ date: 2022-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -53,19 +53,19 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.3'
55
55
  - !ruby/object:Gem::Dependency
56
- name: recursive-open-struct
56
+ name: resource-struct
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1'
61
+ version: '0.4'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1'
68
+ version: '0.4'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: smarter_csv
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -216,6 +216,7 @@ files:
216
216
  - ".github/CODEOWNERS"
217
217
  - ".github/PULL_REQUEST_TEMPLATE.md"
218
218
  - ".github/workflows/main.yml"
219
+ - ".github/workflows/stale.yml"
219
220
  - ".gitignore"
220
221
  - ".rspec"
221
222
  - ".rubocop.yml"