deimos-ruby 1.0.0.pre.beta22
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.
- checksums.yaml +7 -0
- data/.circleci/config.yml +74 -0
- data/.gitignore +41 -0
- data/.gitmodules +0 -0
- data/.rspec +1 -0
- data/.rubocop.yml +321 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +32 -0
- data/CODE_OF_CONDUCT.md +77 -0
- data/Dockerfile +23 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +165 -0
- data/Guardfile +22 -0
- data/LICENSE.md +195 -0
- data/README.md +752 -0
- data/Rakefile +13 -0
- data/bin/deimos +4 -0
- data/deimos-kafka.gemspec +42 -0
- data/docker-compose.yml +71 -0
- data/docs/DATABASE_BACKEND.md +147 -0
- data/docs/PULL_REQUEST_TEMPLATE.md +34 -0
- data/lib/deimos/active_record_consumer.rb +81 -0
- data/lib/deimos/active_record_producer.rb +64 -0
- data/lib/deimos/avro_data_coder.rb +89 -0
- data/lib/deimos/avro_data_decoder.rb +36 -0
- data/lib/deimos/avro_data_encoder.rb +51 -0
- data/lib/deimos/backends/db.rb +27 -0
- data/lib/deimos/backends/kafka.rb +27 -0
- data/lib/deimos/backends/kafka_async.rb +27 -0
- data/lib/deimos/configuration.rb +90 -0
- data/lib/deimos/consumer.rb +164 -0
- data/lib/deimos/instrumentation.rb +71 -0
- data/lib/deimos/kafka_message.rb +27 -0
- data/lib/deimos/kafka_source.rb +126 -0
- data/lib/deimos/kafka_topic_info.rb +86 -0
- data/lib/deimos/message.rb +74 -0
- data/lib/deimos/metrics/datadog.rb +47 -0
- data/lib/deimos/metrics/mock.rb +39 -0
- data/lib/deimos/metrics/provider.rb +38 -0
- data/lib/deimos/monkey_patches/phobos_cli.rb +35 -0
- data/lib/deimos/monkey_patches/phobos_producer.rb +51 -0
- data/lib/deimos/monkey_patches/ruby_kafka_heartbeat.rb +85 -0
- data/lib/deimos/monkey_patches/schema_store.rb +19 -0
- data/lib/deimos/producer.rb +218 -0
- data/lib/deimos/publish_backend.rb +30 -0
- data/lib/deimos/railtie.rb +8 -0
- data/lib/deimos/schema_coercer.rb +108 -0
- data/lib/deimos/shared_config.rb +59 -0
- data/lib/deimos/test_helpers.rb +356 -0
- data/lib/deimos/tracing/datadog.rb +35 -0
- data/lib/deimos/tracing/mock.rb +40 -0
- data/lib/deimos/tracing/provider.rb +31 -0
- data/lib/deimos/utils/db_producer.rb +122 -0
- data/lib/deimos/utils/executor.rb +117 -0
- data/lib/deimos/utils/inline_consumer.rb +144 -0
- data/lib/deimos/utils/lag_reporter.rb +182 -0
- data/lib/deimos/utils/platform_schema_validation.rb +0 -0
- data/lib/deimos/utils/signal_handler.rb +68 -0
- data/lib/deimos/version.rb +5 -0
- data/lib/deimos.rb +133 -0
- data/lib/generators/deimos/db_backend/templates/migration +24 -0
- data/lib/generators/deimos/db_backend/templates/rails3_migration +30 -0
- data/lib/generators/deimos/db_backend_generator.rb +48 -0
- data/lib/tasks/deimos.rake +27 -0
- data/spec/active_record_consumer_spec.rb +81 -0
- data/spec/active_record_producer_spec.rb +107 -0
- data/spec/avro_data_decoder_spec.rb +18 -0
- data/spec/avro_data_encoder_spec.rb +37 -0
- data/spec/backends/db_spec.rb +35 -0
- data/spec/backends/kafka_async_spec.rb +11 -0
- data/spec/backends/kafka_spec.rb +11 -0
- data/spec/consumer_spec.rb +169 -0
- data/spec/deimos_spec.rb +120 -0
- data/spec/kafka_source_spec.rb +168 -0
- data/spec/kafka_topic_info_spec.rb +88 -0
- data/spec/phobos.bad_db.yml +73 -0
- data/spec/phobos.yml +73 -0
- data/spec/producer_spec.rb +397 -0
- data/spec/publish_backend_spec.rb +10 -0
- data/spec/schemas/com/my-namespace/MySchema-key.avsc +13 -0
- data/spec/schemas/com/my-namespace/MySchema.avsc +18 -0
- data/spec/schemas/com/my-namespace/MySchemaWithBooleans.avsc +18 -0
- data/spec/schemas/com/my-namespace/MySchemaWithDateTimes.avsc +33 -0
- data/spec/schemas/com/my-namespace/MySchemaWithId.avsc +28 -0
- data/spec/schemas/com/my-namespace/MySchemaWithUniqueId.avsc +32 -0
- data/spec/schemas/com/my-namespace/Widget.avsc +27 -0
- data/spec/schemas/com/my-namespace/WidgetTheSecond.avsc +27 -0
- data/spec/spec_helper.rb +207 -0
- data/spec/updateable_schema_store_spec.rb +36 -0
- data/spec/utils/db_producer_spec.rb +259 -0
- data/spec/utils/executor_spec.rb +42 -0
- data/spec/utils/lag_reporter_spec.rb +69 -0
- data/spec/utils/platform_schema_validation_spec.rb +0 -0
- data/spec/utils/signal_handler_spec.rb +16 -0
- data/support/deimos-solo.png +0 -0
- data/support/deimos-with-name-next.png +0 -0
- data/support/deimos-with-name.png +0 -0
- data/support/flipp-logo.png +0 -0
- metadata +452 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 907d55a8c7e56e87ff98674d7b07f2946e6d1543aeeffaf36da7fe15e5556cc2
|
4
|
+
data.tar.gz: f92ce4eb4ebb455db022e66924885e2c0144c2485f10a152d187781b13d69645
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a947fe880133b5f93a076a618b882309b689160d3baa8aa91f0b12deadec1ffe326138900d97cbda82db92843b200af86b7ac40b20e3aaa7afce2bf24a25a80c
|
7
|
+
data.tar.gz: d9fac9b0fe096bd6a69bcebb6c2daa0ae121feb593ded2192a5c7c5316b7631555c9d88634095ef019ee6e71300ad80e2733d5114c90f450d048664b970bd2aa
|
@@ -0,0 +1,74 @@
|
|
1
|
+
defaults: &defaults
|
2
|
+
parallelism: 1
|
3
|
+
working_directory: ~/workspace
|
4
|
+
docker:
|
5
|
+
- image: ruby:2.6
|
6
|
+
environment:
|
7
|
+
RAILS_ENV: test
|
8
|
+
DB_HOST_IP: 127.0.0.1
|
9
|
+
version: 2.1
|
10
|
+
jobs:
|
11
|
+
build:
|
12
|
+
<<: *defaults
|
13
|
+
steps:
|
14
|
+
- checkout
|
15
|
+
|
16
|
+
# Restore bundle cache & npm cache
|
17
|
+
- restore_cache:
|
18
|
+
key: 'rails-{{ checksum "Gemfile.lock" }}'
|
19
|
+
|
20
|
+
# Bundle install dependencies in /tmp/
|
21
|
+
# so Dockerfile does not copy them since
|
22
|
+
# its base image is different than CircleCI
|
23
|
+
- run:
|
24
|
+
name: Bundle install
|
25
|
+
command: bundle install --path vendor/bundle --jobs=4 --retry=3
|
26
|
+
|
27
|
+
# Store bundle cache
|
28
|
+
- save_cache:
|
29
|
+
key: 'rails-{{ checksum "Gemfile.lock" }}'
|
30
|
+
paths:
|
31
|
+
- ~/workspace/vendor/bundle
|
32
|
+
|
33
|
+
- persist_to_workspace:
|
34
|
+
root: ~/workspace
|
35
|
+
paths:
|
36
|
+
- .
|
37
|
+
|
38
|
+
lint:
|
39
|
+
<<: *defaults
|
40
|
+
steps:
|
41
|
+
- attach_workspace:
|
42
|
+
at: ~/workspace
|
43
|
+
- run:
|
44
|
+
name: Point bundle to vendor/bundle
|
45
|
+
command: bundle --path vendor/bundle
|
46
|
+
- run: bundle exec rubocop --display-only-fail-level-offenses --fail-level C
|
47
|
+
|
48
|
+
test-rspec:
|
49
|
+
<<: *defaults
|
50
|
+
steps:
|
51
|
+
- attach_workspace:
|
52
|
+
at: ~/workspace
|
53
|
+
- run:
|
54
|
+
name: Point bundle to vendor/bundle
|
55
|
+
command: bundle --path vendor/bundle
|
56
|
+
- run: mkdir result
|
57
|
+
- run:
|
58
|
+
name: Running rspec
|
59
|
+
command: bundle exec rspec --format progress --format RspecJunitFormatter -o result/rspec.xml
|
60
|
+
when: always
|
61
|
+
- store_test_results:
|
62
|
+
path: ~/workspace/result
|
63
|
+
|
64
|
+
workflows:
|
65
|
+
version: 2
|
66
|
+
build-and-test:
|
67
|
+
jobs:
|
68
|
+
- build
|
69
|
+
- test-rspec:
|
70
|
+
requires:
|
71
|
+
- build
|
72
|
+
- lint:
|
73
|
+
requires:
|
74
|
+
- build
|
data/.gitignore
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# Created by .ignore support plugin (hsz.mobi)
|
2
|
+
### Ruby template
|
3
|
+
*.gem
|
4
|
+
*.rbc
|
5
|
+
/.config
|
6
|
+
/coverage/
|
7
|
+
/InstalledFiles
|
8
|
+
/pkg/
|
9
|
+
/spec/reports/
|
10
|
+
/spec/examples.txt
|
11
|
+
/test/tmp/
|
12
|
+
/test/version_tmp/
|
13
|
+
/tmp/
|
14
|
+
/log/
|
15
|
+
|
16
|
+
# Used by dotenv library to load environment variables.
|
17
|
+
# .env
|
18
|
+
|
19
|
+
## Documentation cache and generated files:
|
20
|
+
/.yardoc/
|
21
|
+
/_yardoc/
|
22
|
+
/doc/
|
23
|
+
/rdoc/
|
24
|
+
|
25
|
+
## Environment normalization:
|
26
|
+
/.bundle/
|
27
|
+
/vendor/bundle
|
28
|
+
/lib/bundler/man/
|
29
|
+
|
30
|
+
# for a library or gem, you might want to ignore these files since the code is
|
31
|
+
# intended to run in multiple environments; otherwise, check them in:
|
32
|
+
# Gemfile.lock
|
33
|
+
# .ruby-version
|
34
|
+
# .ruby-gemset
|
35
|
+
|
36
|
+
# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
|
37
|
+
.rvmrc
|
38
|
+
|
39
|
+
test.sqlite3
|
40
|
+
|
41
|
+
.idea
|
data/.gitmodules
ADDED
File without changes
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--require spec_helper --tag ~kafka_integration --tag ~integration --format documentation
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,321 @@
|
|
1
|
+
require: rubocop-rspec
|
2
|
+
|
3
|
+
AllCops:
|
4
|
+
TargetRubyVersion: 2.3
|
5
|
+
Exclude:
|
6
|
+
- lib/deimos/monkey_patches/*.rb
|
7
|
+
- vendor/**/*
|
8
|
+
|
9
|
+
# class Plumbus
|
10
|
+
# private
|
11
|
+
# def smooth; end
|
12
|
+
# end
|
13
|
+
Layout/AccessModifierIndentation:
|
14
|
+
EnforcedStyle: outdent
|
15
|
+
|
16
|
+
# foo.bar.
|
17
|
+
# each do
|
18
|
+
# baz
|
19
|
+
# end
|
20
|
+
Layout/BlockAlignment:
|
21
|
+
EnforcedStyleAlignWith: start_of_block
|
22
|
+
|
23
|
+
# something.
|
24
|
+
# method
|
25
|
+
#
|
26
|
+
# instead of
|
27
|
+
#
|
28
|
+
# something
|
29
|
+
# .method
|
30
|
+
Layout/DotPosition:
|
31
|
+
EnforcedStyle: trailing
|
32
|
+
|
33
|
+
# sometimes empty lines can be used for clarity
|
34
|
+
Layout/EmptyLinesAroundBlockBody:
|
35
|
+
Enabled: false
|
36
|
+
|
37
|
+
# foo = if expression
|
38
|
+
# 'bar'
|
39
|
+
# end
|
40
|
+
Layout/MultilineAssignmentLayout:
|
41
|
+
Enabled: true
|
42
|
+
EnforcedStyle: same_line
|
43
|
+
|
44
|
+
# while myvariable.
|
45
|
+
# a.
|
46
|
+
# b
|
47
|
+
#
|
48
|
+
# # do something
|
49
|
+
# end
|
50
|
+
Layout/MultilineMethodCallIndentation:
|
51
|
+
EnforcedStyle: indented
|
52
|
+
|
53
|
+
# def some_method(arg1=true, arg2=42)
|
54
|
+
Layout/SpaceAroundEqualsInParameterDefault:
|
55
|
+
EnforcedStyle: no_space
|
56
|
+
|
57
|
+
# do not allow e.g.
|
58
|
+
# if (v = array.grep(/foo/))
|
59
|
+
# do_something(v)
|
60
|
+
# end
|
61
|
+
Lint/AssignmentInCondition:
|
62
|
+
AllowSafeAssignment: false
|
63
|
+
Severity: convention
|
64
|
+
|
65
|
+
Lint/UnusedBlockArgument:
|
66
|
+
AllowUnusedKeywordArguments: true
|
67
|
+
|
68
|
+
Lint/UnusedMethodArgument:
|
69
|
+
AllowUnusedKeywordArguments: true
|
70
|
+
|
71
|
+
Metrics/AbcSize:
|
72
|
+
Severity: refactor
|
73
|
+
Max: 20
|
74
|
+
|
75
|
+
Metrics/BlockLength:
|
76
|
+
Severity: refactor
|
77
|
+
|
78
|
+
Metrics/ClassLength:
|
79
|
+
Severity: refactor
|
80
|
+
|
81
|
+
Metrics/CyclomaticComplexity:
|
82
|
+
Severity: refactor
|
83
|
+
Max: 20
|
84
|
+
|
85
|
+
Metrics/LineLength:
|
86
|
+
Max: 100
|
87
|
+
Severity: refactor
|
88
|
+
Exclude:
|
89
|
+
- 'spec/**/*'
|
90
|
+
|
91
|
+
Metrics/MethodLength:
|
92
|
+
Severity: refactor
|
93
|
+
Max: 30
|
94
|
+
|
95
|
+
Metrics/ModuleLength:
|
96
|
+
Severity: refactor
|
97
|
+
|
98
|
+
Metrics/ParameterLists:
|
99
|
+
Max: 5
|
100
|
+
CountKeywordArgs: false
|
101
|
+
|
102
|
+
Metrics/PerceivedComplexity:
|
103
|
+
Severity: refactor
|
104
|
+
|
105
|
+
# Use alias_method instead of alias
|
106
|
+
Style/Alias:
|
107
|
+
EnforcedStyle: prefer_alias_method
|
108
|
+
|
109
|
+
# Allow "and" or "or" to be used as a statement but not a conditional operator
|
110
|
+
Style/AndOr:
|
111
|
+
EnforcedStyle: conditionals
|
112
|
+
|
113
|
+
# Force use of File.open {...} instead of File.open but as a refactor
|
114
|
+
Style/AutoResourceCleanup:
|
115
|
+
Enabled: true
|
116
|
+
Severity: refactor
|
117
|
+
|
118
|
+
# Do not allow multiline {} blocks unless it is chained with a .
|
119
|
+
Style/BlockDelimiters:
|
120
|
+
EnforcedStyle: braces_for_chaining
|
121
|
+
|
122
|
+
# bad
|
123
|
+
# some_method(x, y, {a: 1, b: 2})
|
124
|
+
# some_method(x, y, {a: 1, b: 2}, a: 1, b: 2)
|
125
|
+
|
126
|
+
# good
|
127
|
+
# some_method(x, y, a: 1, b: 2)
|
128
|
+
# some_method(x, y, {a: 1, b: 2}, {a: 1, b: 2})
|
129
|
+
Style/BracesAroundHashParameters:
|
130
|
+
EnforcedStyle: context_dependent
|
131
|
+
|
132
|
+
# Enable both this:
|
133
|
+
# MyModule::MyClass
|
134
|
+
# and this:
|
135
|
+
# module MyModule
|
136
|
+
# class MyClass
|
137
|
+
Style/ClassAndModuleChildren:
|
138
|
+
Enabled: false
|
139
|
+
|
140
|
+
# Don't force "reduce" over "inject"
|
141
|
+
Style/CollectionMethods:
|
142
|
+
Enabled: true
|
143
|
+
AutoCorrect: false
|
144
|
+
PreferredMethods:
|
145
|
+
collect: map
|
146
|
+
collect!: map!
|
147
|
+
detect: find
|
148
|
+
find_all: select
|
149
|
+
|
150
|
+
Style/DateTime:
|
151
|
+
AllowCoercion: true
|
152
|
+
|
153
|
+
Style/Documentation:
|
154
|
+
Exclude:
|
155
|
+
- 'app/controllers/**/*'
|
156
|
+
- 'app/helpers/**/*'
|
157
|
+
- 'db/**/*'
|
158
|
+
|
159
|
+
# Force documentation for public methods and classes
|
160
|
+
Style/DocumentationMethod:
|
161
|
+
Enabled: true
|
162
|
+
Exclude:
|
163
|
+
- 'app/controllers/**/*'
|
164
|
+
- 'db/**/*'
|
165
|
+
|
166
|
+
# Allow else with just nil in it
|
167
|
+
Style/EmptyElse:
|
168
|
+
EnforcedStyle: empty
|
169
|
+
|
170
|
+
# Do not allow one-line methods
|
171
|
+
Style/EmptyMethod:
|
172
|
+
EnforcedStyle: expanded
|
173
|
+
|
174
|
+
# One-line bodies are fine without a guard clause
|
175
|
+
Style/GuardClause:
|
176
|
+
MinBodyLength: 2
|
177
|
+
|
178
|
+
# Require hash syntax { key: value } in all cases
|
179
|
+
Style/HashSyntax:
|
180
|
+
EnforcedStyle: ruby19_no_mixed_keys
|
181
|
+
|
182
|
+
# Allow the following:
|
183
|
+
# var x = "foo" +
|
184
|
+
# "bar"
|
185
|
+
Style/LineEndConcatenation:
|
186
|
+
Enabled: false
|
187
|
+
|
188
|
+
# Require parentheses around all method arguments except for whitelist
|
189
|
+
Style/MethodCallWithArgsParentheses:
|
190
|
+
Enabled: true
|
191
|
+
IgnoredMethods:
|
192
|
+
- puts
|
193
|
+
- render
|
194
|
+
- redirect_to
|
195
|
+
- send_data
|
196
|
+
- require
|
197
|
+
- include
|
198
|
+
- require_relative
|
199
|
+
- specify
|
200
|
+
- example
|
201
|
+
- describe
|
202
|
+
- it
|
203
|
+
- to
|
204
|
+
- not_to
|
205
|
+
- to_not
|
206
|
+
- define
|
207
|
+
- expect_with
|
208
|
+
- mock_with
|
209
|
+
- factory
|
210
|
+
- travel_to
|
211
|
+
- travel
|
212
|
+
- get
|
213
|
+
- raise
|
214
|
+
- attr_accessor
|
215
|
+
- class_attribute
|
216
|
+
- before_save
|
217
|
+
- after_save
|
218
|
+
- before_create
|
219
|
+
- after_create
|
220
|
+
- before_update
|
221
|
+
- after_update
|
222
|
+
- before_destroy
|
223
|
+
- after_destroy
|
224
|
+
- queue_as
|
225
|
+
Exclude:
|
226
|
+
- 'bin/**/*'
|
227
|
+
- 'Gemfile'
|
228
|
+
|
229
|
+
# Do not allow "end.something"
|
230
|
+
Style/MethodCalledOnDoEndBlock:
|
231
|
+
Enabled: true
|
232
|
+
|
233
|
+
Style/OptionHash:
|
234
|
+
Enabled: false
|
235
|
+
|
236
|
+
# Use %i() and %w() instead of []
|
237
|
+
Style/PercentLiteralDelimiters:
|
238
|
+
PreferredDelimiters:
|
239
|
+
'%i': '()'
|
240
|
+
'%I': '()'
|
241
|
+
'%w': '()'
|
242
|
+
'%W': '()'
|
243
|
+
|
244
|
+
# Allow self.x in all cases - it helps make it obvious when dealing with
|
245
|
+
# instance variables
|
246
|
+
Style/RedundantSelf:
|
247
|
+
Enabled: false
|
248
|
+
|
249
|
+
# Do not allow single line methods
|
250
|
+
Style/SingleLineMethods:
|
251
|
+
AllowIfMethodIsEmpty: false
|
252
|
+
|
253
|
+
# NOTE change this for Ruby < 2.0
|
254
|
+
# require %i()
|
255
|
+
Style/SymbolArray:
|
256
|
+
EnforcedStyle: percent
|
257
|
+
|
258
|
+
RSpec/AlignLeftLetBrace:
|
259
|
+
Enabled: false
|
260
|
+
|
261
|
+
RSpec/AlignRightLetBrace:
|
262
|
+
Enabled: false
|
263
|
+
|
264
|
+
# Allow allow_any_instance_of().to receive
|
265
|
+
RSpec/AnyInstance:
|
266
|
+
Enabled: false
|
267
|
+
|
268
|
+
# Allow describe MyClass, 'some descriptor that isn't a method'
|
269
|
+
RSpec/DescribeMethod:
|
270
|
+
Enabled: false
|
271
|
+
|
272
|
+
RSpec/ExampleLength:
|
273
|
+
Severity: refactor
|
274
|
+
Max: 40
|
275
|
+
|
276
|
+
# Allow it 'should do something'
|
277
|
+
RSpec/ExampleWording:
|
278
|
+
Enabled: false
|
279
|
+
|
280
|
+
# Allow describing specs without only using classes and methods
|
281
|
+
RSpec/FilePath:
|
282
|
+
Enabled: false
|
283
|
+
|
284
|
+
# Use before(:each), not before or before(:example)
|
285
|
+
RSpec/HookArgument:
|
286
|
+
EnforcedStyle: each
|
287
|
+
|
288
|
+
RSpec/ItBehavesLike:
|
289
|
+
EnforcedStyle: it_should_behave_like
|
290
|
+
|
291
|
+
RSpec/MessageChain:
|
292
|
+
Severity: refactor
|
293
|
+
|
294
|
+
# Allow both "allow" and "expect"
|
295
|
+
RSpec/MessageExpectation:
|
296
|
+
Enabled: false
|
297
|
+
|
298
|
+
# Use to receive, not to have_received
|
299
|
+
RSpec/MessageSpies:
|
300
|
+
Enabled: false
|
301
|
+
|
302
|
+
RSpec/MultipleExpectations:
|
303
|
+
Max: 10
|
304
|
+
Severity: refactor
|
305
|
+
|
306
|
+
# Allow both and_return() and block returns (use these for multi-line)
|
307
|
+
RSpec/ReturnFromStub:
|
308
|
+
Enabled: false
|
309
|
+
|
310
|
+
RSpec/SubjectStub:
|
311
|
+
Severity: refactor
|
312
|
+
|
313
|
+
RSpec/ExpectActual:
|
314
|
+
Enabled: false
|
315
|
+
|
316
|
+
RSpec/BeforeAfterAll:
|
317
|
+
Enabled: false
|
318
|
+
|
319
|
+
Security/YAMLLoad:
|
320
|
+
Exclude:
|
321
|
+
- 'lib/deimos.rb'
|
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
deimos
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.5.1
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
All notable changes to this project will be documented in this file.
|
4
|
+
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
7
|
+
|
8
|
+
## [1.0.0-beta22] - 2019-08-09
|
9
|
+
- Add `pending_db_messages_max_wait` metric for the DB producer.
|
10
|
+
- Fix mock metrics to allow optional option hashes.
|
11
|
+
|
12
|
+
## [1.0.0-beta21] - 2019-08-08
|
13
|
+
- Handle Phobos `persistent_connections` setting in handling buffer overflows
|
14
|
+
|
15
|
+
## [1.0.0-beta20] - 2019-08-07
|
16
|
+
- Catch buffer overflows when producing via the DB producer and split the
|
17
|
+
batch up.
|
18
|
+
|
19
|
+
## [1.0.0-beta19] - 2019-08-06
|
20
|
+
- Fix for DB producer crashing on error in Rails 3.
|
21
|
+
|
22
|
+
## [1.0.0-beta18] - 2019-08-02
|
23
|
+
- Fixed crash when sending metrics in a couple of places.
|
24
|
+
|
25
|
+
## [1.0.0-beta17] - 2019-07-31
|
26
|
+
- Added `rails deimos:db_producer` rake task.
|
27
|
+
- Fixed the DB producer so it runs inline instead of on a separate thread.
|
28
|
+
Calling code should run it on a thread manually if that is the desired
|
29
|
+
behavior.
|
30
|
+
|
31
|
+
## [1.0.0-beta15] - 2019-07-08
|
32
|
+
- Initial release.
|
data/CODE_OF_CONDUCT.md
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
# Contributor Covenant Code of Conduct
|
2
|
+
|
3
|
+
## Our Pledge
|
4
|
+
|
5
|
+
In the interest of fostering an open and welcoming environment, we as
|
6
|
+
contributors and maintainers pledge to making participation in our project and
|
7
|
+
our community a harassment-free experience for everyone, regardless of age, body
|
8
|
+
size, disability, ethnicity, sex characteristics, gender identity and expression,
|
9
|
+
level of experience, education, socio-economic status, nationality, personal
|
10
|
+
appearance, race, religion, or sexual identity and orientation.
|
11
|
+
|
12
|
+
## Our Standards
|
13
|
+
|
14
|
+
Examples of behavior that contributes to creating a positive environment
|
15
|
+
include:
|
16
|
+
|
17
|
+
* Using welcoming and inclusive language
|
18
|
+
* Being respectful of differing viewpoints and experiences
|
19
|
+
* Gracefully accepting constructive criticism
|
20
|
+
* Focusing on what is best for the community
|
21
|
+
* Showing empathy towards other community members
|
22
|
+
|
23
|
+
Examples of unacceptable behavior by participants include:
|
24
|
+
|
25
|
+
* The use of sexualized language or imagery and unwelcome sexual attention or
|
26
|
+
advances
|
27
|
+
* Trolling, insulting/derogatory comments, and personal or political attacks
|
28
|
+
* Public or private harassment
|
29
|
+
* Publishing others' private information, such as a physical or electronic
|
30
|
+
address, without explicit permission
|
31
|
+
* Other conduct which could reasonably be considered inappropriate in a
|
32
|
+
professional setting
|
33
|
+
|
34
|
+
## Our Responsibilities
|
35
|
+
|
36
|
+
Project maintainers are responsible for clarifying the standards of acceptable
|
37
|
+
behavior and are expected to take appropriate and fair corrective action in
|
38
|
+
response to any instances of unacceptable behavior.
|
39
|
+
|
40
|
+
Project maintainers have the right and responsibility to remove, edit, or
|
41
|
+
reject comments, commits, code, wiki edits, issues, and other contributions
|
42
|
+
that are not aligned to this Code of Conduct, or to ban temporarily or
|
43
|
+
permanently any contributor for other behaviors that they deem inappropriate,
|
44
|
+
threatening, offensive, or harmful.
|
45
|
+
|
46
|
+
## Scope
|
47
|
+
|
48
|
+
This Code of Conduct applies within all project spaces, and it also applies when
|
49
|
+
an individual is representing the project or its community in public spaces.
|
50
|
+
Examples of representing a project or community include using an official
|
51
|
+
project e-mail address, posting via an official social media account, or acting
|
52
|
+
as an appointed representative at an online or offline event. Representation of
|
53
|
+
a project may be further defined and clarified by project maintainers.
|
54
|
+
|
55
|
+
## Enforcement
|
56
|
+
|
57
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
58
|
+
reported by contacting the project team at [INSERT EMAIL ADDRESS]. All
|
59
|
+
complaints will be reviewed and investigated and will result in a response that
|
60
|
+
is deemed necessary and appropriate to the circumstances. The project team is
|
61
|
+
obligated to maintain confidentiality with regard to the reporter of an incident.
|
62
|
+
Further details of specific enforcement policies may be posted separately.
|
63
|
+
|
64
|
+
Project maintainers who do not follow or enforce the Code of Conduct in good
|
65
|
+
faith may face temporary or permanent repercussions as determined by other
|
66
|
+
members of the project's leadership.
|
67
|
+
|
68
|
+
## Attribution
|
69
|
+
|
70
|
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
71
|
+
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
72
|
+
|
73
|
+
[homepage]: https://www.contributor-covenant.org
|
74
|
+
|
75
|
+
For answers to common questions about this code of conduct, see
|
76
|
+
https://www.contributor-covenant.org/faq
|
77
|
+
|
data/Dockerfile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
FROM ruby:2.5.5-stretch
|
2
|
+
|
3
|
+
RUN apt-get update && \
|
4
|
+
apt-get -y install curl git openssh-client openssl nodejs awscli
|
5
|
+
RUN apt-get install -yq libpq-dev net-tools mysql-client wait-for-it
|
6
|
+
ENV DOCKERIZE_VERSION v0.6.1
|
7
|
+
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
|
8
|
+
&& tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
|
9
|
+
&& rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
|
10
|
+
|
11
|
+
WORKDIR /opt/deimos
|
12
|
+
COPY deimos.gemspec /opt/deimos/deimos.gemspec
|
13
|
+
COPY lib/deimos/version.rb /opt/deimos/lib/deimos/version.rb
|
14
|
+
COPY Gemfile /opt/deimos/Gemfile
|
15
|
+
COPY Gemfile.lock /opt/deimos/Gemfile.lock
|
16
|
+
|
17
|
+
RUN bundle install
|
18
|
+
|
19
|
+
ADD . .
|
20
|
+
|
21
|
+
ENTRYPOINT ["bundle", "exec"]
|
22
|
+
|
23
|
+
CMD ["bundle", "exec", "rspec"]
|