gruf 2.2.2 → 2.9.1

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 (49) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +107 -12
  3. data/CODE_OF_CONDUCT.md +38 -41
  4. data/README.md +8 -360
  5. data/bin/gruf +2 -12
  6. data/gruf.gemspec +31 -7
  7. data/lib/gruf/cli/executor.rb +102 -0
  8. data/lib/gruf/client/error.rb +68 -0
  9. data/lib/gruf/client/error_factory.rb +105 -0
  10. data/lib/gruf/client.rb +52 -38
  11. data/lib/gruf/configuration.rb +25 -5
  12. data/lib/gruf/controllers/base.rb +35 -12
  13. data/lib/gruf/controllers/request.rb +21 -10
  14. data/lib/gruf/controllers/service_binder.rb +38 -6
  15. data/lib/gruf/error.rb +34 -9
  16. data/lib/gruf/errors/debug_info.rb +9 -2
  17. data/lib/gruf/errors/field.rb +2 -0
  18. data/lib/gruf/errors/helpers.rb +5 -0
  19. data/lib/gruf/hooks/base.rb +34 -0
  20. data/lib/gruf/hooks/executor.rb +47 -0
  21. data/lib/gruf/hooks/registry.rb +159 -0
  22. data/lib/gruf/instrumentable_grpc_server.rb +64 -0
  23. data/lib/gruf/integrations/rails/railtie.rb +10 -0
  24. data/lib/gruf/interceptors/active_record/connection_reset.rb +4 -3
  25. data/lib/gruf/interceptors/authentication/basic.rb +10 -2
  26. data/lib/gruf/interceptors/base.rb +3 -0
  27. data/lib/gruf/interceptors/client_interceptor.rb +117 -0
  28. data/lib/gruf/interceptors/context.rb +6 -4
  29. data/lib/gruf/interceptors/instrumentation/output_metadata_timer.rb +5 -4
  30. data/lib/gruf/interceptors/instrumentation/request_logging/formatters/base.rb +5 -1
  31. data/lib/gruf/interceptors/instrumentation/request_logging/formatters/logstash.rb +5 -1
  32. data/lib/gruf/interceptors/instrumentation/request_logging/formatters/plain.rb +5 -1
  33. data/lib/gruf/interceptors/instrumentation/request_logging/interceptor.rb +60 -29
  34. data/lib/gruf/interceptors/instrumentation/statsd.rb +5 -4
  35. data/lib/gruf/interceptors/registry.rb +6 -1
  36. data/lib/gruf/interceptors/server_interceptor.rb +2 -0
  37. data/lib/gruf/interceptors/timer.rb +12 -2
  38. data/lib/gruf/loggable.rb +2 -0
  39. data/lib/gruf/logging.rb +2 -0
  40. data/lib/gruf/outbound/request_context.rb +71 -0
  41. data/lib/gruf/response.rb +5 -2
  42. data/lib/gruf/serializers/errors/base.rb +2 -0
  43. data/lib/gruf/serializers/errors/json.rb +2 -0
  44. data/lib/gruf/server.rb +57 -23
  45. data/lib/gruf/synchronized_client.rb +97 -0
  46. data/lib/gruf/timer.rb +9 -6
  47. data/lib/gruf/version.rb +3 -1
  48. data/lib/gruf.rb +10 -0
  49. metadata +254 -17
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gruf
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.2
4
+ version: 2.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shaun McCormick
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-23 00:00:00.000000000 Z
11
+ date: 2021-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -25,33 +25,229 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.11'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: bundler-audit
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0.6'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0.6'
41
+ - !ruby/object:Gem::Dependency
42
+ name: factory_bot
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '6.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '6.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: ffaker
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '2.15'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '2.15'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
29
71
  requirement: !ruby/object:Gem::Requirement
30
72
  requirements:
31
73
  - - "~>"
32
74
  - !ruby/object:Gem::Version
33
- version: '10.0'
75
+ version: '0.12'
34
76
  type: :development
35
77
  prerelease: false
36
78
  version_requirements: !ruby/object:Gem::Requirement
37
79
  requirements:
38
80
  - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.12'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry-byebug
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '3.9'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '3.9'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '10.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
39
109
  - !ruby/object:Gem::Version
40
110
  version: '10.0'
41
111
  - !ruby/object:Gem::Dependency
42
- name: pry
112
+ name: rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '3.8'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '3.8'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rspec_junit_formatter
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0.4'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0.4'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '1.0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '1.0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rubocop-performance
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: 0.0.1
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: 0.0.1
167
+ - !ruby/object:Gem::Dependency
168
+ name: rubocop-rspec
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '2.0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '2.0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: rubocop-thread_safety
43
183
  requirement: !ruby/object:Gem::Requirement
44
184
  requirements:
45
185
  - - ">="
46
186
  - !ruby/object:Gem::Version
47
- version: '0'
187
+ version: '0.3'
48
188
  type: :development
49
189
  prerelease: false
50
190
  version_requirements: !ruby/object:Gem::Requirement
51
191
  requirements:
52
192
  - - ">="
53
193
  - !ruby/object:Gem::Version
54
- version: '0'
194
+ version: '0.3'
195
+ - !ruby/object:Gem::Dependency
196
+ name: simplecov
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0.16'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0.16'
209
+ - !ruby/object:Gem::Dependency
210
+ name: activesupport
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">"
214
+ - !ruby/object:Gem::Version
215
+ version: '4'
216
+ type: :runtime
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">"
221
+ - !ruby/object:Gem::Version
222
+ version: '4'
223
+ - !ruby/object:Gem::Dependency
224
+ name: concurrent-ruby
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">"
228
+ - !ruby/object:Gem::Version
229
+ version: '1'
230
+ type: :runtime
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">"
235
+ - !ruby/object:Gem::Version
236
+ version: '1'
237
+ - !ruby/object:Gem::Dependency
238
+ name: e2mmap
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - "~>"
242
+ - !ruby/object:Gem::Version
243
+ version: '0.1'
244
+ type: :runtime
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - "~>"
249
+ - !ruby/object:Gem::Version
250
+ version: '0.1'
55
251
  - !ruby/object:Gem::Dependency
56
252
  name: grpc
57
253
  requirement: !ruby/object:Gem::Requirement
@@ -81,20 +277,48 @@ dependencies:
81
277
  - !ruby/object:Gem::Version
82
278
  version: '1.10'
83
279
  - !ruby/object:Gem::Dependency
84
- name: activesupport
280
+ name: json
85
281
  requirement: !ruby/object:Gem::Requirement
86
282
  requirements:
87
283
  - - ">="
88
284
  - !ruby/object:Gem::Version
89
- version: '0'
285
+ version: '2.3'
90
286
  type: :runtime
91
287
  prerelease: false
92
288
  version_requirements: !ruby/object:Gem::Requirement
93
289
  requirements:
94
290
  - - ">="
95
291
  - !ruby/object:Gem::Version
96
- version: '0'
97
- description: gRPC Ruby Framework
292
+ version: '2.3'
293
+ - !ruby/object:Gem::Dependency
294
+ name: slop
295
+ requirement: !ruby/object:Gem::Requirement
296
+ requirements:
297
+ - - "~>"
298
+ - !ruby/object:Gem::Version
299
+ version: '4.6'
300
+ type: :runtime
301
+ prerelease: false
302
+ version_requirements: !ruby/object:Gem::Requirement
303
+ requirements:
304
+ - - "~>"
305
+ - !ruby/object:Gem::Version
306
+ version: '4.6'
307
+ - !ruby/object:Gem::Dependency
308
+ name: thwait
309
+ requirement: !ruby/object:Gem::Requirement
310
+ requirements:
311
+ - - "~>"
312
+ - !ruby/object:Gem::Version
313
+ version: '0.1'
314
+ type: :runtime
315
+ prerelease: false
316
+ version_requirements: !ruby/object:Gem::Requirement
317
+ requirements:
318
+ - - "~>"
319
+ - !ruby/object:Gem::Version
320
+ version: '0.1'
321
+ description: gRPC Ruby Framework for building complex gRPC applications at scale
98
322
  email:
99
323
  - splittingred@gmail.com
100
324
  executables:
@@ -108,7 +332,10 @@ files:
108
332
  - bin/gruf
109
333
  - gruf.gemspec
110
334
  - lib/gruf.rb
335
+ - lib/gruf/cli/executor.rb
111
336
  - lib/gruf/client.rb
337
+ - lib/gruf/client/error.rb
338
+ - lib/gruf/client/error_factory.rb
112
339
  - lib/gruf/configuration.rb
113
340
  - lib/gruf/controllers/base.rb
114
341
  - lib/gruf/controllers/request.rb
@@ -117,9 +344,15 @@ files:
117
344
  - lib/gruf/errors/debug_info.rb
118
345
  - lib/gruf/errors/field.rb
119
346
  - lib/gruf/errors/helpers.rb
347
+ - lib/gruf/hooks/base.rb
348
+ - lib/gruf/hooks/executor.rb
349
+ - lib/gruf/hooks/registry.rb
350
+ - lib/gruf/instrumentable_grpc_server.rb
351
+ - lib/gruf/integrations/rails/railtie.rb
120
352
  - lib/gruf/interceptors/active_record/connection_reset.rb
121
353
  - lib/gruf/interceptors/authentication/basic.rb
122
354
  - lib/gruf/interceptors/base.rb
355
+ - lib/gruf/interceptors/client_interceptor.rb
123
356
  - lib/gruf/interceptors/context.rb
124
357
  - lib/gruf/interceptors/instrumentation/output_metadata_timer.rb
125
358
  - lib/gruf/interceptors/instrumentation/request_logging/formatters/base.rb
@@ -132,17 +365,19 @@ files:
132
365
  - lib/gruf/interceptors/timer.rb
133
366
  - lib/gruf/loggable.rb
134
367
  - lib/gruf/logging.rb
368
+ - lib/gruf/outbound/request_context.rb
135
369
  - lib/gruf/response.rb
136
370
  - lib/gruf/serializers/errors/base.rb
137
371
  - lib/gruf/serializers/errors/json.rb
138
372
  - lib/gruf/server.rb
373
+ - lib/gruf/synchronized_client.rb
139
374
  - lib/gruf/timer.rb
140
375
  - lib/gruf/version.rb
141
376
  homepage: https://github.com/bigcommerce/gruf
142
377
  licenses:
143
378
  - MIT
144
379
  metadata: {}
145
- post_install_message:
380
+ post_install_message:
146
381
  rdoc_options: []
147
382
  require_paths:
148
383
  - lib
@@ -150,16 +385,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
150
385
  requirements:
151
386
  - - ">="
152
387
  - !ruby/object:Gem::Version
153
- version: '0'
388
+ version: '2.4'
389
+ - - "<"
390
+ - !ruby/object:Gem::Version
391
+ version: '3.1'
154
392
  required_rubygems_version: !ruby/object:Gem::Requirement
155
393
  requirements:
156
394
  - - ">="
157
395
  - !ruby/object:Gem::Version
158
396
  version: '0'
159
397
  requirements: []
160
- rubyforge_project:
161
- rubygems_version: 2.6.13
162
- signing_key:
398
+ rubygems_version: 3.0.9
399
+ signing_key:
163
400
  specification_version: 4
164
401
  summary: gRPC Ruby Framework
165
402
  test_files: []