rom-kafka 0.0.1 → 0.0.2
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 +4 -4
- data/.travis.yml +3 -7
- data/CHANGELOG.md +8 -0
- data/Guardfile +1 -1
- data/README.md +1 -1
- data/lib/rom-kafka.rb +0 -2
- data/lib/rom/kafka.rb +2 -7
- data/lib/rom/kafka/brokers.rb +3 -11
- data/lib/rom/kafka/brokers/broker.rb +3 -13
- data/lib/rom/kafka/connection.rb +2 -8
- data/lib/rom/kafka/connection/consumer.rb +6 -13
- data/lib/rom/kafka/connection/producer.rb +10 -16
- data/lib/rom/kafka/create.rb +3 -10
- data/lib/rom/kafka/dataset.rb +3 -8
- data/lib/rom/kafka/gateway.rb +5 -10
- data/lib/rom/kafka/relation.rb +3 -17
- data/rom-kafka.gemspec +9 -16
- data/spec/integration/basic_usage_spec.rb +1 -4
- data/spec/integration/keys_usage_spec.rb +1 -4
- data/spec/shared/scholars_topic.rb +10 -19
- data/spec/spec_helper.rb +0 -2
- data/spec/unit/brokers/broker_spec.rb +5 -14
- data/spec/unit/brokers_spec.rb +3 -12
- data/spec/unit/connection/consumer_spec.rb +5 -8
- data/spec/unit/connection/producer_spec.rb +3 -6
- data/spec/unit/create_spec.rb +6 -9
- data/spec/unit/dataset_spec.rb +8 -11
- data/spec/unit/gateway_spec.rb +8 -11
- data/spec/unit/relation_spec.rb +9 -12
- metadata +51 -67
- data/lib/rom/kafka/version.rb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d8631833883999ca97e9adf2b6380a3e196af95
|
4
|
+
data.tar.gz: 79d40d534a95243e578606d73c177abd70ecddb8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 979b7e2bc84945296660524cb654e934024d8154dae17c3eeb940399b3e679b0b1c14e1c1410181a690cb216622fb67eae94a9a85aa0fb5f96666a67f12b8804
|
7
|
+
data.tar.gz: f6779f28c402cb6dfddf92aecb0bf00557a685e62e904107504803affba54cc038174cd86165e9dc3eff3f3a49740222fa30a40d7bc4b1689eaa865216182389
|
data/.travis.yml
CHANGED
@@ -17,16 +17,12 @@ before_install:
|
|
17
17
|
- ./bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic scholars --partitions 3 --replication-factor 1
|
18
18
|
- cd ../
|
19
19
|
rvm:
|
20
|
-
- '1.9.3'
|
21
|
-
- '2.0'
|
22
20
|
- '2.1'
|
23
21
|
- '2.2'
|
22
|
+
- '2.3.0'
|
24
23
|
- ruby-head
|
25
|
-
- rbx-2
|
26
|
-
-
|
27
|
-
- jruby-1.7-19mode
|
28
|
-
- jruby-1.7-21mode
|
29
|
-
- jruby-9.0.0.0
|
24
|
+
- rbx-2
|
25
|
+
- jruby-9000
|
30
26
|
- jruby-head
|
31
27
|
matrix:
|
32
28
|
allow_failures:
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
## v0.0.2 to be released
|
2
|
+
|
3
|
+
### Added
|
4
|
+
|
5
|
+
* Thread-safety for connections (both producer and consumer) (nepalez)
|
6
|
+
|
7
|
+
[Compare v0.0.1...HEAD](https://github.com/rom-rb/rom-kafka/compare/v0.0.1...HEAD)
|
8
|
+
|
1
9
|
## v0.0.1 2015-09-16
|
2
10
|
|
3
11
|
First public alpha-release.
|
data/Guardfile
CHANGED
data/README.md
CHANGED
@@ -44,7 +44,7 @@ Compatibility
|
|
44
44
|
|
45
45
|
Compatible to [ROM][rom] 0.9+, [Apache Kafka][kafka] 0.8+.
|
46
46
|
|
47
|
-
Tested under [rubies
|
47
|
+
Tested under [rubies supported by ROM][rubies].
|
48
48
|
|
49
49
|
Uses [RSpec][rspec] 3.0+ for testing and [hexx-suit][hexx-suit] for dev/test tools collection.
|
50
50
|
|
data/lib/rom-kafka.rb
CHANGED
data/lib/rom/kafka.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
require "attributes_dsl"
|
3
2
|
require "poseidon"
|
4
3
|
require "rom"
|
@@ -8,22 +7,18 @@ require "rom"
|
|
8
7
|
# @see http://rom-rb.org/
|
9
8
|
#
|
10
9
|
module ROM
|
11
|
-
|
12
10
|
# Apache Kafka support for ROM
|
13
11
|
#
|
14
12
|
# @see http://kafka.apache.org/
|
15
13
|
#
|
16
14
|
module Kafka
|
17
|
-
|
18
15
|
require_relative "kafka/brokers"
|
19
16
|
require_relative "kafka/connection"
|
20
17
|
require_relative "kafka/dataset"
|
21
18
|
require_relative "kafka/gateway"
|
22
19
|
require_relative "kafka/relation"
|
23
20
|
require_relative "kafka/create"
|
24
|
-
|
25
|
-
end # module Kafka
|
21
|
+
end
|
26
22
|
|
27
23
|
register_adapter(:kafka, Kafka)
|
28
|
-
|
29
|
-
end # module ROM
|
24
|
+
end
|
data/lib/rom/kafka/brokers.rb
CHANGED
@@ -1,9 +1,6 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
require_relative "brokers/broker"
|
4
2
|
|
5
3
|
module ROM::Kafka
|
6
|
-
|
7
4
|
# Value object describing a collection of brokers (host:port)
|
8
5
|
#
|
9
6
|
# Knows how to extract brokers from address lines and options
|
@@ -23,7 +20,6 @@ module ROM::Kafka
|
|
23
20
|
# @author Andrew Kozin <Andrew.Kozin@gmail.com>
|
24
21
|
#
|
25
22
|
class Brokers
|
26
|
-
|
27
23
|
include Equalizer.new(:to_a)
|
28
24
|
|
29
25
|
# @!method initialize(lines, options)
|
@@ -37,11 +33,9 @@ module ROM::Kafka
|
|
37
33
|
# @option options [#to_s, Array<#to_s>] :hosts
|
38
34
|
# @option options [#to_i] :port
|
39
35
|
#
|
40
|
-
def initialize(*lines)
|
36
|
+
def initialize(*lines) # @todo: refactor using factories
|
41
37
|
hosts, port = extract_hosts_and_port(lines)
|
42
38
|
@brokers = extract_brokers(hosts, port)
|
43
|
-
|
44
|
-
IceNine.deep_freeze(self)
|
45
39
|
end
|
46
40
|
|
47
41
|
# Returns array of string representations of brokers
|
@@ -66,7 +60,5 @@ module ROM::Kafka
|
|
66
60
|
brokers = hosts.map { |host| Broker.new(host: host, port: port) }
|
67
61
|
brokers.any? ? brokers : [Broker.new]
|
68
62
|
end
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
end # module ROM::Kafka
|
63
|
+
end
|
64
|
+
end
|
@@ -1,9 +1,5 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
module ROM::Kafka
|
4
|
-
|
5
2
|
class Brokers
|
6
|
-
|
7
3
|
# Describes an address to a brocker
|
8
4
|
#
|
9
5
|
# @example
|
@@ -19,7 +15,6 @@ module ROM::Kafka
|
|
19
15
|
# @author Andrew Kozin <Andrew.Kozin@gmail.com>
|
20
16
|
#
|
21
17
|
class Broker
|
22
|
-
|
23
18
|
include Equalizer.new(:port, :host)
|
24
19
|
|
25
20
|
# Regex to extract host from address line
|
@@ -49,8 +44,6 @@ module ROM::Kafka
|
|
49
44
|
line = options.fetch(:host) { "localhost" }
|
50
45
|
@host = line[HOST]
|
51
46
|
@port = (line[PORT] || options.fetch(:port) { 9092 }).to_i
|
52
|
-
|
53
|
-
IceNine.deep_freeze(self)
|
54
47
|
end
|
55
48
|
|
56
49
|
# Returns the string representation of the broker in "host:port" format
|
@@ -60,9 +53,6 @@ module ROM::Kafka
|
|
60
53
|
def to_s
|
61
54
|
"#{host}:#{port}"
|
62
55
|
end
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
end # class Brokers
|
67
|
-
|
68
|
-
end # module ROM::Kafka
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
data/lib/rom/kafka/connection.rb
CHANGED
@@ -1,7 +1,4 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
module ROM::Kafka
|
4
|
-
|
5
2
|
# Describes the connection to Kafka cluster
|
6
3
|
#
|
7
4
|
# This is a base abstract class for producer and concumer connections.
|
@@ -11,12 +8,9 @@ module ROM::Kafka
|
|
11
8
|
# @author Andrew Kozin <Andrew.Kozin@gmail.com>
|
12
9
|
#
|
13
10
|
class Connection
|
14
|
-
|
15
11
|
extend AttributesDSL
|
16
12
|
|
17
13
|
require_relative "connection/producer"
|
18
14
|
require_relative "connection/consumer"
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
end # module ROM::Kafka
|
15
|
+
end
|
16
|
+
end
|
@@ -1,9 +1,5 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
module ROM::Kafka
|
4
|
-
|
5
2
|
class Connection
|
6
|
-
|
7
3
|
# The consumer-specific connection to Kafka cluster
|
8
4
|
#
|
9
5
|
# It is wrapped around `Poseidon::Consumer` driver, and responsible for
|
@@ -16,7 +12,6 @@ module ROM::Kafka
|
|
16
12
|
# @api private
|
17
13
|
#
|
18
14
|
class Consumer < Connection
|
19
|
-
|
20
15
|
include Enumerable
|
21
16
|
|
22
17
|
# The 'poseidon'-specific class describing consumers
|
@@ -60,10 +55,12 @@ module ROM::Kafka
|
|
60
55
|
# How long to block until the server sends data.
|
61
56
|
# NOTE: This is only enforced if min_bytes is > 0.
|
62
57
|
#
|
58
|
+
# @todo: refactor usinng factory method Connection.build_consumer
|
63
59
|
def initialize(opts)
|
64
60
|
super # takes declared attributes from options
|
65
61
|
args = opts.values_at(:client_id, :brokers, :topic, :partition, :offset)
|
66
62
|
@connection = DRIVER.consumer_for_partition(*args, attributes)
|
63
|
+
@mutex = Mutex.new
|
67
64
|
end
|
68
65
|
|
69
66
|
# Fetches a single portion of messages and converts them to tuple
|
@@ -71,8 +68,7 @@ module ROM::Kafka
|
|
71
68
|
# @return [Array<Hash{Symbol => String, Integer}>]
|
72
69
|
#
|
73
70
|
def fetch
|
74
|
-
|
75
|
-
result.map(&method(:tuple))
|
71
|
+
@mutex.synchronize { @connection.fetch }.map(&method(:tuple))
|
76
72
|
end
|
77
73
|
|
78
74
|
# Iterates through Kafka messages
|
@@ -97,9 +93,6 @@ module ROM::Kafka
|
|
97
93
|
def tuple(msg)
|
98
94
|
{ value: msg.value, topic: msg.topic, key: msg.key, offset: msg.offset }
|
99
95
|
end
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
end # class Connection
|
104
|
-
|
105
|
-
end # module ROM::Kafka
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -1,9 +1,5 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
module ROM::Kafka
|
4
|
-
|
5
2
|
class Connection
|
6
|
-
|
7
3
|
# The producer-specific connection to Kafka cluster
|
8
4
|
#
|
9
5
|
# It is wrapped around `Poseidon::Producer` driver, and responsible for
|
@@ -73,11 +69,12 @@ module ROM::Kafka
|
|
73
69
|
# @option options [Integer] :socket_timeout_ms (10_000)
|
74
70
|
# How long the producer/consumer socket waits for any reply from server.
|
75
71
|
#
|
76
|
-
def initialize(options)
|
72
|
+
def initialize(options) # @todo: Refactor using factory method Connection.build_producer
|
77
73
|
super # takes declared attributes only, skipping brokers and client_id
|
78
|
-
brokers
|
79
|
-
client
|
74
|
+
brokers = options.fetch(:brokers)
|
75
|
+
client = options.fetch(:client_id)
|
80
76
|
@connection = DRIVER.new(brokers, client, attributes)
|
77
|
+
@mutex = Mutex.new
|
81
78
|
end
|
82
79
|
|
83
80
|
# Sends tuples to the underlying connection
|
@@ -90,9 +87,9 @@ module ROM::Kafka
|
|
90
87
|
# The list of published tuples
|
91
88
|
#
|
92
89
|
def publish(*data)
|
93
|
-
tuples
|
94
|
-
|
95
|
-
|
90
|
+
tuples = data.flatten.map(&method(:stringify_keys))
|
91
|
+
messages = tuples.map(&method(:message))
|
92
|
+
@mutex.synchronize { @connection.send_messages messages }
|
96
93
|
tuples
|
97
94
|
end
|
98
95
|
|
@@ -106,9 +103,6 @@ module ROM::Kafka
|
|
106
103
|
def message(tuple)
|
107
104
|
MESSAGE.new(*tuple.values_at(:topic, :value, :key))
|
108
105
|
end
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
end # class Connection
|
113
|
-
|
114
|
-
end # module ROM::Kafka
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
data/lib/rom/kafka/create.rb
CHANGED
@@ -1,11 +1,7 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
module ROM::Kafka
|
4
|
-
|
5
2
|
# The namespace for Kafka-specific ROM commands
|
6
3
|
#
|
7
4
|
module Commands
|
8
|
-
|
9
5
|
# The Kafka-specific implementation of ROM::Commands::Create
|
10
6
|
#
|
11
7
|
# @example
|
@@ -67,9 +63,6 @@ module ROM::Kafka
|
|
67
63
|
def tuple(text)
|
68
64
|
{ value: text.to_s, topic: dataset.topic, key: key }
|
69
65
|
end
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
end # module Commands
|
74
|
-
|
75
|
-
end # module ROM::Kafka
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
data/lib/rom/kafka/dataset.rb
CHANGED
@@ -1,7 +1,4 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
module ROM::Kafka
|
4
|
-
|
5
2
|
# The dataset describes Kafka topic
|
6
3
|
#
|
7
4
|
# @api private
|
@@ -75,7 +72,7 @@ module ROM::Kafka
|
|
75
72
|
@topic = topic.to_s
|
76
73
|
@gateway = gateway
|
77
74
|
@producer = gateway.producer
|
78
|
-
@consumer = prepare_consumer
|
75
|
+
@consumer = prepare_consumer # @todo: refactor using a factory
|
79
76
|
end
|
80
77
|
|
81
78
|
# Returns a new dataset with updated consumer attributes
|
@@ -126,7 +123,5 @@ module ROM::Kafka
|
|
126
123
|
enum = consumer.each
|
127
124
|
limit.times { yield(enum.next) }
|
128
125
|
end
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
end # module ROM::Kafka
|
126
|
+
end
|
127
|
+
end
|
data/lib/rom/kafka/gateway.rb
CHANGED
@@ -1,7 +1,4 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
module ROM::Kafka
|
4
|
-
|
5
2
|
# Describes the gateway to Kafka
|
6
3
|
#
|
7
4
|
# The gateway has 3 responsibilities:
|
@@ -112,12 +109,12 @@ module ROM::Kafka
|
|
112
109
|
# How long to block until the server sends data.
|
113
110
|
# NOTE: This is only enforced if min_bytes is > 0.
|
114
111
|
#
|
115
|
-
def initialize(*addresses)
|
112
|
+
def initialize(*addresses) # @todo: refactor the fat initializer
|
116
113
|
options = Hash[addresses.pop]
|
117
|
-
brokers = Brokers.new(addresses, options).to_a
|
114
|
+
brokers = Brokers.new(addresses, options).to_a # @todo: refactor using a factory
|
118
115
|
super options.merge(brokers: brokers) # prepares #attributes
|
119
116
|
|
120
|
-
@producer = Connection::Producer.new(attributes)
|
117
|
+
@producer = Connection::Producer.new(attributes) # @todo: refactor using a factory
|
121
118
|
@datasets = {}
|
122
119
|
end
|
123
120
|
|
@@ -159,7 +156,5 @@ module ROM::Kafka
|
|
159
156
|
def dataset?(topic)
|
160
157
|
self[topic] ? true : false
|
161
158
|
end
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
end # module ROM::Kafka
|
159
|
+
end
|
160
|
+
end
|
data/lib/rom/kafka/relation.rb
CHANGED
@@ -1,7 +1,4 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
module ROM::Kafka
|
4
|
-
|
5
2
|
# The Kafka-specific implementation of ROM::Relation
|
6
3
|
#
|
7
4
|
# @example
|
@@ -22,6 +19,7 @@ module ROM::Kafka
|
|
22
19
|
class Relation < ROM::Relation
|
23
20
|
|
24
21
|
adapter :kafka
|
22
|
+
forward :using
|
25
23
|
|
26
24
|
# Kafka-specific alias for the ROM `.dataset` helper method.
|
27
25
|
#
|
@@ -62,17 +60,5 @@ module ROM::Kafka
|
|
62
60
|
def limit(value)
|
63
61
|
using(limit: value)
|
64
62
|
end
|
65
|
-
|
66
|
-
|
67
|
-
#
|
68
|
-
# @param [Hash] attributes
|
69
|
-
#
|
70
|
-
# @return [ROM::Kafka::Relation]
|
71
|
-
#
|
72
|
-
def using(attributes)
|
73
|
-
self.class.new dataset.using(attributes)
|
74
|
-
end
|
75
|
-
|
76
|
-
end # class Relation
|
77
|
-
|
78
|
-
end # module ROM::Kafka
|
63
|
+
end
|
64
|
+
end
|
data/rom-kafka.gemspec
CHANGED
@@ -1,12 +1,6 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
lib = File.expand_path("../lib", __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require "rom/kafka/version"
|
5
|
-
|
6
1
|
Gem::Specification.new do |gem|
|
7
|
-
|
8
2
|
gem.name = "rom-kafka"
|
9
|
-
gem.version =
|
3
|
+
gem.version = "0.0.2"
|
10
4
|
gem.author = ["Andrew Kozin"]
|
11
5
|
gem.email = ["andrew.kozin@gmail.com"]
|
12
6
|
gem.summary = "Kafka support for Ruby Object Mapper"
|
@@ -14,20 +8,19 @@ Gem::Specification.new do |gem|
|
|
14
8
|
gem.homepage = "https://rom-rb.org"
|
15
9
|
gem.license = "MIT"
|
16
10
|
|
17
|
-
gem.files = `git ls-files
|
11
|
+
gem.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
18
12
|
gem.executables = gem.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
|
-
gem.test_files = gem.files.grep(
|
20
|
-
gem.extra_rdoc_files = Dir["README.md", "LICENSE"]
|
13
|
+
gem.test_files = gem.files.grep(/^spec/)
|
14
|
+
gem.extra_rdoc_files = Dir["README.md", "LICENSE", "CHANGELOG.md"]
|
21
15
|
gem.require_paths = ["lib"]
|
22
16
|
|
23
|
-
gem.required_ruby_version = "
|
17
|
+
gem.required_ruby_version = ">= 1.9.3"
|
24
18
|
|
25
|
-
gem.add_runtime_dependency "rom", "~>
|
26
|
-
gem.add_runtime_dependency "poseidon", "~> 0.0
|
27
|
-
gem.add_runtime_dependency "attributes_dsl", "~> 0.0", ">= 0.
|
19
|
+
gem.add_runtime_dependency "rom", "~> 1.0"
|
20
|
+
gem.add_runtime_dependency "poseidon", "~> 0.0.5"
|
21
|
+
gem.add_runtime_dependency "attributes_dsl", "~> 0.1.0", ">= 0.1.1"
|
28
22
|
|
29
23
|
gem.add_development_dependency "hexx-rspec", "~> 0.5"
|
30
24
|
gem.add_development_dependency "inflecto", "~> 0.0", ">= 0.0.2"
|
31
25
|
gem.add_development_dependency "timecop", "~> 0.8"
|
32
|
-
|
33
|
-
end # Gem::Specification
|
26
|
+
end
|
@@ -1,8 +1,6 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
require "shared/scholars_topic"
|
3
2
|
|
4
3
|
describe "Basic Usage" do
|
5
|
-
|
6
4
|
include_context :scholars_topic
|
7
5
|
|
8
6
|
let(:add_scholars) { insert.with(key: 0) }
|
@@ -54,5 +52,4 @@ describe "Basic Usage" do
|
|
54
52
|
# To start from the next offset, we should set it explicitly.
|
55
53
|
expect(scholars.call.to_a).to eql []
|
56
54
|
end
|
57
|
-
|
58
|
-
end # describe Basic Usage
|
55
|
+
end
|
@@ -1,8 +1,6 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
require "shared/scholars_topic"
|
3
2
|
|
4
3
|
describe "Keys Usage" do
|
5
|
-
|
6
4
|
include_context :scholars_topic
|
7
5
|
|
8
6
|
it "works" do
|
@@ -30,5 +28,4 @@ describe "Keys Usage" do
|
|
30
28
|
{ value: "Philip", topic: "scholars", key: "5", offset: 1 }
|
31
29
|
]
|
32
30
|
end
|
33
|
-
|
34
|
-
end # describe Keys Usage
|
31
|
+
end
|
@@ -1,28 +1,19 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
shared_examples :scholars_topic do
|
4
|
-
|
5
2
|
let!(:rom) do
|
6
|
-
|
7
|
-
env.use :auto_registration
|
8
|
-
|
9
|
-
setup = env.setup(
|
10
|
-
:kafka, "localhost:9092",
|
3
|
+
options = {
|
11
4
|
client_id: "admin",
|
12
|
-
|
13
|
-
|
14
|
-
)
|
5
|
+
partitioner: proc { |key, total| key.to_i % total }
|
6
|
+
}
|
7
|
+
ROM.container(:kafka, "localhost:9092", options) do |config|
|
8
|
+
config.use(:macros)
|
15
9
|
|
16
|
-
|
17
|
-
|
18
|
-
|
10
|
+
config.relation(:scholars)
|
11
|
+
config.commands(:scholars) do
|
12
|
+
define(:create)
|
13
|
+
end
|
19
14
|
end
|
20
|
-
|
21
|
-
setup.finalize
|
22
|
-
setup.env
|
23
15
|
end
|
24
16
|
|
25
17
|
let(:scholars) { rom.relation(:scholars) }
|
26
18
|
let(:insert) { rom.command(:scholars).create }
|
27
|
-
|
28
|
-
end # shared_examples
|
19
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,15 +1,7 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
describe ROM::Kafka::Brokers::Broker do
|
4
2
|
|
5
3
|
let(:broker) { described_class.new }
|
6
4
|
|
7
|
-
describe ".new" do
|
8
|
-
subject { broker }
|
9
|
-
|
10
|
-
it { is_expected.to be_frozen }
|
11
|
-
end # describe .new
|
12
|
-
|
13
5
|
describe "#host" do
|
14
6
|
subject { broker.host }
|
15
7
|
|
@@ -28,7 +20,7 @@ describe ROM::Kafka::Brokers::Broker do
|
|
28
20
|
|
29
21
|
it { is_expected.to eql "localhost" }
|
30
22
|
end
|
31
|
-
end
|
23
|
+
end
|
32
24
|
|
33
25
|
describe "#port" do
|
34
26
|
subject { broker.port }
|
@@ -56,13 +48,13 @@ describe ROM::Kafka::Brokers::Broker do
|
|
56
48
|
expect(subject).to eql 9092
|
57
49
|
end
|
58
50
|
end
|
59
|
-
end
|
51
|
+
end
|
60
52
|
|
61
53
|
describe "#to_s" do
|
62
54
|
subject { described_class.new(host: :"127.0.0.1:9093").to_s }
|
63
55
|
|
64
56
|
it { is_expected.to eql "127.0.0.1:9093" }
|
65
|
-
end
|
57
|
+
end
|
66
58
|
|
67
59
|
describe "#==" do
|
68
60
|
subject { broker == other }
|
@@ -84,6 +76,5 @@ describe ROM::Kafka::Brokers::Broker do
|
|
84
76
|
|
85
77
|
it { is_expected.to eql false }
|
86
78
|
end
|
87
|
-
end
|
88
|
-
|
89
|
-
end # describe ROM::Kafka::Brokers::Broker
|
79
|
+
end
|
80
|
+
end
|
data/spec/unit/brokers_spec.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
describe ROM::Kafka::Brokers do
|
4
2
|
|
5
3
|
let(:default_brokers) { described_class.new }
|
@@ -7,12 +5,6 @@ describe ROM::Kafka::Brokers do
|
|
7
5
|
described_class.new "foo", "bar:9093", hosts: ["baz:9092"], port: 9094
|
8
6
|
end
|
9
7
|
|
10
|
-
describe ".new" do
|
11
|
-
subject { default_brokers }
|
12
|
-
|
13
|
-
it { is_expected.to be_frozen }
|
14
|
-
end # describe .new
|
15
|
-
|
16
8
|
describe "#to_a" do
|
17
9
|
context "by default" do
|
18
10
|
subject { default_brokers.to_a }
|
@@ -25,7 +17,7 @@ describe ROM::Kafka::Brokers do
|
|
25
17
|
|
26
18
|
it { is_expected.to eql ["foo:9094", "bar:9093", "baz:9092"] }
|
27
19
|
end
|
28
|
-
end
|
20
|
+
end
|
29
21
|
|
30
22
|
describe "#==" do
|
31
23
|
subject { default_brokers == other }
|
@@ -41,6 +33,5 @@ describe ROM::Kafka::Brokers do
|
|
41
33
|
|
42
34
|
it { is_expected.to eql false }
|
43
35
|
end
|
44
|
-
end
|
45
|
-
|
46
|
-
end # describe ROM::Kafka::Brokers
|
36
|
+
end
|
37
|
+
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
describe ROM::Kafka::Connection::Consumer do
|
4
2
|
|
5
3
|
# ============================================================================
|
@@ -34,7 +32,7 @@ describe ROM::Kafka::Connection::Consumer do
|
|
34
32
|
subject { consumer }
|
35
33
|
|
36
34
|
it { is_expected.to be_kind_of Enumerable }
|
37
|
-
end
|
35
|
+
end
|
38
36
|
|
39
37
|
describe "#connection" do
|
40
38
|
subject { consumer.connection }
|
@@ -46,7 +44,7 @@ describe ROM::Kafka::Connection::Consumer do
|
|
46
44
|
|
47
45
|
expect(subject).to eql(connection)
|
48
46
|
end
|
49
|
-
end
|
47
|
+
end
|
50
48
|
|
51
49
|
describe "#fetch" do
|
52
50
|
subject { consumer.fetch }
|
@@ -57,7 +55,7 @@ describe ROM::Kafka::Connection::Consumer do
|
|
57
55
|
expect(connection).to receive(:fetch)
|
58
56
|
expect(subject).to eql [tuple]
|
59
57
|
end
|
60
|
-
end
|
58
|
+
end
|
61
59
|
|
62
60
|
describe "#each" do
|
63
61
|
|
@@ -85,6 +83,5 @@ describe ROM::Kafka::Connection::Consumer do
|
|
85
83
|
expect(subject).to eq [tuple, tuple]
|
86
84
|
end
|
87
85
|
end
|
88
|
-
end
|
89
|
-
|
90
|
-
end # describe ROM::Kafka::Connection::Consumer
|
86
|
+
end
|
87
|
+
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
describe ROM::Kafka::Connection::Producer do
|
4
2
|
|
5
3
|
# ============================================================================
|
@@ -44,7 +42,7 @@ describe ROM::Kafka::Connection::Producer do
|
|
44
42
|
expect(driver).to receive(:new).with(brokers, client, attributes)
|
45
43
|
expect(subject).to eql(connection)
|
46
44
|
end
|
47
|
-
end
|
45
|
+
end
|
48
46
|
|
49
47
|
describe "#publish" do
|
50
48
|
subject { producer.publish(*input) }
|
@@ -74,6 +72,5 @@ describe ROM::Kafka::Connection::Producer do
|
|
74
72
|
it "returns the plain array of tuples" do
|
75
73
|
expect(subject).to eql output
|
76
74
|
end
|
77
|
-
end
|
78
|
-
|
79
|
-
end # describe ROM::Kafka::Connection::Producer
|
75
|
+
end
|
76
|
+
end
|
data/spec/unit/create_spec.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
describe ROM::Kafka::Commands::Create do
|
4
2
|
|
5
3
|
let(:command) { described_class.new relation }
|
@@ -12,19 +10,19 @@ describe ROM::Kafka::Commands::Create do
|
|
12
10
|
subject { described_class.adapter }
|
13
11
|
|
14
12
|
it { is_expected.to eql(:kafka) }
|
15
|
-
end
|
13
|
+
end
|
16
14
|
|
17
15
|
describe ".new" do
|
18
16
|
subject { command }
|
19
17
|
|
20
18
|
it { is_expected.to be_kind_of ROM::Commands::Create }
|
21
|
-
end
|
19
|
+
end
|
22
20
|
|
23
21
|
describe "#key" do
|
24
22
|
subject { command.key }
|
25
23
|
|
26
24
|
it { is_expected.to be_nil }
|
27
|
-
end
|
25
|
+
end
|
28
26
|
|
29
27
|
describe "#with" do
|
30
28
|
subject { command.with(key: "foo") }
|
@@ -40,7 +38,7 @@ describe ROM::Kafka::Commands::Create do
|
|
40
38
|
it "updates the key" do
|
41
39
|
expect(subject.key).to eql("foo")
|
42
40
|
end
|
43
|
-
end
|
41
|
+
end
|
44
42
|
|
45
43
|
describe "#call" do
|
46
44
|
subject { command.call(:bar, ["baz"]) }
|
@@ -74,6 +72,5 @@ describe ROM::Kafka::Commands::Create do
|
|
74
72
|
expect(subject).to eql output
|
75
73
|
end
|
76
74
|
end
|
77
|
-
end
|
78
|
-
|
79
|
-
end # describe ROM::Kafka::Relation
|
75
|
+
end
|
76
|
+
end
|
data/spec/unit/dataset_spec.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
describe ROM::Kafka::Dataset do
|
4
2
|
|
5
3
|
let(:gateway_class) { ROM::Kafka::Gateway }
|
@@ -17,7 +15,7 @@ describe ROM::Kafka::Dataset do
|
|
17
15
|
it "is initialized" do
|
18
16
|
expect(subject).to eql gateway
|
19
17
|
end
|
20
|
-
end
|
18
|
+
end
|
21
19
|
|
22
20
|
describe "#topic" do
|
23
21
|
subject { dataset.topic }
|
@@ -25,7 +23,7 @@ describe ROM::Kafka::Dataset do
|
|
25
23
|
it "is initialized" do
|
26
24
|
expect(subject).to eql topic
|
27
25
|
end
|
28
|
-
end
|
26
|
+
end
|
29
27
|
|
30
28
|
describe "#attributes" do
|
31
29
|
subject { dataset.attributes }
|
@@ -64,7 +62,7 @@ describe ROM::Kafka::Dataset do
|
|
64
62
|
expect(subject).to eql attributes
|
65
63
|
end
|
66
64
|
end
|
67
|
-
end
|
65
|
+
end
|
68
66
|
|
69
67
|
describe "#producer" do
|
70
68
|
subject { dataset.producer }
|
@@ -72,7 +70,7 @@ describe ROM::Kafka::Dataset do
|
|
72
70
|
it "is taken from #gateway" do
|
73
71
|
expect(subject).to eql gateway.producer
|
74
72
|
end
|
75
|
-
end
|
73
|
+
end
|
76
74
|
|
77
75
|
describe "#consumer" do
|
78
76
|
subject { dataset.consumer }
|
@@ -102,7 +100,7 @@ describe ROM::Kafka::Dataset do
|
|
102
100
|
expect(consumer_class).to receive(:new).with(options)
|
103
101
|
expect(subject).to eql consumer
|
104
102
|
end
|
105
|
-
end
|
103
|
+
end
|
106
104
|
|
107
105
|
describe "#using" do
|
108
106
|
subject { dataset.using(update) }
|
@@ -125,7 +123,7 @@ describe ROM::Kafka::Dataset do
|
|
125
123
|
it "updates attributes" do
|
126
124
|
expect(subject.attributes).to eql(dataset.attributes.merge(update))
|
127
125
|
end
|
128
|
-
end
|
126
|
+
end
|
129
127
|
|
130
128
|
describe "#each" do
|
131
129
|
subject { dataset.to_a }
|
@@ -160,6 +158,5 @@ describe ROM::Kafka::Dataset do
|
|
160
158
|
|
161
159
|
it { is_expected.to be_kind_of Enumerator }
|
162
160
|
end
|
163
|
-
end
|
164
|
-
|
165
|
-
end # describe ROM::Kafka::Dataset
|
161
|
+
end
|
162
|
+
end
|
data/spec/unit/gateway_spec.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
describe ROM::Kafka::Gateway do
|
4
2
|
|
5
3
|
let(:gateway) { described_class.new(client_id: :foo) }
|
@@ -18,7 +16,7 @@ describe ROM::Kafka::Gateway do
|
|
18
16
|
expect { subject }.to raise_error ArgumentError
|
19
17
|
end
|
20
18
|
end
|
21
|
-
end
|
19
|
+
end
|
22
20
|
|
23
21
|
describe "#brokers" do
|
24
22
|
subject { gateway.brokers }
|
@@ -48,7 +46,7 @@ describe ROM::Kafka::Gateway do
|
|
48
46
|
|
49
47
|
it { is_expected.to eql brokers }
|
50
48
|
end
|
51
|
-
end
|
49
|
+
end
|
52
50
|
|
53
51
|
describe "#attributes" do
|
54
52
|
subject { gateway.attributes }
|
@@ -98,13 +96,13 @@ describe ROM::Kafka::Gateway do
|
|
98
96
|
|
99
97
|
it { is_expected.to eql attributes }
|
100
98
|
end
|
101
|
-
end
|
99
|
+
end
|
102
100
|
|
103
101
|
describe "#[]" do
|
104
102
|
subject { gateway[:foo] }
|
105
103
|
|
106
104
|
it { is_expected.to eql(nil) }
|
107
|
-
end
|
105
|
+
end
|
108
106
|
|
109
107
|
describe "#dataset?" do
|
110
108
|
before do
|
@@ -122,7 +120,7 @@ describe ROM::Kafka::Gateway do
|
|
122
120
|
|
123
121
|
it { is_expected.to eql false }
|
124
122
|
end
|
125
|
-
end
|
123
|
+
end
|
126
124
|
|
127
125
|
describe "#dataset" do
|
128
126
|
subject { gateway.dataset topic }
|
@@ -149,7 +147,7 @@ describe ROM::Kafka::Gateway do
|
|
149
147
|
it "returns a dataset" do
|
150
148
|
expect(subject).to eql(dataset)
|
151
149
|
end
|
152
|
-
end
|
150
|
+
end
|
153
151
|
|
154
152
|
describe "#producer" do
|
155
153
|
subject { gateway.producer }
|
@@ -166,6 +164,5 @@ describe ROM::Kafka::Gateway do
|
|
166
164
|
expect(subject).to eql producer
|
167
165
|
expect(attributes).to eql gateway.attributes
|
168
166
|
end
|
169
|
-
end
|
170
|
-
|
171
|
-
end # describe ROM::Kafka::Gateway
|
167
|
+
end
|
168
|
+
end
|
data/spec/unit/relation_spec.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
describe ROM::Kafka::Relation do
|
4
2
|
|
5
3
|
let(:relation) { described_class.new dataset }
|
@@ -10,7 +8,7 @@ describe ROM::Kafka::Relation do
|
|
10
8
|
subject { described_class.adapter }
|
11
9
|
|
12
10
|
it { is_expected.to eql(:kafka) }
|
13
|
-
end
|
11
|
+
end
|
14
12
|
|
15
13
|
describe ".topic" do
|
16
14
|
subject { described_class.topic :foo }
|
@@ -21,19 +19,19 @@ describe ROM::Kafka::Relation do
|
|
21
19
|
expect(described_class).to receive(:dataset).with(:foo)
|
22
20
|
subject
|
23
21
|
end
|
24
|
-
end
|
22
|
+
end
|
25
23
|
|
26
24
|
describe ".new" do
|
27
25
|
subject { relation }
|
28
26
|
|
29
27
|
it { is_expected.to be_kind_of ROM::Relation }
|
30
|
-
end
|
28
|
+
end
|
31
29
|
|
32
30
|
describe "#dataset" do
|
33
31
|
subject { relation.dataset }
|
34
32
|
|
35
33
|
it { is_expected.to eql(dataset) }
|
36
|
-
end
|
34
|
+
end
|
37
35
|
|
38
36
|
describe "#using" do
|
39
37
|
subject { relation.using(options) }
|
@@ -48,7 +46,7 @@ describe ROM::Kafka::Relation do
|
|
48
46
|
expect(dataset).to receive(:using).with(options)
|
49
47
|
expect(subject.dataset).to eql(updated)
|
50
48
|
end
|
51
|
-
end
|
49
|
+
end
|
52
50
|
|
53
51
|
describe "#offset" do
|
54
52
|
subject { relation.offset(value) }
|
@@ -63,7 +61,7 @@ describe ROM::Kafka::Relation do
|
|
63
61
|
expect(dataset).to receive(:using).with(offset: value)
|
64
62
|
expect(subject.dataset).to eql(updated)
|
65
63
|
end
|
66
|
-
end
|
64
|
+
end
|
67
65
|
|
68
66
|
describe "#limit" do
|
69
67
|
subject { relation.limit(value) }
|
@@ -78,7 +76,7 @@ describe ROM::Kafka::Relation do
|
|
78
76
|
expect(dataset).to receive(:using).with(limit: value)
|
79
77
|
expect(subject.dataset).to eql(updated)
|
80
78
|
end
|
81
|
-
end
|
79
|
+
end
|
82
80
|
|
83
81
|
describe "#from" do
|
84
82
|
subject { relation.from(3) }
|
@@ -91,6 +89,5 @@ describe ROM::Kafka::Relation do
|
|
91
89
|
expect(dataset).to receive(:using).with(partition: 3)
|
92
90
|
expect(subject.dataset).to eql(updated)
|
93
91
|
end
|
94
|
-
end
|
95
|
-
|
96
|
-
end # describe ROM::Kafka::Relation
|
92
|
+
end
|
93
|
+
end
|
metadata
CHANGED
@@ -1,121 +1,109 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rom-kafka
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kozin
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: rom
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
16
15
|
requirements:
|
17
|
-
- -
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0.9'
|
20
|
-
- - ">="
|
16
|
+
- - ~>
|
21
17
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0
|
23
|
-
|
18
|
+
version: '1.0'
|
19
|
+
name: rom
|
24
20
|
prerelease: false
|
21
|
+
type: :runtime
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '0
|
30
|
-
- - ">="
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 0.9.1
|
26
|
+
version: '1.0'
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
|
-
name: poseidon
|
35
28
|
requirement: !ruby/object:Gem::Requirement
|
36
29
|
requirements:
|
37
|
-
- -
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: '0.0'
|
40
|
-
- - ">="
|
30
|
+
- - ~>
|
41
31
|
- !ruby/object:Gem::Version
|
42
32
|
version: 0.0.5
|
43
|
-
|
33
|
+
name: poseidon
|
44
34
|
prerelease: false
|
35
|
+
type: :runtime
|
45
36
|
version_requirements: !ruby/object:Gem::Requirement
|
46
37
|
requirements:
|
47
|
-
- -
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: '0.0'
|
50
|
-
- - ">="
|
38
|
+
- - ~>
|
51
39
|
- !ruby/object:Gem::Version
|
52
40
|
version: 0.0.5
|
53
41
|
- !ruby/object:Gem::Dependency
|
54
|
-
name: attributes_dsl
|
55
42
|
requirement: !ruby/object:Gem::Requirement
|
56
43
|
requirements:
|
57
|
-
- -
|
44
|
+
- - ~>
|
58
45
|
- !ruby/object:Gem::Version
|
59
|
-
version:
|
60
|
-
- -
|
46
|
+
version: 0.1.0
|
47
|
+
- - '>='
|
61
48
|
- !ruby/object:Gem::Version
|
62
|
-
version: 0.
|
63
|
-
|
49
|
+
version: 0.1.1
|
50
|
+
name: attributes_dsl
|
64
51
|
prerelease: false
|
52
|
+
type: :runtime
|
65
53
|
version_requirements: !ruby/object:Gem::Requirement
|
66
54
|
requirements:
|
67
|
-
- -
|
55
|
+
- - ~>
|
68
56
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
70
|
-
- -
|
57
|
+
version: 0.1.0
|
58
|
+
- - '>='
|
71
59
|
- !ruby/object:Gem::Version
|
72
|
-
version: 0.
|
60
|
+
version: 0.1.1
|
73
61
|
- !ruby/object:Gem::Dependency
|
74
|
-
name: hexx-rspec
|
75
62
|
requirement: !ruby/object:Gem::Requirement
|
76
63
|
requirements:
|
77
|
-
- -
|
64
|
+
- - ~>
|
78
65
|
- !ruby/object:Gem::Version
|
79
66
|
version: '0.5'
|
80
|
-
|
67
|
+
name: hexx-rspec
|
81
68
|
prerelease: false
|
69
|
+
type: :development
|
82
70
|
version_requirements: !ruby/object:Gem::Requirement
|
83
71
|
requirements:
|
84
|
-
- -
|
72
|
+
- - ~>
|
85
73
|
- !ruby/object:Gem::Version
|
86
74
|
version: '0.5'
|
87
75
|
- !ruby/object:Gem::Dependency
|
88
|
-
name: inflecto
|
89
76
|
requirement: !ruby/object:Gem::Requirement
|
90
77
|
requirements:
|
91
|
-
- -
|
78
|
+
- - ~>
|
92
79
|
- !ruby/object:Gem::Version
|
93
80
|
version: '0.0'
|
94
|
-
- -
|
81
|
+
- - '>='
|
95
82
|
- !ruby/object:Gem::Version
|
96
83
|
version: 0.0.2
|
97
|
-
|
84
|
+
name: inflecto
|
98
85
|
prerelease: false
|
86
|
+
type: :development
|
99
87
|
version_requirements: !ruby/object:Gem::Requirement
|
100
88
|
requirements:
|
101
|
-
- -
|
89
|
+
- - ~>
|
102
90
|
- !ruby/object:Gem::Version
|
103
91
|
version: '0.0'
|
104
|
-
- -
|
92
|
+
- - '>='
|
105
93
|
- !ruby/object:Gem::Version
|
106
94
|
version: 0.0.2
|
107
95
|
- !ruby/object:Gem::Dependency
|
108
|
-
name: timecop
|
109
96
|
requirement: !ruby/object:Gem::Requirement
|
110
97
|
requirements:
|
111
|
-
- -
|
98
|
+
- - ~>
|
112
99
|
- !ruby/object:Gem::Version
|
113
100
|
version: '0.8'
|
114
|
-
|
101
|
+
name: timecop
|
115
102
|
prerelease: false
|
103
|
+
type: :development
|
116
104
|
version_requirements: !ruby/object:Gem::Requirement
|
117
105
|
requirements:
|
118
|
-
- -
|
106
|
+
- - ~>
|
119
107
|
- !ruby/object:Gem::Version
|
120
108
|
version: '0.8'
|
121
109
|
description: Kafka support for Ruby Object Mapper
|
@@ -126,14 +114,15 @@ extensions: []
|
|
126
114
|
extra_rdoc_files:
|
127
115
|
- README.md
|
128
116
|
- LICENSE
|
117
|
+
- CHANGELOG.md
|
129
118
|
files:
|
130
|
-
-
|
131
|
-
-
|
132
|
-
-
|
133
|
-
-
|
134
|
-
-
|
135
|
-
-
|
136
|
-
-
|
119
|
+
- .coveralls.yml
|
120
|
+
- .gitignore
|
121
|
+
- .metrics
|
122
|
+
- .rspec
|
123
|
+
- .rubocop.yml
|
124
|
+
- .travis.yml
|
125
|
+
- .yardopts
|
137
126
|
- CHANGELOG.md
|
138
127
|
- Gemfile
|
139
128
|
- Guardfile
|
@@ -162,7 +151,6 @@ files:
|
|
162
151
|
- lib/rom/kafka/dataset.rb
|
163
152
|
- lib/rom/kafka/gateway.rb
|
164
153
|
- lib/rom/kafka/relation.rb
|
165
|
-
- lib/rom/kafka/version.rb
|
166
154
|
- rom-kafka.gemspec
|
167
155
|
- spec/integration/basic_usage_spec.rb
|
168
156
|
- spec/integration/keys_usage_spec.rb
|
@@ -180,27 +168,24 @@ homepage: https://rom-rb.org
|
|
180
168
|
licenses:
|
181
169
|
- MIT
|
182
170
|
metadata: {}
|
183
|
-
post_install_message:
|
171
|
+
post_install_message:
|
184
172
|
rdoc_options: []
|
185
173
|
require_paths:
|
186
174
|
- lib
|
187
175
|
required_ruby_version: !ruby/object:Gem::Requirement
|
188
176
|
requirements:
|
189
|
-
- -
|
190
|
-
- !ruby/object:Gem::Version
|
191
|
-
version: '1.9'
|
192
|
-
- - ">="
|
177
|
+
- - '>='
|
193
178
|
- !ruby/object:Gem::Version
|
194
179
|
version: 1.9.3
|
195
180
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
196
181
|
requirements:
|
197
|
-
- -
|
182
|
+
- - '>='
|
198
183
|
- !ruby/object:Gem::Version
|
199
184
|
version: '0'
|
200
185
|
requirements: []
|
201
|
-
rubyforge_project:
|
202
|
-
rubygems_version: 2.4.
|
203
|
-
signing_key:
|
186
|
+
rubyforge_project:
|
187
|
+
rubygems_version: 2.4.5
|
188
|
+
signing_key:
|
204
189
|
specification_version: 4
|
205
190
|
summary: Kafka support for Ruby Object Mapper
|
206
191
|
test_files:
|
@@ -216,4 +201,3 @@ test_files:
|
|
216
201
|
- spec/unit/dataset_spec.rb
|
217
202
|
- spec/unit/gateway_spec.rb
|
218
203
|
- spec/unit/relation_spec.rb
|
219
|
-
has_rdoc:
|
data/lib/rom/kafka/version.rb
DELETED