karafka 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +68 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +6 -0
  6. data/CHANGELOG.md +202 -0
  7. data/Gemfile +8 -0
  8. data/Gemfile.lock +216 -0
  9. data/MIT-LICENCE +18 -0
  10. data/README.md +831 -0
  11. data/Rakefile +17 -0
  12. data/bin/karafka +7 -0
  13. data/karafka.gemspec +34 -0
  14. data/lib/karafka.rb +73 -0
  15. data/lib/karafka/app.rb +45 -0
  16. data/lib/karafka/base_controller.rb +162 -0
  17. data/lib/karafka/base_responder.rb +118 -0
  18. data/lib/karafka/base_worker.rb +41 -0
  19. data/lib/karafka/capistrano.rb +2 -0
  20. data/lib/karafka/capistrano/karafka.cap +84 -0
  21. data/lib/karafka/cli.rb +52 -0
  22. data/lib/karafka/cli/base.rb +74 -0
  23. data/lib/karafka/cli/console.rb +23 -0
  24. data/lib/karafka/cli/flow.rb +46 -0
  25. data/lib/karafka/cli/info.rb +26 -0
  26. data/lib/karafka/cli/install.rb +45 -0
  27. data/lib/karafka/cli/routes.rb +39 -0
  28. data/lib/karafka/cli/server.rb +59 -0
  29. data/lib/karafka/cli/worker.rb +26 -0
  30. data/lib/karafka/connection/consumer.rb +29 -0
  31. data/lib/karafka/connection/listener.rb +54 -0
  32. data/lib/karafka/connection/message.rb +17 -0
  33. data/lib/karafka/connection/topic_consumer.rb +48 -0
  34. data/lib/karafka/errors.rb +50 -0
  35. data/lib/karafka/fetcher.rb +40 -0
  36. data/lib/karafka/helpers/class_matcher.rb +77 -0
  37. data/lib/karafka/helpers/multi_delegator.rb +31 -0
  38. data/lib/karafka/loader.rb +77 -0
  39. data/lib/karafka/logger.rb +52 -0
  40. data/lib/karafka/monitor.rb +82 -0
  41. data/lib/karafka/params/interchanger.rb +33 -0
  42. data/lib/karafka/params/params.rb +102 -0
  43. data/lib/karafka/patches/dry/configurable/config.rb +37 -0
  44. data/lib/karafka/process.rb +61 -0
  45. data/lib/karafka/responders/builder.rb +33 -0
  46. data/lib/karafka/responders/topic.rb +43 -0
  47. data/lib/karafka/responders/usage_validator.rb +59 -0
  48. data/lib/karafka/routing/builder.rb +89 -0
  49. data/lib/karafka/routing/route.rb +80 -0
  50. data/lib/karafka/routing/router.rb +38 -0
  51. data/lib/karafka/server.rb +53 -0
  52. data/lib/karafka/setup/config.rb +57 -0
  53. data/lib/karafka/setup/configurators/base.rb +33 -0
  54. data/lib/karafka/setup/configurators/celluloid.rb +20 -0
  55. data/lib/karafka/setup/configurators/sidekiq.rb +34 -0
  56. data/lib/karafka/setup/configurators/water_drop.rb +19 -0
  57. data/lib/karafka/setup/configurators/worker_glass.rb +13 -0
  58. data/lib/karafka/status.rb +23 -0
  59. data/lib/karafka/templates/app.rb.example +26 -0
  60. data/lib/karafka/templates/application_controller.rb.example +5 -0
  61. data/lib/karafka/templates/application_responder.rb.example +9 -0
  62. data/lib/karafka/templates/application_worker.rb.example +12 -0
  63. data/lib/karafka/templates/config.ru.example +13 -0
  64. data/lib/karafka/templates/sidekiq.yml.example +26 -0
  65. data/lib/karafka/version.rb +6 -0
  66. data/lib/karafka/workers/builder.rb +49 -0
  67. data/log/.gitkeep +0 -0
  68. metadata +267 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9c40b95f3636ecc4ded9cbbfbb575129e5593560
4
+ data.tar.gz: 2ee0650b0244b772141af9566cfd7c41c0a8632d
5
+ SHA512:
6
+ metadata.gz: c850800bd7b372abe43df6d3179be95d69296b0e6369dc14bea3431f8fe76e3b33fbb6db360e0dd08218bacea183dfd31671c64ac6f3a122f897f2013653a765
7
+ data.tar.gz: 08f57ac78f4c00d0426d17a6a24044cf393f173a356b87865d605b7699b3333424159ae58f9f5ff8cf0bf0d540559d24d19abd69e76d3f5243253c66a25f56b1
@@ -0,0 +1,68 @@
1
+ # bundler state
2
+ /.bundle
3
+ /vendor/bundle/
4
+ /vendor/ruby/
5
+ /ruby/
6
+ app.god
7
+
8
+ # minimal Rails specific artifacts
9
+ db/*.sqlite3
10
+ /log/development.log
11
+ /log/production.log
12
+ /log/test.log
13
+ /tmp/*
14
+ *.gem
15
+ *.~
16
+
17
+ # various artifacts
18
+ **.war
19
+ *.rbc
20
+ *.sassc
21
+ .rspec
22
+ .redcar/
23
+ .capistrano/
24
+ .sass-cache
25
+ /config/god/sidekiq.rb
26
+ /config/puma.rb
27
+ /coverage.data
28
+ /coverage/
29
+ /doc/api/
30
+ /doc/app/
31
+ /doc/yard
32
+ /doc/features.html
33
+ /doc/specs.html
34
+ /spec/tmp/*
35
+ /cache
36
+ /capybara*
37
+ /capybara-*.html
38
+ /gems
39
+ /specifications
40
+ rerun.txt
41
+ pickle-email-*.html
42
+
43
+ # If you find yourself ignoring temporary files generated by your text editor
44
+ # or operating system, you probably want to add a global ignore instead:
45
+ # git config --global core.excludesfile ~/.gitignore_global
46
+ #
47
+ # Here are some files you may want to ignore globally:
48
+
49
+ # scm revert files
50
+ **.orig
51
+
52
+ # Mac finder artifacts
53
+ .DS_Store
54
+
55
+ # Netbeans project directory
56
+ /nbproject
57
+
58
+ # RubyMine project files
59
+ .idea
60
+
61
+ # Textmate project files
62
+ /*.tmproj
63
+
64
+ # vim artifacts
65
+ **.swp
66
+
67
+ # documentation
68
+ .yardoc
@@ -0,0 +1 @@
1
+ karafka
@@ -0,0 +1 @@
1
+ 2.3.1
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.3.0
4
+ - 2.3.1
5
+ script:
6
+ - bundle exec rake
@@ -0,0 +1,202 @@
1
+ # Karafka framework changelog
2
+
3
+ ## 0.5.0-beta
4
+ - Removed Zookeeper totally as dependency
5
+ - Better group and partition rebalancing
6
+ - Automatic thread management (no need for tunning) - each topic is a separate actor/thread
7
+ - Moved from Poseidon into Ruby-Kafka
8
+ - No more max_concurrency setting
9
+ - After you define your App class and routes (and everything else) you need to add execute App.boot!
10
+ - Manual consuming is no longer available (no more karafka consume command)
11
+ - Karafka topics CLI is no longer available. No Zookeeper - no global topic discovery
12
+ - Dropped ZK as dependency
13
+ - karafka info command no longer prints details about Zookeeper
14
+ - Better shutdown
15
+ - No more autodiscovery via Zookeeper - instead, the whole cluster will be discovered directly from Kafka
16
+ - No more support for Kafka 0.8
17
+ - Support for Kafka 0.9
18
+ - No more need for ActorCluster, since now we have a single thread (and Kafka connection) per topic
19
+ - Ruby 2.2.* support dropped
20
+ - Using App name as a Kafka client_id
21
+ - Automatic Capistrano integration
22
+ - Responders support for handling better responses pipelining and better responses flow description and design (see README for more details)
23
+ - Gem dump
24
+ - Readme updates
25
+ - karafka flow CLI command for printing the application flow
26
+ - Some internal refactorings
27
+
28
+ ## 0.4.2
29
+ - #87 - Reconsume mode with crone for better Rails/Rack integration
30
+ - Moved Karafka server related stuff into separate Karafka::Server class
31
+ - Renamed Karafka::Runner into Karafka::Fetcher
32
+ - Gem dump
33
+ - Added chroot option to Zookeeper options
34
+ - Moved BROKERS_PATH into config from constant
35
+ - Added Karafka consume CLI action for a short running single consumption round
36
+ - Small fixes to close broken connections
37
+ - Readme updates
38
+
39
+ ## 0.4.1
40
+ - Explicit throw(:abort) required to halt before_enqueue (like in Rails 5)
41
+ - #61 - Autodiscover Kafka brokers based on Zookeeper data
42
+ - #63 - Graceful shutdown with current offset state during data processing
43
+ - #65 - Example of NewRelic monitor is outdated
44
+ - #71 - Setup should be executed after user code is loaded
45
+ - Gem dump x3
46
+ - Rubocop remarks
47
+ - worker_timeout config option has been removed. It now needs to be defined manually by the framework user because WorkerGlass::Timeout can be disabled and we cannot use Karafka settings on a class level to initialize user code stuff
48
+ - Moved setup logic under setup/Setup namespace
49
+ - Better defaults handling
50
+ - #75 - Kafka and Zookeeper options as a hash
51
+ - #82 - Karafka autodiscovery fails upon caching of configs
52
+ - #81 - Switch config management to dry configurable
53
+ - Version fix
54
+ - Dropped support for Ruby 2.1.*
55
+ - Ruby dump to 2.3.1
56
+
57
+ ## 0.4.0
58
+ - Added WaterDrop gem with default configuration
59
+ - Refactoring of config logic to simplify adding new dependencies that need to be configured based on #setup data
60
+ - Gem dump
61
+ - Readme updates
62
+ - Renamed cluster to actor_cluster for method names
63
+ - Replaced SidekiqGlass with generic WorkerGlass lib
64
+ - Application bootstrap in app.rb no longer required
65
+ - Karafka.boot needs to be executed after all the application files are loaded (template updated)
66
+ - Small loader refactor (no API changes)
67
+ - Ruby 2.3.0 support (default)
68
+ - No more rake tasks
69
+ - Karafka CLI instead of rake tasks
70
+ - Worker cli command allows passing additional options directly to Sidekiq
71
+ - Renamed concurrency to max_concurrency - it describes better what happens - Karafka will use this number of threads only when required
72
+ - Added wait_timeout that allows us to tune how long should we wait on a single socket connection (single topic) for new messages before going to next one (this applies to each thread separately)
73
+ - Rubocop remarks
74
+ - Removed Sinatra and Puma dependencies
75
+ - Karafka Cli internal reorganization
76
+ - Karafka Cli routes task
77
+ - #37 - warn log for failed parsing of a message
78
+ - #43 - wrong constant name
79
+ - #44 - Method name conflict
80
+ - #48 - Cannot load such file -- celluloid/current
81
+ - #46 - Loading application
82
+ - #45 - Set up monitor in config
83
+ - #47 - rake karafka:run uses app.rb only
84
+ - #53 - README update with Sinatra/Rails integration description
85
+ - #41 - New Routing engine
86
+ - #54 - Move Karafka::Workers::BaseWorker to Karafka::BaseWorker
87
+ - #55 - ApplicationController and ApplicationWorker
88
+
89
+ ## 0.3.2
90
+ - Karafka::Params::Params lazy load merge keys with string/symbol names priorities fix
91
+
92
+ ## 0.3.1
93
+ - Renamed Karafka::Monitor to Karafka::Process to represent a Karafka process wrapper
94
+ - Added Karafka::Monitoring that allows to add custom logging and monitoring with external libraries and systems
95
+ - Moved logging functionality into Karafka::Monitoring default monitoring
96
+ - Added possibility to provide own monitoring as long as in responds to #notice and #notice_error
97
+ - Standarized logging format for all logs
98
+
99
+ ## 0.3.0
100
+ - Switched from custom ParserError for each parser to general catching of Karafka::Errors::ParseError and its descendants
101
+ - Gem dump
102
+ - Fixed #32 - now when using custom workers that does not inherit from Karafka::BaseWorker perform method is not required. Using custom workers means that the logic that would normally lie under #perform, needs to be executed directly from the worker.
103
+ - Fixed #31 - Technically didn't fix because this is how Sidekiq is meant to work, but provided possibility to assign custom interchangers that allow to bypass JSON encoding issues by converting data that goes to Redis to a required format (and parsing it back when it is fetched)
104
+ - Added full parameters lazy load - content is no longer loaded during #perform_async if params are not used in before_enqueue
105
+ - No more namespaces for Redis by default (use separate DBs)
106
+
107
+ ## 0.1.21
108
+ - Sidekiq 4.0.1 dump
109
+ - Gem dump
110
+ - Added direct celluloid requirement to Karafka (removed from Sidekiq)
111
+
112
+ ## 0.1.19
113
+ - Internal call - schedule naming change
114
+ - Enqueue to perform_async naming in controller to follow Sidekiqs naming convention
115
+ - Gem dump
116
+
117
+ ## 0.1.18
118
+ - Changed Redis configuration options into a single hash that is directly passed to Redis setup for Sidekiq
119
+ - Added config.ru to provide a Sidekiq web UI (see README for more details)
120
+
121
+ ## 0.1.17
122
+ - Changed Karafka::Connection::Cluster tp Karafka::Connection::ActorCluster to distinguish between a single thread actor cluster for multiple topic connection and a future feature that will allow process clusterization.
123
+ - Add an ability to use user-defined parsers for a messages
124
+ - Lazy load params for before callbacks
125
+ - Automatic loading/initializng all workers classes during startup (so Sidekiq won't fail with unknown workers exception)
126
+ - Params are now private to controller
127
+ - Added bootstrap method to app.rb
128
+
129
+ ## 0.1.16
130
+ - Cluster level error catching for all exceptions so actor is not killer
131
+ - Cluster level error logging
132
+ - Listener refactoring (QueueConsumer extracted)
133
+ - Karafka::Connection::QueueConsumer to wrap around fetching logic - technically we could replace Kafka with any other messaging engine as long as we preserve the same API
134
+ - Added debug env for debugging purpose in applications
135
+
136
+ ## 0.1.15
137
+ - Fixed max_wait_ms vs socket_timeout_ms issue
138
+ - Fixed closing queue connection after Poseidon::Errors::ProtocolError failure
139
+ - Fixed wrong logging file selection based on env
140
+ - Extracted Karafka::Connection::QueueConsumer object to wrap around queue connection
141
+
142
+ ## 0.1.14
143
+ - Rake tasks for listing all the topics on Kafka server (rake kafka:topics)
144
+
145
+ ## 0.1.13
146
+ - Ability to assign custom workers and use them bypassing Karafka::BaseWorker (or its descendants)
147
+ - Gem dump
148
+
149
+ ## 0.1.12
150
+ - All internal errors went to Karafka::Errors namespace
151
+
152
+ ## 0.1.11
153
+ - Rescuing all the "before Sidekiq" processing so errors won't affect other incoming messages
154
+ - Fixed dying actors after connection error
155
+ - Added a new app status - "initializing"
156
+ - Karafka::Status model cleanup
157
+
158
+ ## 0.1.10
159
+ - Added possibility to specify redis namespace in configuration (failover to app name)
160
+ - Renamed redis_host to redis_url in configuration
161
+
162
+ ## 0.1.9
163
+ - Added worker logger
164
+
165
+ ## 0.1.8
166
+ - Droped local env suppot in favour of [Envlogic](https://github.com/karafka/envlogic) - no changes in API
167
+
168
+ ## 0.1.7
169
+ - Karafka option for Redis hosts (not localhost only)
170
+
171
+ ## 0.1.6
172
+ - Added better concurency by clusterization of listeners
173
+ - Added graceful shutdown
174
+ - Added concurency that allows to handle bigger applications with celluloid
175
+ - Karafka controllers no longer require group to be defined (created based on the topic and app name)
176
+ - Karafka controllers no longer require topic to be defined (created based on the controller name)
177
+ - Readme updates
178
+
179
+ ## 0.1.5
180
+ - Celluloid support for listeners
181
+ - Multi target logging (STDOUT and file)
182
+
183
+ ## 0.1.4
184
+ - Renamed events to messages to follow Apache Kafka naming convention
185
+
186
+ ## 0.1.3
187
+ - Karafka::App.logger moved to Karafka.logger
188
+ - README updates (Usage section was added)
189
+
190
+ ## 0.1.2
191
+ - Logging to log/environment.log
192
+ - Karafka::Runner
193
+
194
+ ## 0.1.1
195
+ - README updates
196
+ - Raketasks updates
197
+ - Rake installation task
198
+ - Changelog file added
199
+
200
+ ## 0.1.0
201
+ - Initial framework code
202
+
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ group :development, :test do
6
+ gem 'polishgeeks-dev-tools'
7
+ gem 'timecop'
8
+ end
@@ -0,0 +1,216 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ karafka (0.5.0)
5
+ activesupport (~> 5.0)
6
+ celluloid (~> 0.17)
7
+ dry-configurable (~> 0.1.7)
8
+ envlogic (~> 1.0)
9
+ rake (~> 11.3)
10
+ ruby-kafka (= 0.3.15)
11
+ sidekiq (~> 4.2)
12
+ thor (~> 0.19)
13
+ waterdrop (~> 0.3)
14
+ worker-glass (~> 0.2)
15
+
16
+ GEM
17
+ remote: https://rubygems.org/
18
+ specs:
19
+ activesupport (5.0.0.1)
20
+ concurrent-ruby (~> 1.0, >= 1.0.2)
21
+ i18n (~> 0.7)
22
+ minitest (~> 5.1)
23
+ tzinfo (~> 1.1)
24
+ addressable (2.4.0)
25
+ ast (2.3.0)
26
+ axiom-types (0.1.1)
27
+ descendants_tracker (~> 0.0.4)
28
+ ice_nine (~> 0.11.0)
29
+ thread_safe (~> 0.3, >= 0.3.1)
30
+ brakeman (3.3.3)
31
+ bundler-audit (0.5.0)
32
+ bundler (~> 1.2)
33
+ thor (~> 0.18)
34
+ celluloid (0.17.3)
35
+ celluloid-essentials
36
+ celluloid-extras
37
+ celluloid-fsm
38
+ celluloid-pool
39
+ celluloid-supervision
40
+ timers (>= 4.1.1)
41
+ celluloid-essentials (0.20.5)
42
+ timers (>= 4.1.1)
43
+ celluloid-extras (0.20.5)
44
+ timers (>= 4.1.1)
45
+ celluloid-fsm (0.20.5)
46
+ timers (>= 4.1.1)
47
+ celluloid-pool (0.20.5)
48
+ timers (>= 4.1.1)
49
+ celluloid-supervision (0.20.6)
50
+ timers (>= 4.1.1)
51
+ codeclimate-engine-rb (0.3.1)
52
+ virtus (~> 1.0)
53
+ coderay (1.1.1)
54
+ coercible (1.0.0)
55
+ descendants_tracker (~> 0.0.1)
56
+ colorize (0.8.1)
57
+ concurrent-ruby (1.0.2)
58
+ connection_pool (2.2.0)
59
+ descendants_tracker (0.0.4)
60
+ thread_safe (~> 0.3, >= 0.3.1)
61
+ diff-lcs (1.2.5)
62
+ docile (1.1.5)
63
+ dry-configurable (0.1.7)
64
+ concurrent-ruby (~> 1.0)
65
+ envlogic (1.0.3)
66
+ activesupport
67
+ equalizer (0.0.11)
68
+ erubis (2.7.0)
69
+ faker (1.6.6)
70
+ i18n (~> 0.5)
71
+ flay (2.8.0)
72
+ erubis (~> 2.7.0)
73
+ path_expander (~> 1.0)
74
+ ruby_parser (~> 3.0)
75
+ sexp_processor (~> 4.0)
76
+ flog (4.4.0)
77
+ path_expander (~> 1.0)
78
+ ruby_parser (~> 3.1, > 3.1.0)
79
+ sexp_processor (~> 4.4)
80
+ haml (4.0.7)
81
+ tilt
82
+ haml_lint (0.18.1)
83
+ haml (~> 4.0)
84
+ rake (>= 10, < 12)
85
+ rubocop (>= 0.36.0)
86
+ sysexits (~> 1.1)
87
+ hitimes (1.2.4)
88
+ i18n (0.7.0)
89
+ ice_nine (0.11.2)
90
+ json (2.0.2)
91
+ launchy (2.4.3)
92
+ addressable (~> 2.3)
93
+ method_source (0.8.2)
94
+ minitest (5.9.1)
95
+ null-logger (0.1.3)
96
+ parser (2.3.1.2)
97
+ ast (~> 2.2)
98
+ path_expander (1.0.0)
99
+ polishgeeks-dev-tools (1.3.2)
100
+ brakeman
101
+ bundler-audit
102
+ faker
103
+ haml_lint
104
+ pry
105
+ rspec
106
+ rubocop
107
+ rubocop-rspec
108
+ rubycritic
109
+ shoulda
110
+ simplecov
111
+ timecop
112
+ yard
113
+ powerpack (0.1.1)
114
+ pry (0.10.4)
115
+ coderay (~> 1.1.0)
116
+ method_source (~> 0.8.1)
117
+ slop (~> 3.4)
118
+ rack (2.0.1)
119
+ rack-protection (1.5.3)
120
+ rack
121
+ rainbow (2.1.0)
122
+ rake (11.3.0)
123
+ redis (3.3.1)
124
+ reek (4.1.0)
125
+ codeclimate-engine-rb (~> 0.3.1)
126
+ parser (~> 2.3.1, >= 2.3.1.2)
127
+ rainbow (~> 2.0)
128
+ rspec (3.5.0)
129
+ rspec-core (~> 3.5.0)
130
+ rspec-expectations (~> 3.5.0)
131
+ rspec-mocks (~> 3.5.0)
132
+ rspec-core (3.5.2)
133
+ rspec-support (~> 3.5.0)
134
+ rspec-expectations (3.5.0)
135
+ diff-lcs (>= 1.2.0, < 2.0)
136
+ rspec-support (~> 3.5.0)
137
+ rspec-mocks (3.5.0)
138
+ diff-lcs (>= 1.2.0, < 2.0)
139
+ rspec-support (~> 3.5.0)
140
+ rspec-support (3.5.0)
141
+ rubocop (0.42.0)
142
+ parser (>= 2.3.1.1, < 3.0)
143
+ powerpack (~> 0.1)
144
+ rainbow (>= 1.99.1, < 3.0)
145
+ ruby-progressbar (~> 1.7)
146
+ unicode-display_width (~> 1.0, >= 1.0.1)
147
+ rubocop-rspec (1.5.3)
148
+ rubocop (>= 0.42.0)
149
+ ruby-kafka (0.3.15)
150
+ ruby-progressbar (1.8.1)
151
+ ruby_parser (3.8.2)
152
+ sexp_processor (~> 4.1)
153
+ rubycritic (2.9.2)
154
+ colorize
155
+ flay (= 2.8.0)
156
+ flog (= 4.4.0)
157
+ launchy (= 2.4.3)
158
+ parser (= 2.3.1.2)
159
+ reek (= 4.1.0)
160
+ ruby_parser (~> 3.8)
161
+ virtus (~> 1.0)
162
+ sexp_processor (4.7.0)
163
+ shoulda (3.5.0)
164
+ shoulda-context (~> 1.0, >= 1.0.1)
165
+ shoulda-matchers (>= 1.4.1, < 3.0)
166
+ shoulda-context (1.2.1)
167
+ shoulda-matchers (2.8.0)
168
+ activesupport (>= 3.0.0)
169
+ sidekiq (4.2.2)
170
+ concurrent-ruby (~> 1.0)
171
+ connection_pool (~> 2.2, >= 2.2.0)
172
+ rack-protection (~> 1.5)
173
+ redis (~> 3.2, >= 3.2.1)
174
+ simplecov (0.12.0)
175
+ docile (~> 1.1.0)
176
+ json (>= 1.8, < 3)
177
+ simplecov-html (~> 0.10.0)
178
+ simplecov-html (0.10.0)
179
+ slop (3.6.0)
180
+ sysexits (1.2.0)
181
+ thor (0.19.1)
182
+ thread_safe (0.3.5)
183
+ tilt (2.0.5)
184
+ timecop (0.8.1)
185
+ timers (4.1.1)
186
+ hitimes
187
+ tzinfo (1.2.2)
188
+ thread_safe (~> 0.1)
189
+ unicode-display_width (1.1.0)
190
+ virtus (1.0.5)
191
+ axiom-types (~> 0.1)
192
+ coercible (~> 1.0)
193
+ descendants_tracker (~> 0.0, >= 0.0.3)
194
+ equalizer (~> 0.0, >= 0.0.9)
195
+ waterdrop (0.3.2)
196
+ bundler
197
+ connection_pool
198
+ null-logger
199
+ rake
200
+ ruby-kafka
201
+ worker-glass (0.2.2)
202
+ activesupport
203
+ null-logger
204
+ yard (0.9.5)
205
+
206
+ PLATFORMS
207
+ ruby
208
+
209
+ DEPENDENCIES
210
+ bundler (~> 1.2)
211
+ karafka!
212
+ polishgeeks-dev-tools
213
+ timecop
214
+
215
+ BUNDLED WITH
216
+ 1.12.5