deimos-ruby 1.16.1 → 1.16.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +13 -0
  4. data/Gemfile +6 -0
  5. data/README.md +22 -0
  6. data/lib/deimos/active_record_consume/batch_consumption.rb +7 -2
  7. data/lib/deimos/active_record_consume/batch_slicer.rb +2 -0
  8. data/lib/deimos/active_record_consume/message_consumption.rb +8 -4
  9. data/lib/deimos/active_record_consumer.rb +7 -4
  10. data/lib/deimos/active_record_producer.rb +10 -0
  11. data/lib/deimos/backends/base.rb +4 -2
  12. data/lib/deimos/backends/kafka.rb +1 -0
  13. data/lib/deimos/backends/kafka_async.rb +1 -0
  14. data/lib/deimos/config/configuration.rb +4 -0
  15. data/lib/deimos/config/phobos_config.rb +2 -1
  16. data/lib/deimos/consume/batch_consumption.rb +8 -1
  17. data/lib/deimos/consume/message_consumption.rb +4 -1
  18. data/lib/deimos/instrumentation.rb +11 -4
  19. data/lib/deimos/kafka_message.rb +1 -0
  20. data/lib/deimos/kafka_source.rb +5 -0
  21. data/lib/deimos/kafka_topic_info.rb +4 -0
  22. data/lib/deimos/message.rb +19 -2
  23. data/lib/deimos/metrics/datadog.rb +2 -1
  24. data/lib/deimos/metrics/mock.rb +2 -2
  25. data/lib/deimos/metrics/provider.rb +6 -0
  26. data/lib/deimos/monkey_patches/phobos_cli.rb +1 -1
  27. data/lib/deimos/monkey_patches/phobos_producer.rb +1 -0
  28. data/lib/deimos/producer.rb +12 -6
  29. data/lib/deimos/schema_backends/base.rb +31 -17
  30. data/lib/deimos/schema_backends/mock.rb +2 -2
  31. data/lib/deimos/schema_class/base.rb +9 -5
  32. data/lib/deimos/schema_class/enum.rb +4 -2
  33. data/lib/deimos/schema_class/record.rb +12 -6
  34. data/lib/deimos/shared_config.rb +6 -2
  35. data/lib/deimos/test_helpers.rb +21 -4
  36. data/lib/deimos/tracing/datadog.rb +1 -1
  37. data/lib/deimos/tracing/mock.rb +4 -3
  38. data/lib/deimos/tracing/provider.rb +5 -0
  39. data/lib/deimos/utils/db_poller.rb +9 -1
  40. data/lib/deimos/utils/db_producer.rb +14 -2
  41. data/lib/deimos/utils/deadlock_retry.rb +3 -0
  42. data/lib/deimos/utils/inline_consumer.rb +14 -6
  43. data/lib/deimos/utils/lag_reporter.rb +11 -0
  44. data/lib/deimos/utils/schema_controller_mixin.rb +8 -0
  45. data/lib/deimos/version.rb +1 -1
  46. data/lib/deimos.rb +3 -2
  47. data/lib/generators/deimos/active_record_generator.rb +1 -1
  48. data/lib/generators/deimos/db_backend_generator.rb +1 -0
  49. data/lib/generators/deimos/db_poller_generator.rb +1 -0
  50. data/lib/generators/deimos/schema_class/templates/schema_record.rb.tt +13 -5
  51. data/lib/generators/deimos/schema_class_generator.rb +51 -24
  52. data/rbs_collection.lock.yaml +176 -0
  53. data/rbs_collection.yaml +15 -0
  54. data/regenerate_test_schema_classes.rb +68 -0
  55. data/sig/avro.rbs +14 -0
  56. data/sig/defs.rbs +1859 -0
  57. data/sig/fig_tree.rbs +2 -0
  58. data/spec/active_record_producer_spec.rb +24 -0
  59. data/spec/generators/schema_class/my_schema_spec.rb +16 -0
  60. data/spec/generators/schema_class/my_schema_with_circular_reference_spec.rb +1 -1
  61. data/spec/generators/schema_class/my_schema_with_complex_types_spec.rb +32 -24
  62. data/spec/producer_spec.rb +11 -11
  63. data/spec/schemas/{generated.rb → my_namespace/generated.rb} +28 -32
  64. data/spec/schemas/{my_nested_schema.rb → my_namespace/my_nested_schema.rb} +23 -16
  65. data/spec/schemas/{my_schema.rb → my_namespace/my_schema.rb} +12 -5
  66. data/spec/schemas/my_namespace/my_schema_compound_key.rb +41 -0
  67. data/spec/schemas/my_namespace/my_schema_id_key.rb +36 -0
  68. data/spec/schemas/{my_schema_key.rb → my_namespace/my_schema_key.rb} +3 -3
  69. data/spec/schemas/my_namespace/my_schema_with_boolean.rb +41 -0
  70. data/spec/schemas/{my_schema_with_circular_reference.rb → my_namespace/my_schema_with_circular_reference.rb} +15 -10
  71. data/spec/schemas/{my_schema_with_complex_type.rb → my_namespace/my_schema_with_complex_type.rb} +34 -49
  72. data/spec/schemas/my_namespace/my_schema_with_date_time.rb +56 -0
  73. data/spec/schemas/my_namespace/my_schema_with_id.rb +51 -0
  74. data/spec/schemas/my_namespace/my_schema_with_unique_id.rb +56 -0
  75. data/spec/schemas/my_namespace/wibble.rb +76 -0
  76. data/spec/schemas/my_namespace/widget.rb +56 -0
  77. data/spec/schemas/my_namespace/widget_the_second.rb +56 -0
  78. data/spec/schemas/request/create_topic.rb +36 -0
  79. data/spec/schemas/request/index.rb +36 -0
  80. data/spec/schemas/request/update_request.rb +36 -0
  81. data/spec/schemas/response/create_topic.rb +36 -0
  82. data/spec/schemas/response/index.rb +36 -0
  83. data/spec/schemas/response/update_response.rb +36 -0
  84. data/spec/snapshots/consumers-no-nest.snap +93 -86
  85. data/spec/snapshots/consumers.snap +94 -87
  86. data/spec/snapshots/consumers_and_producers-no-nest.snap +108 -87
  87. data/spec/snapshots/consumers_and_producers.snap +109 -88
  88. data/spec/snapshots/consumers_circular-no-nest.snap +93 -86
  89. data/spec/snapshots/consumers_circular.snap +94 -87
  90. data/spec/snapshots/consumers_complex_types-no-nest.snap +93 -86
  91. data/spec/snapshots/consumers_complex_types.snap +94 -87
  92. data/spec/snapshots/consumers_nested-no-nest.snap +93 -86
  93. data/spec/snapshots/consumers_nested.snap +94 -87
  94. data/spec/snapshots/namespace_folders.snap +111 -90
  95. data/spec/snapshots/producers_with_key-no-nest.snap +94 -87
  96. data/spec/snapshots/producers_with_key.snap +95 -88
  97. data/spec/spec_helper.rb +2 -1
  98. metadata +53 -15
@@ -0,0 +1,176 @@
1
+ ---
2
+ sources:
3
+ - name: ruby/gem_rbs_collection
4
+ remote: https://github.com/ruby/gem_rbs_collection.git
5
+ revision: main
6
+ repo_dir: gems
7
+ path: ".gem_rbs_collection"
8
+ gems:
9
+ - name: actionpack
10
+ version: '6.0'
11
+ source:
12
+ type: git
13
+ name: ruby/gem_rbs_collection
14
+ revision: 4b908cef352d601d80978a9fe3e2a09210e7fc00
15
+ remote: https://github.com/ruby/gem_rbs_collection.git
16
+ repo_dir: gems
17
+ - name: actionview
18
+ version: '6.0'
19
+ source:
20
+ type: git
21
+ name: ruby/gem_rbs_collection
22
+ revision: 4b908cef352d601d80978a9fe3e2a09210e7fc00
23
+ remote: https://github.com/ruby/gem_rbs_collection.git
24
+ repo_dir: gems
25
+ - name: activejob
26
+ version: '6.0'
27
+ source:
28
+ type: git
29
+ name: ruby/gem_rbs_collection
30
+ revision: 4b908cef352d601d80978a9fe3e2a09210e7fc00
31
+ remote: https://github.com/ruby/gem_rbs_collection.git
32
+ repo_dir: gems
33
+ - name: activemodel
34
+ version: '6.0'
35
+ source:
36
+ type: git
37
+ name: ruby/gem_rbs_collection
38
+ revision: 4b908cef352d601d80978a9fe3e2a09210e7fc00
39
+ remote: https://github.com/ruby/gem_rbs_collection.git
40
+ repo_dir: gems
41
+ - name: activerecord
42
+ version: '6.1'
43
+ source:
44
+ type: git
45
+ name: ruby/gem_rbs_collection
46
+ revision: 4b908cef352d601d80978a9fe3e2a09210e7fc00
47
+ remote: https://github.com/ruby/gem_rbs_collection.git
48
+ repo_dir: gems
49
+ - name: activestorage
50
+ version: '6.1'
51
+ source:
52
+ type: git
53
+ name: ruby/gem_rbs_collection
54
+ revision: 4b908cef352d601d80978a9fe3e2a09210e7fc00
55
+ remote: https://github.com/ruby/gem_rbs_collection.git
56
+ repo_dir: gems
57
+ - name: activesupport
58
+ version: '6.0'
59
+ source:
60
+ type: git
61
+ name: ruby/gem_rbs_collection
62
+ revision: 4b908cef352d601d80978a9fe3e2a09210e7fc00
63
+ remote: https://github.com/ruby/gem_rbs_collection.git
64
+ repo_dir: gems
65
+ - name: ast
66
+ version: '2.4'
67
+ source:
68
+ type: git
69
+ name: ruby/gem_rbs_collection
70
+ revision: 4b908cef352d601d80978a9fe3e2a09210e7fc00
71
+ remote: https://github.com/ruby/gem_rbs_collection.git
72
+ repo_dir: gems
73
+ - name: deimos-ruby
74
+ version: 1.16.1
75
+ source:
76
+ type: rubygems
77
+ - name: i18n
78
+ version: '1.10'
79
+ source:
80
+ type: git
81
+ name: ruby/gem_rbs_collection
82
+ revision: 4b908cef352d601d80978a9fe3e2a09210e7fc00
83
+ remote: https://github.com/ruby/gem_rbs_collection.git
84
+ repo_dir: gems
85
+ - name: listen
86
+ version: '3.2'
87
+ source:
88
+ type: git
89
+ name: ruby/gem_rbs_collection
90
+ revision: 4b908cef352d601d80978a9fe3e2a09210e7fc00
91
+ remote: https://github.com/ruby/gem_rbs_collection.git
92
+ repo_dir: gems
93
+ - name: minitest
94
+ version: '0'
95
+ source:
96
+ type: stdlib
97
+ - name: nokogiri
98
+ version: '1.11'
99
+ source:
100
+ type: git
101
+ name: ruby/gem_rbs_collection
102
+ revision: 4b908cef352d601d80978a9fe3e2a09210e7fc00
103
+ remote: https://github.com/ruby/gem_rbs_collection.git
104
+ repo_dir: gems
105
+ - name: parallel
106
+ version: '1.20'
107
+ source:
108
+ type: git
109
+ name: ruby/gem_rbs_collection
110
+ revision: 4b908cef352d601d80978a9fe3e2a09210e7fc00
111
+ remote: https://github.com/ruby/gem_rbs_collection.git
112
+ repo_dir: gems
113
+ - name: phobos
114
+ version: 2.1.5
115
+ source:
116
+ type: rubygems
117
+ - name: rack
118
+ version: 2.2.2
119
+ source:
120
+ type: git
121
+ name: ruby/gem_rbs_collection
122
+ revision: 4b908cef352d601d80978a9fe3e2a09210e7fc00
123
+ remote: https://github.com/ruby/gem_rbs_collection.git
124
+ repo_dir: gems
125
+ - name: railties
126
+ version: '6.0'
127
+ source:
128
+ type: git
129
+ name: ruby/gem_rbs_collection
130
+ revision: 4b908cef352d601d80978a9fe3e2a09210e7fc00
131
+ remote: https://github.com/ruby/gem_rbs_collection.git
132
+ repo_dir: gems
133
+ - name: rainbow
134
+ version: '3.0'
135
+ source:
136
+ type: git
137
+ name: ruby/gem_rbs_collection
138
+ revision: 4b908cef352d601d80978a9fe3e2a09210e7fc00
139
+ remote: https://github.com/ruby/gem_rbs_collection.git
140
+ repo_dir: gems
141
+ - name: tempfile
142
+ version: '0'
143
+ source:
144
+ type: stdlib
145
+ - name: monitor
146
+ version: '0'
147
+ source:
148
+ type: stdlib
149
+ - name: date
150
+ version: '0'
151
+ source:
152
+ type: stdlib
153
+ - name: singleton
154
+ version: '0'
155
+ source:
156
+ type: stdlib
157
+ - name: logger
158
+ version: '0'
159
+ source:
160
+ type: stdlib
161
+ - name: mutex_m
162
+ version: '0'
163
+ source:
164
+ type: stdlib
165
+ - name: time
166
+ version: '0'
167
+ source:
168
+ type: stdlib
169
+ - name: pathname
170
+ version: '0'
171
+ source:
172
+ type: stdlib
173
+ - name: tsort
174
+ version: '0'
175
+ source:
176
+ type: stdlib
@@ -0,0 +1,15 @@
1
+ # Download sources
2
+ sources:
3
+ - name: ruby/gem_rbs_collection
4
+ remote: https://github.com/ruby/gem_rbs_collection.git
5
+ revision: main
6
+ repo_dir: gems
7
+
8
+ # A directory to install the downloaded RBSs
9
+ path: .gem_rbs_collection
10
+
11
+ gems:
12
+ # Skip loading rbs gem's RBS.
13
+ # It's unnecessary if you don't use rbs as a library.
14
+ - name: rbs
15
+ ignore: true
@@ -0,0 +1,68 @@
1
+ #! /usr/bin/env ruby
2
+ require 'action_controller/railtie'
3
+ require 'deimos'
4
+ require 'deimos/metrics/mock'
5
+ require 'deimos/tracing/mock'
6
+ # not sure why "require deimos/utils/schema_class" doesn't work
7
+ require_relative 'lib/deimos/utils/schema_class'
8
+
9
+ class DeimosApp < Rails::Application
10
+ end
11
+ DeimosApp.initialize!
12
+
13
+ class MyConsumer < Deimos::Consumer
14
+ def consume(payload, metadata); end
15
+ end
16
+
17
+ require_relative "./lib/generators/deimos/schema_class_generator"
18
+
19
+ Deimos.configure do |deimos_config|
20
+ deimos_config.schema.nest_child_schemas = true
21
+ deimos_config.schema.path = "spec/schemas"
22
+ deimos_config.schema.backend = :avro_validation
23
+ deimos_config.schema.generated_class_path = './spec/schemas'
24
+ deimos_config.schema.generate_namespace_folders = true
25
+ deimos_config.schema.nest_child_schemas = true
26
+
27
+ consumer do
28
+ class_name 'MyConsumer'
29
+ topic 'MyTopic'
30
+ schema 'Generated'
31
+ namespace 'com.my-namespace'
32
+ key_config field: :a_string
33
+ end
34
+
35
+ consumer do
36
+ class_name 'MyConsumer'
37
+ topic 'MyTopic'
38
+ schema 'MySchemaWithComplexTypes'
39
+ namespace 'com.my-namespace'
40
+ key_config field: :test_id
41
+ end
42
+
43
+ consumer do
44
+ class_name 'MyConsumer'
45
+ topic 'MyTopic'
46
+ schema 'MySchemaWithCircularReference'
47
+ namespace 'com.my-namespace'
48
+ key_config none: true
49
+ end
50
+
51
+ consumer do
52
+ class_name 'MyConsumer'
53
+ topic 'MyTopic'
54
+ schema 'MyNestedSchema'
55
+ namespace 'com.my-namespace'
56
+ key_config field: :test_id
57
+ end
58
+
59
+ producer do
60
+ class_name 'MyConsumer'
61
+ topic 'MyTopic'
62
+ schema 'MySchema'
63
+ namespace 'com.my-namespace'
64
+ key_config schema: 'MySchema_key'
65
+ end
66
+ end
67
+
68
+ Deimos::Generators::SchemaClassGenerator.new.generate
data/sig/avro.rbs ADDED
@@ -0,0 +1,14 @@
1
+ module Avro
2
+ class Schema
3
+ class NamedSchema
4
+ end
5
+
6
+ class UnionSchema
7
+ end
8
+
9
+ class RecordSchema
10
+ end
11
+
12
+
13
+ end
14
+ end