launchdarkly-server-sdk 5.8.0 → 6.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +28 -122
  3. data/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
  4. data/.github/ISSUE_TEMPLATE/config.yml +5 -0
  5. data/.gitignore +2 -1
  6. data/.ldrelease/build-docs.sh +18 -0
  7. data/.ldrelease/circleci/linux/execute.sh +18 -0
  8. data/.ldrelease/circleci/mac/execute.sh +18 -0
  9. data/.ldrelease/circleci/template/build.sh +29 -0
  10. data/.ldrelease/circleci/template/publish.sh +23 -0
  11. data/.ldrelease/circleci/template/set-gem-home.sh +7 -0
  12. data/.ldrelease/circleci/template/test.sh +10 -0
  13. data/.ldrelease/circleci/template/update-version.sh +8 -0
  14. data/.ldrelease/circleci/windows/execute.ps1 +19 -0
  15. data/.ldrelease/config.yml +14 -2
  16. data/CHANGELOG.md +29 -0
  17. data/CONTRIBUTING.md +1 -1
  18. data/README.md +4 -3
  19. data/azure-pipelines.yml +1 -1
  20. data/docs/Makefile +26 -0
  21. data/docs/index.md +9 -0
  22. data/launchdarkly-server-sdk.gemspec +20 -13
  23. data/lib/ldclient-rb.rb +0 -1
  24. data/lib/ldclient-rb/config.rb +15 -3
  25. data/lib/ldclient-rb/evaluation_detail.rb +293 -0
  26. data/lib/ldclient-rb/events.rb +6 -7
  27. data/lib/ldclient-rb/file_data_source.rb +1 -1
  28. data/lib/ldclient-rb/impl/evaluator.rb +225 -0
  29. data/lib/ldclient-rb/impl/evaluator_bucketing.rb +74 -0
  30. data/lib/ldclient-rb/impl/evaluator_operators.rb +160 -0
  31. data/lib/ldclient-rb/impl/event_factory.rb +22 -0
  32. data/lib/ldclient-rb/impl/event_sender.rb +56 -40
  33. data/lib/ldclient-rb/impl/integrations/consul_impl.rb +5 -5
  34. data/lib/ldclient-rb/impl/integrations/dynamodb_impl.rb +5 -5
  35. data/lib/ldclient-rb/impl/integrations/redis_impl.rb +5 -7
  36. data/lib/ldclient-rb/impl/model/serialization.rb +62 -0
  37. data/lib/ldclient-rb/impl/unbounded_pool.rb +34 -0
  38. data/lib/ldclient-rb/ldclient.rb +38 -17
  39. data/lib/ldclient-rb/polling.rb +1 -4
  40. data/lib/ldclient-rb/requestor.rb +25 -23
  41. data/lib/ldclient-rb/stream.rb +10 -30
  42. data/lib/ldclient-rb/util.rb +12 -8
  43. data/lib/ldclient-rb/version.rb +1 -1
  44. data/spec/evaluation_detail_spec.rb +135 -0
  45. data/spec/event_sender_spec.rb +20 -2
  46. data/spec/events_spec.rb +10 -0
  47. data/spec/http_util.rb +11 -1
  48. data/spec/impl/evaluator_bucketing_spec.rb +111 -0
  49. data/spec/impl/evaluator_clause_spec.rb +55 -0
  50. data/spec/impl/evaluator_operators_spec.rb +141 -0
  51. data/spec/impl/evaluator_rule_spec.rb +96 -0
  52. data/spec/impl/evaluator_segment_spec.rb +125 -0
  53. data/spec/impl/evaluator_spec.rb +305 -0
  54. data/spec/impl/evaluator_spec_base.rb +75 -0
  55. data/spec/impl/model/serialization_spec.rb +41 -0
  56. data/spec/launchdarkly-server-sdk_spec.rb +1 -1
  57. data/spec/ldclient_end_to_end_spec.rb +34 -0
  58. data/spec/ldclient_spec.rb +64 -12
  59. data/spec/polling_spec.rb +2 -2
  60. data/spec/redis_feature_store_spec.rb +2 -2
  61. data/spec/requestor_spec.rb +11 -45
  62. data/spec/spec_helper.rb +0 -3
  63. data/spec/stream_spec.rb +1 -16
  64. metadata +111 -61
  65. data/.yardopts +0 -9
  66. data/Gemfile.lock +0 -100
  67. data/lib/ldclient-rb/evaluation.rb +0 -462
  68. data/scripts/gendocs.sh +0 -11
  69. data/scripts/release.sh +0 -27
  70. data/spec/evaluation_spec.rb +0 -789
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,3 @@
1
- require "codeclimate-test-reporter"
2
- CodeClimate::TestReporter.start
3
-
4
1
  require "ldclient-rb"
5
2
 
6
3
  $null_log = ::Logger.new($stdout)
data/spec/stream_spec.rb CHANGED
@@ -4,8 +4,7 @@ require "spec_helper"
4
4
  describe LaunchDarkly::StreamProcessor do
5
5
  subject { LaunchDarkly::StreamProcessor }
6
6
  let(:config) { LaunchDarkly::Config.new }
7
- let(:requestor) { double() }
8
- let(:processor) { subject.new("sdk_key", config, requestor) }
7
+ let(:processor) { subject.new("sdk_key", config) }
9
8
 
10
9
  describe '#process_message' do
11
10
  let(:put_message) { SSE::StreamEvent.new(:put, '{"data":{"flags":{"asdf": {"key": "asdf"}},"segments":{"segkey": {"key": "segkey"}}}}') }
@@ -13,8 +12,6 @@ describe LaunchDarkly::StreamProcessor do
13
12
  let(:patch_seg_message) { SSE::StreamEvent.new(:patch, '{"path": "/segments/key", "data": {"key": "asdf", "version": 1}}') }
14
13
  let(:delete_flag_message) { SSE::StreamEvent.new(:delete, '{"path": "/flags/key", "version": 2}') }
15
14
  let(:delete_seg_message) { SSE::StreamEvent.new(:delete, '{"path": "/segments/key", "version": 2}') }
16
- let(:indirect_patch_flag_message) { SSE::StreamEvent.new(:'indirect/patch', "/flags/key") }
17
- let(:indirect_patch_segment_message) { SSE::StreamEvent.new(:'indirect/patch', "/segments/key") }
18
15
 
19
16
  it "will accept PUT methods" do
20
17
  processor.send(:process_message, put_message)
@@ -39,18 +36,6 @@ describe LaunchDarkly::StreamProcessor do
39
36
  processor.send(:process_message, delete_seg_message)
40
37
  expect(config.feature_store.get(LaunchDarkly::SEGMENTS, "key")).to eq(nil)
41
38
  end
42
- it "will accept INDIRECT PATCH method for flags" do
43
- flag = { key: 'key', version: 1 }
44
- allow(requestor).to receive(:request_flag).with(flag[:key]).and_return(flag)
45
- processor.send(:process_message, indirect_patch_flag_message);
46
- expect(config.feature_store.get(LaunchDarkly::FEATURES, flag[:key])).to eq(flag)
47
- end
48
- it "will accept INDIRECT PATCH method for segments" do
49
- segment = { key: 'key', version: 1 }
50
- allow(requestor).to receive(:request_segment).with(segment[:key]).and_return(segment)
51
- processor.send(:process_message, indirect_patch_segment_message);
52
- expect(config.feature_store.get(LaunchDarkly::SEGMENTS, segment[:key])).to eq(segment)
53
- end
54
39
  it "will log a warning if the method is not recognized" do
55
40
  expect(processor.instance_variable_get(:@config).logger).to receive :warn
56
41
  processor.send(:process_message, SSE::StreamEvent.new(type: :get, data: "", id: nil))
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: launchdarkly-server-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.8.0
4
+ version: 6.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - LaunchDarkly
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-27 00:00:00.000000000 Z
11
+ date: 2021-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-dynamodb
@@ -16,160 +16,154 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.18'
19
+ version: '1.57'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.18'
26
+ version: '1.57'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.7'
33
+ version: '2.1'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.7'
40
+ version: '2.1'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.2'
47
+ version: '3.10'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.2'
54
+ version: '3.10'
55
55
  - !ruby/object:Gem::Dependency
56
- name: codeclimate-test-reporter
56
+ name: diplomat
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 2.4.2
62
62
  type: :development
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: '0'
68
+ version: 2.4.2
69
69
  - !ruby/object:Gem::Dependency
70
- name: diplomat
70
+ name: redis
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 2.0.2
75
+ version: '4.2'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 2.0.2
82
+ version: '4.2'
83
83
  - !ruby/object:Gem::Dependency
84
- name: redis
84
+ name: connection_pool
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 3.3.5
89
+ version: 2.2.3
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 3.3.5
96
+ version: 2.2.3
97
97
  - !ruby/object:Gem::Dependency
98
- name: connection_pool
98
+ name: rspec_junit_formatter
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 2.1.2
103
+ version: '0.4'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 2.1.2
110
+ version: '0.4'
111
111
  - !ruby/object:Gem::Dependency
112
- name: rspec_junit_formatter
112
+ name: timecop
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.3.0
117
+ version: '0.9'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 0.3.0
124
+ version: '0.9'
125
125
  - !ruby/object:Gem::Dependency
126
- name: timecop
126
+ name: listen
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: 0.9.1
131
+ version: '3.3'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: 0.9.1
138
+ version: '3.3'
139
139
  - !ruby/object:Gem::Dependency
140
- name: listen
140
+ name: webrick
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '3.0'
145
+ version: '1.7'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: '3.0'
152
+ version: '1.7'
153
153
  - !ruby/object:Gem::Dependency
154
- name: json
154
+ name: oga
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- version: '1.8'
160
- - - "<"
157
+ - - "~>"
161
158
  - !ruby/object:Gem::Version
162
- version: '3'
163
- type: :runtime
159
+ version: '2.2'
160
+ type: :development
164
161
  prerelease: false
165
162
  version_requirements: !ruby/object:Gem::Requirement
166
163
  requirements:
167
- - - ">="
168
- - !ruby/object:Gem::Version
169
- version: '1.8'
170
- - - "<"
164
+ - - "~>"
171
165
  - !ruby/object:Gem::Version
172
- version: '3'
166
+ version: '2.2'
173
167
  - !ruby/object:Gem::Dependency
174
168
  name: semantic
175
169
  requirement: !ruby/object:Gem::Requirement
@@ -190,28 +184,56 @@ dependencies:
190
184
  requirements:
191
185
  - - "~>"
192
186
  - !ruby/object:Gem::Version
193
- version: '1.0'
187
+ version: '1.1'
194
188
  type: :runtime
195
189
  prerelease: false
196
190
  version_requirements: !ruby/object:Gem::Requirement
197
191
  requirements:
198
192
  - - "~>"
199
193
  - !ruby/object:Gem::Version
200
- version: '1.0'
194
+ version: '1.1'
201
195
  - !ruby/object:Gem::Dependency
202
196
  name: ld-eventsource
203
197
  requirement: !ruby/object:Gem::Requirement
204
198
  requirements:
205
- - - '='
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '2.0'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '2.0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: json
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
206
214
  - !ruby/object:Gem::Version
207
- version: 1.0.3
215
+ version: 2.3.1
208
216
  type: :runtime
209
217
  prerelease: false
210
218
  version_requirements: !ruby/object:Gem::Requirement
211
219
  requirements:
212
- - - '='
220
+ - - "~>"
213
221
  - !ruby/object:Gem::Version
214
- version: 1.0.3
222
+ version: 2.3.1
223
+ - !ruby/object:Gem::Dependency
224
+ name: http
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - "~>"
228
+ - !ruby/object:Gem::Version
229
+ version: 4.4.1
230
+ type: :runtime
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - "~>"
235
+ - !ruby/object:Gem::Version
236
+ version: 4.4.1
215
237
  description: Official LaunchDarkly SDK for Ruby
216
238
  email:
217
239
  - team@launchdarkly.com
@@ -221,29 +243,39 @@ extra_rdoc_files: []
221
243
  files:
222
244
  - ".circleci/config.yml"
223
245
  - ".github/ISSUE_TEMPLATE/bug_report.md"
246
+ - ".github/ISSUE_TEMPLATE/config.yml"
224
247
  - ".github/ISSUE_TEMPLATE/feature_request.md"
225
248
  - ".github/pull_request_template.md"
226
249
  - ".gitignore"
227
250
  - ".hound.yml"
251
+ - ".ldrelease/build-docs.sh"
252
+ - ".ldrelease/circleci/linux/execute.sh"
253
+ - ".ldrelease/circleci/mac/execute.sh"
254
+ - ".ldrelease/circleci/template/build.sh"
255
+ - ".ldrelease/circleci/template/publish.sh"
256
+ - ".ldrelease/circleci/template/set-gem-home.sh"
257
+ - ".ldrelease/circleci/template/test.sh"
258
+ - ".ldrelease/circleci/template/update-version.sh"
259
+ - ".ldrelease/circleci/windows/execute.ps1"
228
260
  - ".ldrelease/config.yml"
229
261
  - ".rspec"
230
262
  - ".rubocop.yml"
231
263
  - ".simplecov"
232
- - ".yardopts"
233
264
  - CHANGELOG.md
234
265
  - CODEOWNERS
235
266
  - CONTRIBUTING.md
236
267
  - Gemfile
237
- - Gemfile.lock
238
268
  - LICENSE.txt
239
269
  - README.md
240
270
  - azure-pipelines.yml
271
+ - docs/Makefile
272
+ - docs/index.md
241
273
  - launchdarkly-server-sdk.gemspec
242
274
  - lib/launchdarkly-server-sdk.rb
243
275
  - lib/ldclient-rb.rb
244
276
  - lib/ldclient-rb/cache_store.rb
245
277
  - lib/ldclient-rb/config.rb
246
- - lib/ldclient-rb/evaluation.rb
278
+ - lib/ldclient-rb/evaluation_detail.rb
247
279
  - lib/ldclient-rb/event_summarizer.rb
248
280
  - lib/ldclient-rb/events.rb
249
281
  - lib/ldclient-rb/expiring_cache.rb
@@ -251,13 +283,18 @@ files:
251
283
  - lib/ldclient-rb/flags_state.rb
252
284
  - lib/ldclient-rb/impl.rb
253
285
  - lib/ldclient-rb/impl/diagnostic_events.rb
286
+ - lib/ldclient-rb/impl/evaluator.rb
287
+ - lib/ldclient-rb/impl/evaluator_bucketing.rb
288
+ - lib/ldclient-rb/impl/evaluator_operators.rb
254
289
  - lib/ldclient-rb/impl/event_factory.rb
255
290
  - lib/ldclient-rb/impl/event_sender.rb
256
291
  - lib/ldclient-rb/impl/integrations/consul_impl.rb
257
292
  - lib/ldclient-rb/impl/integrations/dynamodb_impl.rb
258
293
  - lib/ldclient-rb/impl/integrations/redis_impl.rb
294
+ - lib/ldclient-rb/impl/model/serialization.rb
259
295
  - lib/ldclient-rb/impl/store_client_wrapper.rb
260
296
  - lib/ldclient-rb/impl/store_data_set_sorter.rb
297
+ - lib/ldclient-rb/impl/unbounded_pool.rb
261
298
  - lib/ldclient-rb/impl/util.rb
262
299
  - lib/ldclient-rb/in_memory_store.rb
263
300
  - lib/ldclient-rb/integrations.rb
@@ -278,11 +315,9 @@ files:
278
315
  - lib/ldclient-rb/user_filter.rb
279
316
  - lib/ldclient-rb/util.rb
280
317
  - lib/ldclient-rb/version.rb
281
- - scripts/gendocs.sh
282
- - scripts/release.sh
283
318
  - spec/config_spec.rb
284
319
  - spec/diagnostic_events_spec.rb
285
- - spec/evaluation_spec.rb
320
+ - spec/evaluation_detail_spec.rb
286
321
  - spec/event_sender_spec.rb
287
322
  - spec/event_summarizer_spec.rb
288
323
  - spec/events_spec.rb
@@ -294,6 +329,14 @@ files:
294
329
  - spec/fixtures/user.json
295
330
  - spec/flags_state_spec.rb
296
331
  - spec/http_util.rb
332
+ - spec/impl/evaluator_bucketing_spec.rb
333
+ - spec/impl/evaluator_clause_spec.rb
334
+ - spec/impl/evaluator_operators_spec.rb
335
+ - spec/impl/evaluator_rule_spec.rb
336
+ - spec/impl/evaluator_segment_spec.rb
337
+ - spec/impl/evaluator_spec.rb
338
+ - spec/impl/evaluator_spec_base.rb
339
+ - spec/impl/model/serialization_spec.rb
297
340
  - spec/in_memory_feature_store_spec.rb
298
341
  - spec/integrations/consul_feature_store_spec.rb
299
342
  - spec/integrations/dynamodb_feature_store_spec.rb
@@ -326,22 +369,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
326
369
  requirements:
327
370
  - - ">="
328
371
  - !ruby/object:Gem::Version
329
- version: '0'
372
+ version: 2.5.0
330
373
  required_rubygems_version: !ruby/object:Gem::Requirement
331
374
  requirements:
332
375
  - - ">="
333
376
  - !ruby/object:Gem::Version
334
377
  version: '0'
335
378
  requirements: []
336
- rubyforge_project:
337
- rubygems_version: 2.5.2.3
379
+ rubygems_version: 3.0.3
338
380
  signing_key:
339
381
  specification_version: 4
340
382
  summary: LaunchDarkly SDK for Ruby
341
383
  test_files:
342
384
  - spec/config_spec.rb
343
385
  - spec/diagnostic_events_spec.rb
344
- - spec/evaluation_spec.rb
386
+ - spec/evaluation_detail_spec.rb
345
387
  - spec/event_sender_spec.rb
346
388
  - spec/event_summarizer_spec.rb
347
389
  - spec/events_spec.rb
@@ -353,6 +395,14 @@ test_files:
353
395
  - spec/fixtures/user.json
354
396
  - spec/flags_state_spec.rb
355
397
  - spec/http_util.rb
398
+ - spec/impl/evaluator_bucketing_spec.rb
399
+ - spec/impl/evaluator_clause_spec.rb
400
+ - spec/impl/evaluator_operators_spec.rb
401
+ - spec/impl/evaluator_rule_spec.rb
402
+ - spec/impl/evaluator_segment_spec.rb
403
+ - spec/impl/evaluator_spec.rb
404
+ - spec/impl/evaluator_spec_base.rb
405
+ - spec/impl/model/serialization_spec.rb
356
406
  - spec/in_memory_feature_store_spec.rb
357
407
  - spec/integrations/consul_feature_store_spec.rb
358
408
  - spec/integrations/dynamodb_feature_store_spec.rb
data/.yardopts DELETED
@@ -1,9 +0,0 @@
1
- --no-private
2
- --markup markdown
3
- --embed-mixins
4
- lib/*.rb
5
- lib/**/*.rb
6
- lib/**/**/*.rb
7
- lib/**/**/**/*.rb
8
- -
9
- README.md