deimos-ruby 1.16.1 → 1.16.4

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 (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