deimos-ruby 1.6.1 → 1.8.0.pre.beta1

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.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +9 -0
  3. data/.rubocop.yml +15 -13
  4. data/.ruby-version +1 -1
  5. data/CHANGELOG.md +30 -0
  6. data/Gemfile.lock +87 -80
  7. data/README.md +139 -15
  8. data/Rakefile +1 -1
  9. data/deimos-ruby.gemspec +3 -2
  10. data/docs/ARCHITECTURE.md +144 -0
  11. data/docs/CONFIGURATION.md +27 -0
  12. data/lib/deimos.rb +7 -6
  13. data/lib/deimos/active_record_consume/batch_consumption.rb +159 -0
  14. data/lib/deimos/active_record_consume/batch_slicer.rb +27 -0
  15. data/lib/deimos/active_record_consume/message_consumption.rb +58 -0
  16. data/lib/deimos/active_record_consume/schema_model_converter.rb +52 -0
  17. data/lib/deimos/active_record_consumer.rb +33 -75
  18. data/lib/deimos/active_record_producer.rb +23 -0
  19. data/lib/deimos/batch_consumer.rb +2 -140
  20. data/lib/deimos/config/configuration.rb +28 -10
  21. data/lib/deimos/consume/batch_consumption.rb +148 -0
  22. data/lib/deimos/consume/message_consumption.rb +93 -0
  23. data/lib/deimos/consumer.rb +79 -69
  24. data/lib/deimos/kafka_message.rb +1 -1
  25. data/lib/deimos/kafka_source.rb +29 -23
  26. data/lib/deimos/kafka_topic_info.rb +1 -1
  27. data/lib/deimos/message.rb +6 -1
  28. data/lib/deimos/metrics/provider.rb +0 -2
  29. data/lib/deimos/poll_info.rb +9 -0
  30. data/lib/deimos/tracing/provider.rb +0 -2
  31. data/lib/deimos/utils/db_poller.rb +149 -0
  32. data/lib/deimos/utils/db_producer.rb +8 -3
  33. data/lib/deimos/utils/deadlock_retry.rb +68 -0
  34. data/lib/deimos/utils/lag_reporter.rb +19 -26
  35. data/lib/deimos/version.rb +1 -1
  36. data/lib/generators/deimos/db_poller/templates/migration +11 -0
  37. data/lib/generators/deimos/db_poller/templates/rails3_migration +16 -0
  38. data/lib/generators/deimos/db_poller_generator.rb +48 -0
  39. data/lib/tasks/deimos.rake +7 -0
  40. data/spec/active_record_batch_consumer_spec.rb +481 -0
  41. data/spec/active_record_consume/batch_slicer_spec.rb +42 -0
  42. data/spec/active_record_consume/schema_model_converter_spec.rb +105 -0
  43. data/spec/active_record_consumer_spec.rb +22 -11
  44. data/spec/active_record_producer_spec.rb +66 -88
  45. data/spec/batch_consumer_spec.rb +23 -7
  46. data/spec/config/configuration_spec.rb +4 -0
  47. data/spec/consumer_spec.rb +8 -8
  48. data/spec/deimos_spec.rb +57 -49
  49. data/spec/handlers/my_batch_consumer.rb +6 -1
  50. data/spec/handlers/my_consumer.rb +6 -1
  51. data/spec/kafka_source_spec.rb +53 -0
  52. data/spec/message_spec.rb +19 -0
  53. data/spec/producer_spec.rb +3 -3
  54. data/spec/rake_spec.rb +1 -1
  55. data/spec/schemas/com/my-namespace/MySchemaCompound-key.avsc +18 -0
  56. data/spec/schemas/com/my-namespace/Wibble.avsc +43 -0
  57. data/spec/spec_helper.rb +61 -6
  58. data/spec/utils/db_poller_spec.rb +320 -0
  59. data/spec/utils/deadlock_retry_spec.rb +74 -0
  60. data/spec/utils/lag_reporter_spec.rb +29 -22
  61. metadata +61 -20
  62. data/lib/deimos/base_consumer.rb +0 -104
  63. data/lib/deimos/utils/executor.rb +0 -124
  64. data/lib/deimos/utils/platform_schema_validation.rb +0 -0
  65. data/lib/deimos/utils/signal_handler.rb +0 -68
  66. data/spec/utils/executor_spec.rb +0 -53
  67. data/spec/utils/signal_handler_spec.rb +0 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0226368aa5a493ec167e0cd4b0d03eeb8ac9e3efe8c2518fbe869275f6b7b10b'
4
- data.tar.gz: 94afab34fb599d3cc0a5336a0af1ab8458621c8655c22de6882d1b87a645d8bf
3
+ metadata.gz: 82c1b89b49622cb0d47a7a7aa56e076d908785906581f9f0772f09679acd6895
4
+ data.tar.gz: eeadf1d1a63db1407a81ef1f993be1b8d421e8e2624b9f42c324a2dad776bd1c
5
5
  SHA512:
6
- metadata.gz: ee0516157c9fedd3e0ad9ff5dab95afbd9d3eee0975c899ede0f8104c1c9b5e992117221a8e42772f397abc3b8e70c755a90423a8d3daf93fd949751b3095f38
7
- data.tar.gz: e42ad9fca0314bfa6cf5f764f7369a22a28d60c4d395b219df2d0c1ad1bb0c2d45a37d9e5eeb76984dbd7d122f211f4f8bbf8a5d0198108346bc8c16df795266
6
+ metadata.gz: 6a85cd1d407c11d4becb6d6d11636623b96c706325f8bbca52caf4bf0cdce079df65432cb076d01503a4d4d977c8a662c22622e27193aeafc87ffbdc8d934045
7
+ data.tar.gz: '08f9b75f3057071f41effaf870f8d0927dca85d647726ba833371001c470a7a062ee74ac63b5acc2f284493d3a32373ffb6c3ca96f9428ffb762c83cfd804c42'
@@ -20,6 +20,9 @@ jobs:
20
20
  # Bundle install dependencies in /tmp/
21
21
  # so Dockerfile does not copy them since
22
22
  # its base image is different than CircleCI
23
+ - run:
24
+ name: Install bundler
25
+ command: gem install bundler:2.1.4
23
26
  - run:
24
27
  name: Bundle install
25
28
  command: bundle install --path vendor/bundle --jobs=4 --retry=3
@@ -40,6 +43,9 @@ jobs:
40
43
  steps:
41
44
  - attach_workspace:
42
45
  at: ~/workspace
46
+ - run:
47
+ name: Install bundler
48
+ command: gem install bundler:2.1.4
43
49
  - run:
44
50
  name: Point bundle to vendor/bundle
45
51
  command: bundle --path vendor/bundle
@@ -50,6 +56,9 @@ jobs:
50
56
  steps:
51
57
  - attach_workspace:
52
58
  at: ~/workspace
59
+ - run:
60
+ name: Install bundler
61
+ command: gem install bundler:2.1.4
53
62
  - run:
54
63
  name: Point bundle to vendor/bundle
55
64
  command: bundle --path vendor/bundle
@@ -1,10 +1,11 @@
1
1
  require: rubocop-rspec
2
2
 
3
3
  AllCops:
4
- TargetRubyVersion: 2.3
4
+ TargetRubyVersion: 2.4
5
5
  Exclude:
6
6
  - lib/deimos/monkey_patches/*.rb
7
7
  - vendor/**/*
8
+ NewCops: enable
8
9
 
9
10
  # class Plumbus
10
11
  # private
@@ -34,6 +35,12 @@ Layout/DotPosition:
34
35
  Layout/EmptyLinesAroundBlockBody:
35
36
  Enabled: false
36
37
 
38
+ Layout/LineLength:
39
+ Max: 100
40
+ Severity: refactor
41
+ Exclude:
42
+ - 'spec/**/*'
43
+
37
44
  # foo = if expression
38
45
  # 'bar'
39
46
  # end
@@ -82,12 +89,6 @@ Metrics/CyclomaticComplexity:
82
89
  Severity: refactor
83
90
  Max: 20
84
91
 
85
- Metrics/LineLength:
86
- Max: 100
87
- Severity: refactor
88
- Exclude:
89
- - 'spec/**/*'
90
-
91
92
  Metrics/MethodLength:
92
93
  Severity: refactor
93
94
  Max: 30
@@ -123,12 +124,6 @@ Style/BlockDelimiters:
123
124
  # some_method(x, y, {a: 1, b: 2})
124
125
  # some_method(x, y, {a: 1, b: 2}, a: 1, b: 2)
125
126
 
126
- # good
127
- # some_method(x, y, a: 1, b: 2)
128
- # some_method(x, y, {a: 1, b: 2}, {a: 1, b: 2})
129
- Style/BracesAroundHashParameters:
130
- EnforcedStyle: context_dependent
131
-
132
127
  # Enable both this:
133
128
  # MyModule::MyClass
134
129
  # and this:
@@ -179,6 +174,13 @@ Style/GuardClause:
179
174
  Style/HashSyntax:
180
175
  EnforcedStyle: ruby19_no_mixed_keys
181
176
 
177
+ # We are still unofficially targeting Ruby 2.3
178
+ Style/HashTransformKeys:
179
+ Enabled: false
180
+
181
+ Style/HashTransformValues:
182
+ Enabled: false
183
+
182
184
  Style/IfUnlessModifier:
183
185
  Enabled: false
184
186
 
@@ -1 +1 @@
1
- 2.5.1
1
+ 2.5.3
@@ -7,6 +7,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## UNRELEASED
9
9
 
10
+ ## 1.8.0-beta1 - 2020-07-06
11
+ ### Features :star:
12
+ - Added `ActiveRecordConsumer` batch mode
13
+
14
+ ### Fixes :wrench:
15
+ - Lag calculation can be incorrect if no messages are being consumed.
16
+ - Fixed bug where printing messages on a MessageSizeTooLarge
17
+ error didn't work.
18
+
19
+ ### Roadmap
20
+ - Moved SignalHandler and Executor to the `sigurd` gem.
21
+
22
+ ## 1.7.0-beta1 - 2020-05-12
23
+ ### Features :star:
24
+ - Added the DB Poller feature / process.
25
+
26
+ ## 1.6.4 - 2020-05-11
27
+ - Fixed the payload logging fix for errored messages as well.
28
+
29
+ ## 1.6.3 - 2020-05-04
30
+ ### Fixes :wrench:
31
+ - Fixed the payload logging fix.
32
+
33
+ ## 1.6.2 - 2020-05-04
34
+ ### Fixes :wrench:
35
+ - When saving records via `ActiveRecordConsumer`, update `updated_at` to today's time
36
+ even if nothing else was saved.
37
+ - When logging payloads and metadata, decode them first.
38
+ - Fixes bug in `KafkaSource` that crashes when importing a mix of existing and new records with the `:on_duplicate_key_update` option.
39
+
10
40
  ## [1.6.1] - 2020-04-20
11
41
  ### Fixes :wrench:
12
42
  - Re-consuming a message after crashing would try to re-decode message keys.
@@ -1,83 +1,85 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- deimos-ruby (1.6.1)
4
+ deimos-ruby (1.7.0.pre.beta1)
5
5
  avro_turf (~> 0.11)
6
6
  phobos (~> 1.9)
7
7
  ruby-kafka (~> 0.7)
8
+ sigurd (= 0.0.1)
8
9
 
9
10
  GEM
10
11
  remote: https://rubygems.org/
11
12
  specs:
12
- actioncable (5.2.4)
13
- actionpack (= 5.2.4)
13
+ actioncable (5.2.4.2)
14
+ actionpack (= 5.2.4.2)
14
15
  nio4r (~> 2.0)
15
16
  websocket-driver (>= 0.6.1)
16
- actionmailer (5.2.4)
17
- actionpack (= 5.2.4)
18
- actionview (= 5.2.4)
19
- activejob (= 5.2.4)
17
+ actionmailer (5.2.4.2)
18
+ actionpack (= 5.2.4.2)
19
+ actionview (= 5.2.4.2)
20
+ activejob (= 5.2.4.2)
20
21
  mail (~> 2.5, >= 2.5.4)
21
22
  rails-dom-testing (~> 2.0)
22
- actionpack (5.2.4)
23
- actionview (= 5.2.4)
24
- activesupport (= 5.2.4)
25
- rack (~> 2.0)
23
+ actionpack (5.2.4.2)
24
+ actionview (= 5.2.4.2)
25
+ activesupport (= 5.2.4.2)
26
+ rack (~> 2.0, >= 2.0.8)
26
27
  rack-test (>= 0.6.3)
27
28
  rails-dom-testing (~> 2.0)
28
29
  rails-html-sanitizer (~> 1.0, >= 1.0.2)
29
- actionview (5.2.4)
30
- activesupport (= 5.2.4)
30
+ actionview (5.2.4.2)
31
+ activesupport (= 5.2.4.2)
31
32
  builder (~> 3.1)
32
33
  erubi (~> 1.4)
33
34
  rails-dom-testing (~> 2.0)
34
35
  rails-html-sanitizer (~> 1.0, >= 1.0.3)
35
- activejob (5.2.4)
36
- activesupport (= 5.2.4)
36
+ activejob (5.2.4.2)
37
+ activesupport (= 5.2.4.2)
37
38
  globalid (>= 0.3.6)
38
- activemodel (5.2.4)
39
- activesupport (= 5.2.4)
40
- activerecord (5.2.4)
41
- activemodel (= 5.2.4)
42
- activesupport (= 5.2.4)
39
+ activemodel (5.2.4.2)
40
+ activesupport (= 5.2.4.2)
41
+ activerecord (5.2.4.2)
42
+ activemodel (= 5.2.4.2)
43
+ activesupport (= 5.2.4.2)
43
44
  arel (>= 9.0)
44
- activerecord-import (1.0.3)
45
+ activerecord-import (1.0.4)
45
46
  activerecord (>= 3.2)
46
- activestorage (5.2.4)
47
- actionpack (= 5.2.4)
48
- activerecord (= 5.2.4)
47
+ activestorage (5.2.4.2)
48
+ actionpack (= 5.2.4.2)
49
+ activerecord (= 5.2.4.2)
49
50
  marcel (~> 0.3.1)
50
- activesupport (5.2.4)
51
+ activesupport (5.2.4.2)
51
52
  concurrent-ruby (~> 1.0, >= 1.0.2)
52
53
  i18n (>= 0.7, < 2)
53
54
  minitest (~> 5.1)
54
55
  tzinfo (~> 1.1)
55
56
  arel (9.0.0)
56
57
  ast (2.4.0)
57
- avro (1.9.1)
58
+ avro (1.9.2)
58
59
  multi_json
59
60
  avro_turf (0.11.0)
60
61
  avro (>= 1.7.7, < 1.10)
61
62
  excon (~> 0.45)
62
63
  builder (3.2.4)
63
64
  coderay (1.1.2)
64
- concurrent-ruby (1.1.5)
65
- concurrent-ruby-ext (1.1.5)
66
- concurrent-ruby (= 1.1.5)
67
- crass (1.0.5)
68
- ddtrace (0.30.0)
65
+ concurrent-ruby (1.1.6)
66
+ concurrent-ruby-ext (1.1.6)
67
+ concurrent-ruby (= 1.1.6)
68
+ crass (1.0.6)
69
+ database_cleaner (1.8.5)
70
+ ddtrace (0.35.1)
69
71
  msgpack
70
72
  diff-lcs (1.3)
71
73
  digest-crc (0.5.1)
72
- dogstatsd-ruby (4.5.0)
74
+ dogstatsd-ruby (4.8.0)
73
75
  erubi (1.9.0)
74
76
  excon (0.73.0)
75
77
  exponential-backoff (0.0.4)
76
- ffi (1.11.3)
78
+ ffi (1.12.2)
77
79
  formatador (0.2.5)
78
80
  globalid (0.4.2)
79
81
  activesupport (>= 4.2.0)
80
- guard (2.16.1)
82
+ guard (2.16.2)
81
83
  formatador (>= 0.2.4)
82
84
  listen (>= 2.7, < 4.0)
83
85
  lumberjack (>= 1.0.12, < 2.0)
@@ -94,7 +96,7 @@ GEM
94
96
  guard-rubocop (1.3.0)
95
97
  guard (~> 2.0)
96
98
  rubocop (~> 0.20)
97
- i18n (1.7.0)
99
+ i18n (1.8.2)
98
100
  concurrent-ruby (~> 1.0)
99
101
  jaro_winkler (1.5.4)
100
102
  listen (3.2.1)
@@ -104,33 +106,33 @@ GEM
104
106
  logging (2.2.2)
105
107
  little-plugger (~> 1.1)
106
108
  multi_json (~> 1.10)
107
- loofah (2.4.0)
109
+ loofah (2.5.0)
108
110
  crass (~> 1.0.2)
109
111
  nokogiri (>= 1.5.9)
110
- lumberjack (1.0.13)
112
+ lumberjack (1.2.4)
111
113
  mail (2.7.1)
112
114
  mini_mime (>= 0.1.1)
113
115
  marcel (0.3.3)
114
116
  mimemagic (~> 0.3.2)
115
- method_source (0.9.2)
116
- mimemagic (0.3.3)
117
+ method_source (1.0.0)
118
+ mimemagic (0.3.5)
117
119
  mini_mime (1.0.2)
118
120
  mini_portile2 (2.4.0)
119
- minitest (5.13.0)
120
- msgpack (1.3.1)
121
+ minitest (5.14.0)
122
+ msgpack (1.3.3)
121
123
  multi_json (1.14.1)
122
124
  mysql2 (0.5.3)
123
125
  nenv (0.3.0)
124
126
  nio4r (2.5.2)
125
- nokogiri (1.10.8)
127
+ nokogiri (1.10.9)
126
128
  mini_portile2 (~> 2.4.0)
127
129
  notiffany (0.1.3)
128
130
  nenv (~> 0.1)
129
131
  shellany (~> 0.0)
130
132
  parallel (1.19.1)
131
- parser (2.6.5.0)
133
+ parser (2.7.1.2)
132
134
  ast (~> 2.4.0)
133
- pg (1.1.4)
135
+ pg (1.2.3)
134
136
  phobos (1.9.0)
135
137
  activesupport (>= 3.0.0)
136
138
  concurrent-ruby (>= 1.0.2)
@@ -139,69 +141,74 @@ GEM
139
141
  logging
140
142
  ruby-kafka
141
143
  thor
142
- pry (0.12.2)
143
- coderay (~> 1.1.0)
144
- method_source (~> 0.9.0)
145
- rack (2.0.8)
144
+ pry (0.13.1)
145
+ coderay (~> 1.1)
146
+ method_source (~> 1.0)
147
+ rack (2.2.3)
146
148
  rack-test (1.1.0)
147
149
  rack (>= 1.0, < 3)
148
- rails (5.2.4)
149
- actioncable (= 5.2.4)
150
- actionmailer (= 5.2.4)
151
- actionpack (= 5.2.4)
152
- actionview (= 5.2.4)
153
- activejob (= 5.2.4)
154
- activemodel (= 5.2.4)
155
- activerecord (= 5.2.4)
156
- activestorage (= 5.2.4)
157
- activesupport (= 5.2.4)
150
+ rails (5.2.4.2)
151
+ actioncable (= 5.2.4.2)
152
+ actionmailer (= 5.2.4.2)
153
+ actionpack (= 5.2.4.2)
154
+ actionview (= 5.2.4.2)
155
+ activejob (= 5.2.4.2)
156
+ activemodel (= 5.2.4.2)
157
+ activerecord (= 5.2.4.2)
158
+ activestorage (= 5.2.4.2)
159
+ activesupport (= 5.2.4.2)
158
160
  bundler (>= 1.3.0)
159
- railties (= 5.2.4)
161
+ railties (= 5.2.4.2)
160
162
  sprockets-rails (>= 2.0.0)
161
163
  rails-dom-testing (2.0.3)
162
164
  activesupport (>= 4.2.0)
163
165
  nokogiri (>= 1.6)
164
166
  rails-html-sanitizer (1.3.0)
165
167
  loofah (~> 2.3)
166
- railties (5.2.4)
167
- actionpack (= 5.2.4)
168
- activesupport (= 5.2.4)
168
+ railties (5.2.4.2)
169
+ actionpack (= 5.2.4.2)
170
+ activesupport (= 5.2.4.2)
169
171
  method_source
170
172
  rake (>= 0.8.7)
171
173
  thor (>= 0.19.0, < 2.0)
172
174
  rainbow (3.0.0)
173
175
  rake (13.0.1)
174
- rb-fsevent (0.10.3)
175
- rb-inotify (0.10.0)
176
+ rb-fsevent (0.10.4)
177
+ rb-inotify (0.10.1)
176
178
  ffi (~> 1.0)
179
+ rexml (3.2.4)
177
180
  rspec (3.9.0)
178
181
  rspec-core (~> 3.9.0)
179
182
  rspec-expectations (~> 3.9.0)
180
183
  rspec-mocks (~> 3.9.0)
181
- rspec-core (3.9.0)
182
- rspec-support (~> 3.9.0)
183
- rspec-expectations (3.9.0)
184
+ rspec-core (3.9.2)
185
+ rspec-support (~> 3.9.3)
186
+ rspec-expectations (3.9.1)
184
187
  diff-lcs (>= 1.2.0, < 2.0)
185
188
  rspec-support (~> 3.9.0)
186
- rspec-mocks (3.9.0)
189
+ rspec-mocks (3.9.1)
187
190
  diff-lcs (>= 1.2.0, < 2.0)
188
191
  rspec-support (~> 3.9.0)
189
- rspec-support (3.9.0)
192
+ rspec-support (3.9.3)
190
193
  rspec_junit_formatter (0.4.1)
191
194
  rspec-core (>= 2, < 4, != 2.12.0)
192
- rubocop (0.77.0)
195
+ rubocop (0.82.0)
193
196
  jaro_winkler (~> 1.5.1)
194
197
  parallel (~> 1.10)
195
- parser (>= 2.6)
198
+ parser (>= 2.7.0.1)
196
199
  rainbow (>= 2.2.2, < 4.0)
200
+ rexml
197
201
  ruby-progressbar (~> 1.7)
198
- unicode-display_width (>= 1.4.0, < 1.7)
199
- rubocop-rspec (1.37.1)
202
+ unicode-display_width (>= 1.4.0, < 2.0)
203
+ rubocop-rspec (1.39.0)
200
204
  rubocop (>= 0.68.1)
201
205
  ruby-kafka (0.7.10)
202
206
  digest-crc
203
207
  ruby-progressbar (1.10.1)
204
208
  shellany (0.0.1)
209
+ sigurd (0.0.1)
210
+ concurrent-ruby (~> 1)
211
+ exponential-backoff
205
212
  sprockets (4.0.0)
206
213
  concurrent-ruby (~> 1.0)
207
214
  rack (> 1, < 3)
@@ -209,15 +216,15 @@ GEM
209
216
  actionpack (>= 4.0)
210
217
  activesupport (>= 4.0)
211
218
  sprockets (>= 3.0.0)
212
- sqlite3 (1.4.1)
219
+ sqlite3 (1.4.2)
213
220
  thor (1.0.1)
214
221
  thread_safe (0.3.6)
215
- tzinfo (1.2.5)
222
+ tzinfo (1.2.7)
216
223
  thread_safe (~> 0.1)
217
- unicode-display_width (1.6.0)
224
+ unicode-display_width (1.7.0)
218
225
  websocket-driver (0.7.1)
219
226
  websocket-extensions (>= 0.1.0)
220
- websocket-extensions (0.1.4)
227
+ websocket-extensions (0.1.5)
221
228
 
222
229
  PLATFORMS
223
230
  ruby
@@ -226,7 +233,7 @@ DEPENDENCIES
226
233
  activerecord (~> 5.2)
227
234
  activerecord-import
228
235
  avro (~> 1.9)
229
- bundler (~> 1)
236
+ database_cleaner (~> 1.7)
230
237
  ddtrace (~> 0.11)
231
238
  deimos-ruby!
232
239
  dogstatsd-ruby (~> 4.2)
@@ -235,7 +242,7 @@ DEPENDENCIES
235
242
  guard-rubocop (~> 1)
236
243
  mysql2 (~> 0.5)
237
244
  pg (~> 1.1)
238
- rails (~> 5.2)
245
+ rails (~> 5.2, >= 5.2.4.2)
239
246
  rake (~> 13)
240
247
  rspec (~> 3)
241
248
  rspec_junit_formatter (~> 0.3)
@@ -244,4 +251,4 @@ DEPENDENCIES
244
251
  sqlite3 (~> 1.3)
245
252
 
246
253
  BUNDLED WITH
247
- 1.17.3
254
+ 2.1.4