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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +13 -0
- data/Gemfile +6 -0
- data/README.md +22 -0
- data/lib/deimos/active_record_consume/batch_consumption.rb +7 -2
- data/lib/deimos/active_record_consume/batch_slicer.rb +2 -0
- data/lib/deimos/active_record_consume/message_consumption.rb +8 -4
- data/lib/deimos/active_record_consumer.rb +7 -4
- data/lib/deimos/active_record_producer.rb +10 -0
- data/lib/deimos/backends/base.rb +4 -2
- data/lib/deimos/backends/kafka.rb +1 -0
- data/lib/deimos/backends/kafka_async.rb +1 -0
- data/lib/deimos/config/configuration.rb +4 -0
- data/lib/deimos/config/phobos_config.rb +2 -1
- data/lib/deimos/consume/batch_consumption.rb +8 -1
- data/lib/deimos/consume/message_consumption.rb +4 -1
- data/lib/deimos/instrumentation.rb +11 -4
- data/lib/deimos/kafka_message.rb +1 -0
- data/lib/deimos/kafka_source.rb +5 -0
- data/lib/deimos/kafka_topic_info.rb +4 -0
- data/lib/deimos/message.rb +19 -2
- data/lib/deimos/metrics/datadog.rb +2 -1
- data/lib/deimos/metrics/mock.rb +2 -2
- data/lib/deimos/metrics/provider.rb +6 -0
- data/lib/deimos/monkey_patches/phobos_cli.rb +1 -1
- data/lib/deimos/monkey_patches/phobos_producer.rb +1 -0
- data/lib/deimos/producer.rb +12 -6
- data/lib/deimos/schema_backends/base.rb +31 -17
- data/lib/deimos/schema_backends/mock.rb +2 -2
- data/lib/deimos/schema_class/base.rb +9 -5
- data/lib/deimos/schema_class/enum.rb +4 -2
- data/lib/deimos/schema_class/record.rb +12 -6
- data/lib/deimos/shared_config.rb +6 -2
- data/lib/deimos/test_helpers.rb +21 -4
- data/lib/deimos/tracing/datadog.rb +1 -1
- data/lib/deimos/tracing/mock.rb +4 -3
- data/lib/deimos/tracing/provider.rb +5 -0
- data/lib/deimos/utils/db_poller.rb +9 -1
- data/lib/deimos/utils/db_producer.rb +14 -2
- data/lib/deimos/utils/deadlock_retry.rb +3 -0
- data/lib/deimos/utils/inline_consumer.rb +14 -6
- data/lib/deimos/utils/lag_reporter.rb +11 -0
- data/lib/deimos/utils/schema_controller_mixin.rb +8 -0
- data/lib/deimos/version.rb +1 -1
- data/lib/deimos.rb +3 -2
- data/lib/generators/deimos/active_record_generator.rb +1 -1
- data/lib/generators/deimos/db_backend_generator.rb +1 -0
- data/lib/generators/deimos/db_poller_generator.rb +1 -0
- data/lib/generators/deimos/schema_class/templates/schema_record.rb.tt +13 -5
- data/lib/generators/deimos/schema_class_generator.rb +51 -24
- data/rbs_collection.lock.yaml +176 -0
- data/rbs_collection.yaml +15 -0
- data/regenerate_test_schema_classes.rb +68 -0
- data/sig/avro.rbs +14 -0
- data/sig/defs.rbs +1859 -0
- data/sig/fig_tree.rbs +2 -0
- data/spec/active_record_producer_spec.rb +24 -0
- data/spec/generators/schema_class/my_schema_spec.rb +16 -0
- data/spec/generators/schema_class/my_schema_with_circular_reference_spec.rb +1 -1
- data/spec/generators/schema_class/my_schema_with_complex_types_spec.rb +32 -24
- data/spec/producer_spec.rb +11 -11
- data/spec/schemas/{generated.rb → my_namespace/generated.rb} +28 -32
- data/spec/schemas/{my_nested_schema.rb → my_namespace/my_nested_schema.rb} +23 -16
- data/spec/schemas/{my_schema.rb → my_namespace/my_schema.rb} +12 -5
- data/spec/schemas/my_namespace/my_schema_compound_key.rb +41 -0
- data/spec/schemas/my_namespace/my_schema_id_key.rb +36 -0
- data/spec/schemas/{my_schema_key.rb → my_namespace/my_schema_key.rb} +3 -3
- data/spec/schemas/my_namespace/my_schema_with_boolean.rb +41 -0
- data/spec/schemas/{my_schema_with_circular_reference.rb → my_namespace/my_schema_with_circular_reference.rb} +15 -10
- data/spec/schemas/{my_schema_with_complex_type.rb → my_namespace/my_schema_with_complex_type.rb} +34 -49
- data/spec/schemas/my_namespace/my_schema_with_date_time.rb +56 -0
- data/spec/schemas/my_namespace/my_schema_with_id.rb +51 -0
- data/spec/schemas/my_namespace/my_schema_with_unique_id.rb +56 -0
- data/spec/schemas/my_namespace/wibble.rb +76 -0
- data/spec/schemas/my_namespace/widget.rb +56 -0
- data/spec/schemas/my_namespace/widget_the_second.rb +56 -0
- data/spec/schemas/request/create_topic.rb +36 -0
- data/spec/schemas/request/index.rb +36 -0
- data/spec/schemas/request/update_request.rb +36 -0
- data/spec/schemas/response/create_topic.rb +36 -0
- data/spec/schemas/response/index.rb +36 -0
- data/spec/schemas/response/update_response.rb +36 -0
- data/spec/snapshots/consumers-no-nest.snap +93 -86
- data/spec/snapshots/consumers.snap +94 -87
- data/spec/snapshots/consumers_and_producers-no-nest.snap +108 -87
- data/spec/snapshots/consumers_and_producers.snap +109 -88
- data/spec/snapshots/consumers_circular-no-nest.snap +93 -86
- data/spec/snapshots/consumers_circular.snap +94 -87
- data/spec/snapshots/consumers_complex_types-no-nest.snap +93 -86
- data/spec/snapshots/consumers_complex_types.snap +94 -87
- data/spec/snapshots/consumers_nested-no-nest.snap +93 -86
- data/spec/snapshots/consumers_nested.snap +94 -87
- data/spec/snapshots/namespace_folders.snap +111 -90
- data/spec/snapshots/producers_with_key-no-nest.snap +94 -87
- data/spec/snapshots/producers_with_key.snap +95 -88
- data/spec/spec_helper.rb +2 -1
- 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
|
data/rbs_collection.yaml
ADDED
@@ -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
|