flipp-ruby-kafka-temp-fork 0.0.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.
- checksums.yaml +7 -0
- data/.circleci/config.yml +97 -0
- data/.dockerignore +2 -0
- data/.gitignore +41 -0
- data/.gitmodules +0 -0
- data/.rspec +1 -0
- data/.rubocop.yml +56 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +466 -0
- data/Dockerfile +21 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +207 -0
- data/Guardfile +22 -0
- data/README.md +102 -0
- data/Rakefile +13 -0
- data/bin/flipp_ruby_kafka +4 -0
- data/deploy/artifactory.sh +8 -0
- data/deploy/config.json +4 -0
- data/docker-compose.yml +89 -0
- data/docs/UPGRADE_1.0.md +39 -0
- data/flipp-ruby-kafka.gemspec +34 -0
- data/kafkateria/factories/my_schema.rb +16 -0
- data/kafkateria/factories/my_schema_with_id.rb +16 -0
- data/lib/flipp_ruby_kafka.rb +73 -0
- data/lib/flipp_ruby_kafka/flipp_datadog_metrics.rb +15 -0
- data/lib/flipp_ruby_kafka/test_helpers.rb +59 -0
- data/lib/flipp_ruby_kafka/utils/platform_schema_validation.rb +77 -0
- data/lib/flipp_ruby_kafka/utils/platform_topic_validation.rb +41 -0
- data/lib/flipp_ruby_kafka/version.rb +5 -0
- data/lib/generators/flipp_ruby_kafka/schema_validation/schema_validation_generator.rb +23 -0
- data/lib/generators/flipp_ruby_kafka/topic_validation/topic_validation_generator.rb +22 -0
- data/spec/flipp_ruby_kafka_spec.rb +8 -0
- data/spec/integration/send_kafka_spec.rb +63 -0
- data/spec/phobos.yml +73 -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/MySchemaWithDateTimes.avsc +33 -0
- data/spec/schemas/com/my-namespace/MySchemaWithId.avsc +28 -0
- data/spec/spec_helper.rb +39 -0
- data/spec/utils/platform_schema_validation_spec.rb +54 -0
- data/spec/utils/platform_topic_validation_spec.rb +50 -0
- metadata +262 -0
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
|
3
|
+
# frozen_string_literal: true
|
4
|
+
|
5
|
+
RSpec.describe 'integration spec', integration: true do # rubocop:disable RSpec/DescribeClass
|
6
|
+
let(:producer_class) do
|
7
|
+
Class.new(FlippRubyKafka::Producer) do
|
8
|
+
schema 'MySchema'
|
9
|
+
namespace 'com.my-namespace'
|
10
|
+
topic 'my_consume_topic'
|
11
|
+
key_config field: 'test_id'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:producer_class_with_id) do
|
16
|
+
Class.new(FlippRubyKafka::Producer) do
|
17
|
+
schema 'MySchemaWithId'
|
18
|
+
namespace 'com.my-namespace'
|
19
|
+
topic 'my_consume_topic_with_id'
|
20
|
+
key_config schema: 'MySchema-key'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
prepend_before(:each) do
|
25
|
+
kafkateria_delete_topic('my_consume_topic')
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should publish a keyed Kafka msg' do
|
29
|
+
payload = { 'test_id' => 'foo', 'some_int' => 5 }
|
30
|
+
producer_class.publish(payload)
|
31
|
+
sleep(1)
|
32
|
+
messages = kafkateria_get_messages(topic: 'my_consume_topic')
|
33
|
+
puts messages
|
34
|
+
expect(messages.size).to eq(1)
|
35
|
+
expect(messages[0][:payload]).to eq(payload)
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should send original and updated kafka messages for non keyed Kafka msg' do
|
39
|
+
payload = { 'test_id' => 'foobar', 'some_int' => 6 }
|
40
|
+
payload_update = { 'test_id' => 'foobar', 'some_int' => 7 }
|
41
|
+
producer_class.publish(payload)
|
42
|
+
producer_class.publish(payload_update)
|
43
|
+
sleep(1)
|
44
|
+
messages = kafkateria_get_messages(topic: 'my_consume_topic')
|
45
|
+
puts messages.size
|
46
|
+
expect(messages.size).to eq(2)
|
47
|
+
expect(messages[0][:payload]).to eq(payload)
|
48
|
+
expect(messages[1][:payload]).to eq(payload_update)
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'should send only updated kafka messages for keyed Kafka msg' do
|
52
|
+
payload = { 'test_id' => 'foo', 'some_int' => 6, :payload_key => { 'test_id' => 'foo_key' } }
|
53
|
+
payload_update = { 'test_id' => 'foobar', 'some_int' => 7, :payload_key => { 'test_id' => 'foo_key' } }
|
54
|
+
producer_class_with_id.publish(payload)
|
55
|
+
producer_class_with_id.publish(payload_update)
|
56
|
+
sleep(1)
|
57
|
+
messages = kafkateria_get_messages(topic: 'my_consume_topic_with_id')
|
58
|
+
puts messages.size
|
59
|
+
expect(messages.size).to eq(1)
|
60
|
+
expect(messages[0][:payload]).to eq(payload_update)
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
data/spec/phobos.yml
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
logger:
|
2
|
+
# Optional log file, set to false or remove to disable it
|
3
|
+
file: log/phobos.log
|
4
|
+
# Optional output format for stdout, default is false (human readable).
|
5
|
+
# Set to true to enable json output.
|
6
|
+
stdout_json: false
|
7
|
+
level: debug
|
8
|
+
# Comment the block to disable ruby-kafka logs
|
9
|
+
ruby_kafka:
|
10
|
+
level: debug
|
11
|
+
|
12
|
+
kafka:
|
13
|
+
# identifier for this application
|
14
|
+
client_id: phobos
|
15
|
+
# timeout setting for connecting to brokers
|
16
|
+
connect_timeout: 15
|
17
|
+
# timeout setting for socket connections
|
18
|
+
socket_timeout: 15
|
19
|
+
|
20
|
+
producer:
|
21
|
+
# number of seconds a broker can wait for replicas to acknowledge
|
22
|
+
# a write before responding with a timeout
|
23
|
+
ack_timeout: 5
|
24
|
+
# number of replicas that must acknowledge a write, or `:all`
|
25
|
+
# if all in-sync replicas must acknowledge
|
26
|
+
required_acks: :all
|
27
|
+
# number of retries that should be attempted before giving up sending
|
28
|
+
# messages to the cluster. Does not include the original attempt
|
29
|
+
max_retries: 2
|
30
|
+
# number of seconds to wait between retries
|
31
|
+
retry_backoff: 1
|
32
|
+
# number of messages allowed in the buffer before new writes will
|
33
|
+
# raise {BufferOverflow} exceptions
|
34
|
+
max_buffer_size: 10000
|
35
|
+
# maximum size of the buffer in bytes. Attempting to produce messages
|
36
|
+
# when the buffer reaches this size will result in {BufferOverflow} being raised
|
37
|
+
max_buffer_bytesize: 10000000
|
38
|
+
# name of the compression codec to use, or nil if no compression should be performed.
|
39
|
+
# Valid codecs: `:snappy` and `:gzip`
|
40
|
+
compression_codec:
|
41
|
+
# number of messages that needs to be in a message set before it should be compressed.
|
42
|
+
# Note that message sets are per-partition rather than per-topic or per-producer
|
43
|
+
compression_threshold: 1
|
44
|
+
# maximum number of messages allowed in the queue. Only used for async_producer
|
45
|
+
max_queue_size: 10000
|
46
|
+
# if greater than zero, the number of buffered messages that will automatically
|
47
|
+
# trigger a delivery. Only used for async_producer
|
48
|
+
delivery_threshold: 0
|
49
|
+
# if greater than zero, the number of seconds between automatic message
|
50
|
+
# deliveries. Only used for async_producer
|
51
|
+
delivery_interval: 0
|
52
|
+
|
53
|
+
consumer:
|
54
|
+
# number of seconds after which, if a client hasn't contacted the Kafka cluster,
|
55
|
+
# it will be kicked out of the group
|
56
|
+
session_timeout: 300
|
57
|
+
# interval between offset commits, in seconds
|
58
|
+
offset_commit_interval: 10
|
59
|
+
# number of messages that can be processed before their offsets are committed.
|
60
|
+
# If zero, offset commits are not triggered by message processing
|
61
|
+
offset_commit_threshold: 0
|
62
|
+
# interval between heartbeats; must be less than the session window
|
63
|
+
heartbeat_interval: 10
|
64
|
+
|
65
|
+
backoff:
|
66
|
+
min_ms: 1000
|
67
|
+
max_ms: 60000
|
68
|
+
|
69
|
+
listeners:
|
70
|
+
- handler: ConsumerTest::MyConsumer
|
71
|
+
topic: my_consume_topic
|
72
|
+
group_id: my_group_id
|
73
|
+
max_bytes_per_partition: 524288 # 512 KB
|
@@ -0,0 +1,18 @@
|
|
1
|
+
{
|
2
|
+
"namespace": "com.my-namespace",
|
3
|
+
"name": "MySchema",
|
4
|
+
"type": "record",
|
5
|
+
"doc": "Test schema",
|
6
|
+
"fields": [
|
7
|
+
{
|
8
|
+
"name": "test_id",
|
9
|
+
"type": "string",
|
10
|
+
"doc": "test string"
|
11
|
+
},
|
12
|
+
{
|
13
|
+
"name": "some_int",
|
14
|
+
"type": "int",
|
15
|
+
"doc": "test int"
|
16
|
+
}
|
17
|
+
]
|
18
|
+
}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
{
|
2
|
+
"namespace": "com.my-namespace",
|
3
|
+
"name": "MySchemaWithDateTimes",
|
4
|
+
"type": "record",
|
5
|
+
"doc": "Test schema",
|
6
|
+
"fields": [
|
7
|
+
{
|
8
|
+
"name": "test_id",
|
9
|
+
"type": "string",
|
10
|
+
"doc": "test string"
|
11
|
+
},
|
12
|
+
{
|
13
|
+
"name": "updated_at",
|
14
|
+
"type": ["int", "null"]
|
15
|
+
},
|
16
|
+
{
|
17
|
+
"name": "some_int",
|
18
|
+
"type": ["null", "int"],
|
19
|
+
"doc": "test int"
|
20
|
+
},
|
21
|
+
{
|
22
|
+
"name": "some_datetime_int",
|
23
|
+
"type": ["null", "int"],
|
24
|
+
"doc": "test datetime"
|
25
|
+
},
|
26
|
+
{
|
27
|
+
"name": "timestamp",
|
28
|
+
"type": "string",
|
29
|
+
"doc": "ISO timestamp",
|
30
|
+
"default": ""
|
31
|
+
}
|
32
|
+
]
|
33
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
{
|
2
|
+
"namespace": "com.my-namespace",
|
3
|
+
"name": "MySchemaWithId",
|
4
|
+
"type": "record",
|
5
|
+
"doc": "Test schema",
|
6
|
+
"fields": [
|
7
|
+
{
|
8
|
+
"name": "test_id",
|
9
|
+
"type": "string",
|
10
|
+
"doc": "test string"
|
11
|
+
},
|
12
|
+
{
|
13
|
+
"name": "some_int",
|
14
|
+
"type": "int",
|
15
|
+
"doc": "test int"
|
16
|
+
},
|
17
|
+
{
|
18
|
+
"name": "message_id",
|
19
|
+
"type": "string",
|
20
|
+
"doc": "UUID"
|
21
|
+
},
|
22
|
+
{
|
23
|
+
"name": "timestamp",
|
24
|
+
"type": "string",
|
25
|
+
"doc": "timestamp"
|
26
|
+
}
|
27
|
+
]
|
28
|
+
}
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
|
4
|
+
require 'flipp_ruby_kafka'
|
5
|
+
require 'flipp_ruby_kafka/test_helpers'
|
6
|
+
require 'deimos/test_helpers'
|
7
|
+
require 'deimos/metrics/mock'
|
8
|
+
require 'deimos/tracing/mock'
|
9
|
+
require 'active_support/testing/time_helpers'
|
10
|
+
|
11
|
+
RSpec.configure do |config|
|
12
|
+
config.full_backtrace = true
|
13
|
+
|
14
|
+
# true by default for RSpec 4.0
|
15
|
+
config.shared_context_metadata_behavior = :apply_to_host_groups
|
16
|
+
|
17
|
+
config.include FlippRubyKafka::TestHelpers
|
18
|
+
config.include ActiveSupport::Testing::TimeHelpers
|
19
|
+
config.before(:suite) do
|
20
|
+
Time.zone = 'EST'
|
21
|
+
end
|
22
|
+
|
23
|
+
config.before(:each) do |ex|
|
24
|
+
stub_producers_and_consumers! unless ex.metadata[:integration]
|
25
|
+
|
26
|
+
FlippRubyKafka.configure do
|
27
|
+
logger ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
|
28
|
+
metrics Deimos::Metrics::Mock
|
29
|
+
tracer Deimos::Tracing::Mock
|
30
|
+
schema.path(File.join(File.expand_path(__dir__), 'schemas'))
|
31
|
+
kafkateria_url ENV['KAFKATERIA_URL'] || 'http://localhost:3000'
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
config.after(:each) do
|
36
|
+
FlippRubyKafka.config.reset!
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'flipp_ruby_kafka/utils/platform_schema_validation'
|
4
|
+
|
5
|
+
describe(FlippRubyKafka::Utils::PlatformSchemaValidation) do
|
6
|
+
prepend_before(:each) do
|
7
|
+
# :nodoc:
|
8
|
+
consumer_class = Class.new(FlippRubyKafka::Consumer) do
|
9
|
+
# :nodoc:
|
10
|
+
def consume
|
11
|
+
end
|
12
|
+
end
|
13
|
+
stub_const('ConsumerTest::MyConsumer', consumer_class)
|
14
|
+
|
15
|
+
producer_class = Class.new(FlippRubyKafka::Producer)
|
16
|
+
stub_const('MyProducer', producer_class)
|
17
|
+
end
|
18
|
+
|
19
|
+
before(:each) do
|
20
|
+
|
21
|
+
FlippRubyKafka.configure do
|
22
|
+
producer do
|
23
|
+
class_name 'MyProducer'
|
24
|
+
schema 'MySchema'
|
25
|
+
namespace 'com.my-namespace'
|
26
|
+
topic 'my-topic'
|
27
|
+
key_config field: 'test_id'
|
28
|
+
end
|
29
|
+
consumer do
|
30
|
+
class_name 'ConsumerTest::MyConsumer'
|
31
|
+
schema 'MySchemaWithDateTimes'
|
32
|
+
namespace 'com.my-namespace'
|
33
|
+
key_config plain: true
|
34
|
+
topic 'my_consume_topic'
|
35
|
+
group_id 'my-group-id'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
specify '#generate_config' do
|
42
|
+
base_path = File.join(File.expand_path('..', __dir__), 'schemas')
|
43
|
+
validator = described_class.new(base_path: base_path)
|
44
|
+
config = validator.generate_config
|
45
|
+
expect(config[:environments][:default]).to include(
|
46
|
+
'file' => "#{base_path}/com/my-namespace/MySchema.avsc",
|
47
|
+
'subject' => 'my-topic-value'
|
48
|
+
)
|
49
|
+
expect(config[:environments][:default]).to include(
|
50
|
+
'file' => "#{base_path}/com/my-namespace/MySchemaWithDateTimes.avsc",
|
51
|
+
'subject' => 'my_consume_topic-value'
|
52
|
+
)
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'flipp_ruby_kafka/utils/platform_topic_validation'
|
4
|
+
|
5
|
+
describe(FlippRubyKafka::Utils::PlatformTopicValidation) do
|
6
|
+
prepend_before(:each) do
|
7
|
+
# :nodoc:
|
8
|
+
consumer_class = Class.new(FlippRubyKafka::Consumer) do
|
9
|
+
# :nodoc:
|
10
|
+
def consume
|
11
|
+
end
|
12
|
+
end
|
13
|
+
stub_const('ConsumerTest::MyConsumer', consumer_class)
|
14
|
+
|
15
|
+
producer_class = Class.new(FlippRubyKafka::Producer)
|
16
|
+
stub_const('MyProducer', producer_class)
|
17
|
+
end
|
18
|
+
|
19
|
+
before(:each) do
|
20
|
+
|
21
|
+
FlippRubyKafka.configure do
|
22
|
+
producer do
|
23
|
+
class_name 'MyProducer'
|
24
|
+
schema 'MySchema'
|
25
|
+
namespace 'com.my-namespace'
|
26
|
+
topic 'my-topic'
|
27
|
+
key_config field: 'test_id'
|
28
|
+
end
|
29
|
+
consumer do
|
30
|
+
class_name 'ConsumerTest::MyConsumer'
|
31
|
+
schema 'MySchemaWithDateTimes'
|
32
|
+
namespace 'com.my-namespace'
|
33
|
+
key_config plain: true
|
34
|
+
topic 'my_consume_topic'
|
35
|
+
group_id 'my-group-id'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
specify '#generate_config' do
|
42
|
+
config = described_class.generate_config('my-service')
|
43
|
+
expect(config).
|
44
|
+
to eq(
|
45
|
+
acls: [{ role: 'producer', topic: 'my-topic' },
|
46
|
+
{ role: 'consumer', topic: 'my_consume_topic' }],
|
47
|
+
service: 'my-service'
|
48
|
+
)
|
49
|
+
end
|
50
|
+
end
|
metadata
ADDED
@@ -0,0 +1,262 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: flipp-ruby-kafka-temp-fork
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Daniel Orner
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-08-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: ddtrace
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.11'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.11'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: deimos-temp-fork
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.0.2
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.0.2
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: flipp-ruby-dogstatsd
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: railties
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: flipp_ruby_style
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: guard
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '2'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '2'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: guard-rspec
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '4'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '4'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: guard-rubocop
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '1'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '1'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rspec
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '3'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '3'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rspec_junit_formatter
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0.3'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0.3'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rubocop
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0.58'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0.58'
|
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: '1.27'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '1.27'
|
181
|
+
description: Write a longer description. Optional.
|
182
|
+
email:
|
183
|
+
- daniel.orner@wishabi.com
|
184
|
+
executables:
|
185
|
+
- flipp_ruby_kafka
|
186
|
+
extensions: []
|
187
|
+
extra_rdoc_files: []
|
188
|
+
files:
|
189
|
+
- ".circleci/config.yml"
|
190
|
+
- ".dockerignore"
|
191
|
+
- ".gitignore"
|
192
|
+
- ".gitmodules"
|
193
|
+
- ".rspec"
|
194
|
+
- ".rubocop.yml"
|
195
|
+
- ".ruby-gemset"
|
196
|
+
- ".ruby-version"
|
197
|
+
- CHANGELOG.md
|
198
|
+
- Dockerfile
|
199
|
+
- Gemfile
|
200
|
+
- Gemfile.lock
|
201
|
+
- Guardfile
|
202
|
+
- README.md
|
203
|
+
- Rakefile
|
204
|
+
- bin/flipp_ruby_kafka
|
205
|
+
- deploy/artifactory.sh
|
206
|
+
- deploy/config.json
|
207
|
+
- docker-compose.yml
|
208
|
+
- docs/UPGRADE_1.0.md
|
209
|
+
- flipp-ruby-kafka.gemspec
|
210
|
+
- kafkateria/factories/my_schema.rb
|
211
|
+
- kafkateria/factories/my_schema_with_id.rb
|
212
|
+
- lib/flipp_ruby_kafka.rb
|
213
|
+
- lib/flipp_ruby_kafka/flipp_datadog_metrics.rb
|
214
|
+
- lib/flipp_ruby_kafka/test_helpers.rb
|
215
|
+
- lib/flipp_ruby_kafka/utils/platform_schema_validation.rb
|
216
|
+
- lib/flipp_ruby_kafka/utils/platform_topic_validation.rb
|
217
|
+
- lib/flipp_ruby_kafka/version.rb
|
218
|
+
- lib/generators/flipp_ruby_kafka/schema_validation/schema_validation_generator.rb
|
219
|
+
- lib/generators/flipp_ruby_kafka/topic_validation/topic_validation_generator.rb
|
220
|
+
- spec/flipp_ruby_kafka_spec.rb
|
221
|
+
- spec/integration/send_kafka_spec.rb
|
222
|
+
- spec/phobos.yml
|
223
|
+
- spec/schemas/com/my-namespace/MySchema-key.avsc
|
224
|
+
- spec/schemas/com/my-namespace/MySchema.avsc
|
225
|
+
- spec/schemas/com/my-namespace/MySchemaWithDateTimes.avsc
|
226
|
+
- spec/schemas/com/my-namespace/MySchemaWithId.avsc
|
227
|
+
- spec/spec_helper.rb
|
228
|
+
- spec/utils/platform_schema_validation_spec.rb
|
229
|
+
- spec/utils/platform_topic_validation_spec.rb
|
230
|
+
homepage: ''
|
231
|
+
licenses: []
|
232
|
+
metadata: {}
|
233
|
+
post_install_message:
|
234
|
+
rdoc_options: []
|
235
|
+
require_paths:
|
236
|
+
- lib
|
237
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
238
|
+
requirements:
|
239
|
+
- - ">="
|
240
|
+
- !ruby/object:Gem::Version
|
241
|
+
version: '0'
|
242
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
243
|
+
requirements:
|
244
|
+
- - ">="
|
245
|
+
- !ruby/object:Gem::Version
|
246
|
+
version: '0'
|
247
|
+
requirements: []
|
248
|
+
rubygems_version: 3.2.3
|
249
|
+
signing_key:
|
250
|
+
specification_version: 4
|
251
|
+
summary: Flipp Kafka libraries for Ruby.
|
252
|
+
test_files:
|
253
|
+
- spec/flipp_ruby_kafka_spec.rb
|
254
|
+
- spec/integration/send_kafka_spec.rb
|
255
|
+
- spec/phobos.yml
|
256
|
+
- spec/schemas/com/my-namespace/MySchema-key.avsc
|
257
|
+
- spec/schemas/com/my-namespace/MySchema.avsc
|
258
|
+
- spec/schemas/com/my-namespace/MySchemaWithDateTimes.avsc
|
259
|
+
- spec/schemas/com/my-namespace/MySchemaWithId.avsc
|
260
|
+
- spec/spec_helper.rb
|
261
|
+
- spec/utils/platform_schema_validation_spec.rb
|
262
|
+
- spec/utils/platform_topic_validation_spec.rb
|