hanami-events-cloud_pubsub 3.0.5 → 3.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3d44039a04524e3577341b8dce78ee4479b24b49972d9be9e5353ac8e1186b4c
4
- data.tar.gz: 84546314a907e147de4fbbcce02ec85e802c089e7ec2ed5b242e76bc53b63839
3
+ metadata.gz: c1f785cf3b473394906aadc0906661072aaa1e5721b1a24401fc3333df270e14
4
+ data.tar.gz: cc270e1411137b1b5bedfbb0b110d8d7dacbdf8f1d217e13b4ae30f9a17f4fa5
5
5
  SHA512:
6
- metadata.gz: 63555a20d775ee80b5841991b4a2e3176d63e55e447f318a3ffed81f115790ba7e9149c1a170c2fc53b5f03d26dcbd3de679b7c513074213495f193b2960d19f
7
- data.tar.gz: 3a21d8e97f431bca8b24cbffb2f09428cc743ff68f85225a0b71435f20196583e390e39c42bf6f1c9d425504ca9324b28310807bb631ddc8caed86a494a22960
6
+ metadata.gz: 178c1973c428c9bbbdb354526f42304d31a38158c6f4816c502c1772d04b3c99c4f60f9121c771c4307d8aeeaaf0f0e79ae5d6ad81c2feb7b9fe1df2c8b00f8e
7
+ data.tar.gz: 0d17cd8d26d82f4803d501ac876accaa43d4226a22308dbf99752e5cd7ccff66777cba192f3daba79a43360a21289390c2da34379bf09fa4e55f652ce6b64da3
@@ -0,0 +1,47 @@
1
+ ---
2
+ name: CI
3
+ on: [push, pull_request]
4
+ env:
5
+ CC_TEST_REPORTER_ID: "7ab310950456b913cd7e947f6671e3e9c16822f33bd8c572dadcc14593fe4fb5"
6
+ COVERAGE: "true"
7
+ jobs:
8
+ test:
9
+ strategy:
10
+ fail-fast: false
11
+ matrix:
12
+ ruby: ["2.5", "2.6", "2.7"]
13
+
14
+ runs-on: ubuntu-latest
15
+
16
+ steps:
17
+ - uses: actions/checkout@v2
18
+
19
+ - uses: ruby/setup-ruby@v1
20
+ with:
21
+ ruby-version: ${{ matrix.ruby }}
22
+ bundler-cache: true
23
+
24
+ - name: Set ENV for codeclimate (pull_request)
25
+ run: |
26
+ git fetch --no-tags --prune --depth=1 origin +refs/heads/$GITHUB_HEAD_REF:refs/remotes/origin/$GITHUB_HEAD_REF
27
+ echo "GIT_BRANCH=$GITHUB_HEAD_REF" >> $GITHUB_ENV
28
+ echo "GIT_COMMIT_SHA=$(git rev-parse origin/$GITHUB_HEAD_REF)" >> $GITHUB_ENV
29
+ if: github.event_name == 'pull_request'
30
+
31
+ - name: Set ENV for codeclimate (push)
32
+ run: |
33
+ echo "GIT_BRANCH=$GITHUB_REF" >> $GITHUB_ENV
34
+ echo "GIT_COMMIT_SHA=$GITHUB_SHA" >> $GITHUB_ENV
35
+ if: github.event_name == 'push'
36
+
37
+ - name: Prepare for test
38
+ run: |
39
+ curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
40
+ chmod +x ./cc-test-reporter
41
+ ./cc-test-reporter before-build
42
+
43
+ - name: Run tests
44
+ run: bundle exec rake
45
+
46
+ - name: Report coverage
47
+ run: ./cc-test-reporter after-build -t simplecov --exit-code $?
data/.gitignore CHANGED
@@ -11,3 +11,4 @@
11
11
  # rspec failure tracking
12
12
  .rspec_status
13
13
  coverage
14
+ Gemfile.lock
data/Gemfile CHANGED
@@ -7,9 +7,11 @@ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
7
7
  # Specify your gem's dependencies in hanami-events-cloud_pubsub.gemspec
8
8
  gemspec
9
9
 
10
+ RUBY_MAJOR = RUBY_VERSION[0].to_i
11
+
10
12
  gem 'hanami-events', github: 'hanami/events'
11
13
  gem 'pry'
14
+ gem 'request_id', '~> 0.4.3'
12
15
  gem 'rubocop'
13
16
  gem 'simplecov', require: false
14
-
15
- gem 'request_id', '~> 0.4.3'
17
+ gem 'webrick' if RUBY_MAJOR > 2
data/README.md CHANGED
@@ -119,12 +119,12 @@ end
119
119
  ```
120
120
 
121
121
 
122
- # Prometheus Integration
122
+ # Yabeda Prometheus Integration
123
123
 
124
- If you have the `prometheus-client` gem installed, a `/metrics` endpoint will
124
+ If you have the `yabeda-prometheus` gem installed, a `/metrics` endpoint will
125
125
  be available on the health check server which can be scraped.
126
126
 
127
- All you need to do to activate this is to make sure to `require 'prometheus/client'`.
127
+ All you need to do to activate this is to make sure to `require 'yabeda/prometheus'`.
128
128
 
129
129
  # Testing
130
130
 
@@ -31,8 +31,8 @@ Gem::Specification.new do |spec|
31
31
  spec.add_dependency 'hanami-events', '~> 0.2.0'
32
32
  spec.add_dependency 'rack'
33
33
 
34
- spec.add_development_dependency 'bundler', '~> 1.16'
35
- spec.add_development_dependency 'prometheus-client'
34
+ spec.add_development_dependency 'bundler', '~> 2.1'
36
35
  spec.add_development_dependency 'rake', '~> 13.0'
37
36
  spec.add_development_dependency 'rspec', '~> 3.0'
37
+ spec.add_development_dependency 'yabeda-prometheus-mmap'
38
38
  end
@@ -60,12 +60,13 @@ module Hanami
60
60
  Middleware::Logging.new
61
61
  )
62
62
 
63
- begin
64
- require 'prometheus/client'
65
- require 'hanami/events/cloud_pubsub/middleware/prometheus'
66
- middleware_stack.prepend(Middleware::Prometheus.new)
67
- rescue LoadError
68
- # ok
63
+ if defined?(Yabeda::Prometheus::Exporter)
64
+ begin
65
+ require 'hanami/events/cloud_pubsub/middleware/prometheus'
66
+ middleware_stack << Middleware::Prometheus.new
67
+ rescue LoadError
68
+ # ok
69
+ end
69
70
  end
70
71
 
71
72
  setting :middleware, middleware_stack
@@ -50,6 +50,7 @@ module Hanami
50
50
  end
51
51
 
52
52
  def setup_env(opts)
53
+ Process.setproctitle('hanami-events-cloud_pubsub')
53
54
  ENV['PUBSUB_EMULATOR_HOST'] ||= 'localhost:8085' if opts[:emulator]
54
55
  end
55
56
 
@@ -6,9 +6,13 @@ module Hanami
6
6
  # Errors
7
7
  module Errors
8
8
  class Error < StandardError; end
9
+
9
10
  class TopicNotFoundError < Error; end
11
+
10
12
  class SubscriptionNotFoundError < Error; end
13
+
11
14
  class SubscriptionTopicNameMismatch < Error; end
15
+
12
16
  class NoSubscriberError < Error; end
13
17
  end
14
18
  end
@@ -54,10 +54,8 @@ module Hanami
54
54
 
55
55
  Rack::Builder.new do |builder|
56
56
  builder.use Rack::Deflater
57
- if defined?(::Prometheus::Client)
58
- require 'prometheus/middleware/exporter'
59
- builder.use ::Prometheus::Middleware::Exporter
60
- end
57
+ builder.use Yabeda::Prometheus::Exporter if defined?(Yabeda::Prometheus::Exporter)
58
+
61
59
  builder.run health_endpoint_app
62
60
  end
63
61
  end
@@ -59,7 +59,8 @@ module Hanami
59
59
  end
60
60
 
61
61
  def shutdown
62
- subscriber.stop.wait!
62
+ stop
63
+ wait
63
64
  self
64
65
  end
65
66
 
@@ -68,8 +69,8 @@ module Hanami
68
69
  self
69
70
  end
70
71
 
71
- def wait
72
- subscriber.wait!
72
+ def wait(timeout = 60)
73
+ subscriber.wait!(timeout)
73
74
  self
74
75
  end
75
76
 
@@ -6,23 +6,31 @@ module Hanami
6
6
  module Middleware
7
7
  # Middleware used for logging useful information about an event
8
8
  class Prometheus
9
- attr_reader :events_counter
9
+ LONG_RUNNING_JOB_RUNTIME_BUCKETS = [
10
+ 0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10, # standard (from Prometheus)
11
+ 30, 60, 120, 300, 1800, 3600, 21_600 # Tasks may be very long-running
12
+ ].freeze
10
13
 
11
- def initialize
12
- require 'prometheus/client'
13
- prometheus = ::Prometheus::Client.registry
14
- @events_counter = prometheus.counter(
14
+ Yabeda.configure do
15
+ counter(
15
16
  :received_pubsub_events,
16
- docstring: 'A counter of received pubsub events',
17
- labels: %i[event_name subscription status]
17
+ tags: %i[event_name subscription status],
18
+ comment: 'A counter of received pubsub events'
18
19
  )
20
+
21
+ histogram :subscriber_runtime, comment: 'A histogram of the subscriber execution time.',
22
+ unit: :seconds,
23
+ per: :message,
24
+ tags: %i[event_name subscription status],
25
+ buckets: LONG_RUNNING_JOB_RUNTIME_BUCKETS
19
26
  end
20
27
 
21
28
  def call(msg, **opts)
29
+ start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
22
30
  status = :running
23
31
 
24
32
  begin
25
- ret = yield(**opts)
33
+ ret = yield(**opts) if block_given?
26
34
  status = :succeeded
27
35
  ret
28
36
  rescue StandardError
@@ -30,10 +38,20 @@ module Hanami
30
38
  raise
31
39
  end
32
40
  ensure
41
+ record_metrics(msg, status, start)
42
+ end
43
+
44
+ private
45
+
46
+ def record_metrics(msg, status, start)
47
+ elapsed = (Process.clock_gettime(Process::CLOCK_MONOTONIC) - start).round(3)
33
48
  sub = msg.subscription.subscriber.subscription_name
34
49
  event_name = msg.attributes['event_name']
35
50
  labels = { event_name: event_name, subscription: sub, status: status }
36
- events_counter.increment(labels: labels)
51
+ Yabeda.received_pubsub_events.increment(labels, by: 1)
52
+ Yabeda.subscriber_runtime.measure(labels, elapsed)
53
+ rescue StandardError
54
+ # ok
37
55
  end
38
56
  end
39
57
  end
@@ -9,7 +9,7 @@ module Hanami
9
9
  class Runner
10
10
  attr_reader :logger, :adapter
11
11
 
12
- def initialize(adapter:, logger:, sleep_time: 2)
12
+ def initialize(adapter:, logger:, sleep_time: 30)
13
13
  @logger = logger
14
14
  @adapter = adapter
15
15
  @sleep_time = sleep_time
@@ -40,9 +40,8 @@ module Hanami
40
40
  def gracefully_shutdown
41
41
  stop
42
42
  logger.info "Gracefully shutting down CloudPubsub runner: #{self}"
43
- sleep_for_a_bit
43
+ adapter.listeners.each { |l| l.wait(@sleep_time) }
44
44
  adapter.flush_messages
45
- adapter.listeners.each(&:wait)
46
45
  handle_on_shutdown
47
46
 
48
47
  self
@@ -102,10 +101,6 @@ module Hanami
102
101
  MSG
103
102
  end
104
103
 
105
- def sleep_for_a_bit
106
- sleep @sleep_time
107
- end
108
-
109
104
  def handle_on_shutdown
110
105
  return if CloudPubsub.on_shutdown_handlers.empty?
111
106
 
@@ -3,7 +3,7 @@
3
3
  module Hanami
4
4
  module Events
5
5
  module CloudPubsub
6
- VERSION = '3.0.5'
6
+ VERSION = '3.1.2'
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami-events-cloud_pubsub
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.5
4
+ version: 3.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ian Ker-Seymer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-12-08 00:00:00.000000000 Z
11
+ date: 2021-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-configurable
@@ -106,56 +106,56 @@ dependencies:
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: '1.16'
109
+ version: '2.1'
110
110
  type: :development
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
114
  - - "~>"
115
115
  - !ruby/object:Gem::Version
116
- version: '1.16'
116
+ version: '2.1'
117
117
  - !ruby/object:Gem::Dependency
118
- name: prometheus-client
118
+ name: rake
119
119
  requirement: !ruby/object:Gem::Requirement
120
120
  requirements:
121
- - - ">="
121
+ - - "~>"
122
122
  - !ruby/object:Gem::Version
123
- version: '0'
123
+ version: '13.0'
124
124
  type: :development
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
- - - ">="
128
+ - - "~>"
129
129
  - !ruby/object:Gem::Version
130
- version: '0'
130
+ version: '13.0'
131
131
  - !ruby/object:Gem::Dependency
132
- name: rake
132
+ name: rspec
133
133
  requirement: !ruby/object:Gem::Requirement
134
134
  requirements:
135
135
  - - "~>"
136
136
  - !ruby/object:Gem::Version
137
- version: '13.0'
137
+ version: '3.0'
138
138
  type: :development
139
139
  prerelease: false
140
140
  version_requirements: !ruby/object:Gem::Requirement
141
141
  requirements:
142
142
  - - "~>"
143
143
  - !ruby/object:Gem::Version
144
- version: '13.0'
144
+ version: '3.0'
145
145
  - !ruby/object:Gem::Dependency
146
- name: rspec
146
+ name: yabeda-prometheus-mmap
147
147
  requirement: !ruby/object:Gem::Requirement
148
148
  requirements:
149
- - - "~>"
149
+ - - ">="
150
150
  - !ruby/object:Gem::Version
151
- version: '3.0'
151
+ version: '0'
152
152
  type: :development
153
153
  prerelease: false
154
154
  version_requirements: !ruby/object:Gem::Requirement
155
155
  requirements:
156
- - - "~>"
156
+ - - ">="
157
157
  - !ruby/object:Gem::Version
158
- version: '3.0'
158
+ version: '0'
159
159
  description: Makes it easy to use Cloud Pub/Sub with Hanami
160
160
  email:
161
161
  - i.kerseymer@gmail.com
@@ -164,15 +164,14 @@ executables:
164
164
  extensions: []
165
165
  extra_rdoc_files: []
166
166
  files:
167
+ - ".github/workflows/ci.yml"
167
168
  - ".gitignore"
168
169
  - ".rspec"
169
170
  - ".rubocop.yml"
170
171
  - ".rubocop_todo.yml"
171
172
  - ".tool-versions"
172
- - ".travis.yml"
173
173
  - CODE_OF_CONDUCT.md
174
174
  - Gemfile
175
- - Gemfile.lock
176
175
  - LICENSE.txt
177
176
  - README.md
178
177
  - Rakefile
@@ -188,7 +187,6 @@ files:
188
187
  - lib/hanami/events/cloud_pubsub.rb
189
188
  - lib/hanami/events/cloud_pubsub/cli.rb
190
189
  - lib/hanami/events/cloud_pubsub/errors.rb
191
- - lib/hanami/events/cloud_pubsub/handler.rb
192
190
  - lib/hanami/events/cloud_pubsub/health_check_server.rb
193
191
  - lib/hanami/events/cloud_pubsub/integration.rb
194
192
  - lib/hanami/events/cloud_pubsub/listener.rb
@@ -223,7 +221,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
223
221
  - !ruby/object:Gem::Version
224
222
  version: '0'
225
223
  requirements: []
226
- rubygems_version: 3.0.3
224
+ rubygems_version: 3.1.2
227
225
  signing_key:
228
226
  specification_version: 4
229
227
  summary: Google Cloud Pub/Sub adapter for the hanami-events gem
data/.travis.yml DELETED
@@ -1,32 +0,0 @@
1
- ---
2
- sudo: required
3
- cache: bundler
4
- services:
5
- - docker
6
- language: ruby
7
- env:
8
- global:
9
- - CC_TEST_REPORTER_ID=7ab310950456b913cd7e947f6671e3e9c16822f33bd8c572dadcc14593fe4fb5
10
- - COVERAGE=true
11
- rvm:
12
- - 2.5
13
- - 2.6
14
- - 2.7
15
- before_install:
16
- - gem install bundler -v 1.16.1
17
- before_script:
18
- - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
19
- - chmod +x ./cc-test-reporter
20
- - ./cc-test-reporter before-build
21
- after_script:
22
- - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
23
- after_failure:
24
- - cat log/test.log
25
- deploy:
26
- provider: rubygems
27
- api_key:
28
- secure: q/B3zDEld8yzf1plU1vlnUIhqk7hhdrqdF8uRnSvikweM9MSeGk1x6lcZ4mxnwCVPuQEP49iI4sNtFHiJnP/Dv6f48A6ltpVlyST1vghhXlaIi9+r9pCJqB+vAOii7poq9lWyKWj15MMB5xE52Alz7WzUccOL55gmJ4q+Lia6+z04m+VdOuEY1Lyn38O9jtZJBBfnbjar+qKoHXCNSKuJfXrFBi+2LKvaxJFWS8NBvhnDILNkcooh01rp6/dtNuUMFTLd1i+zMMBYc1PyGP0+fNZE9MXUViy3soDfgXlPDyiwtTzASLCu6HXQg8g9SwBxMnkRQRxAKYzoAPoECcr9NxMR1riH6xaA2wkwW/rKcBP5JPfbRymRgSui4uhYSq7WJR5KNxpH2JYK+rW/EL9SB+7BT67g3ZNL6YGpL3R7/S5RLdHk+lJIY8uFRtzhYgchSa0tkBAm/qbll5d4B9wq7O1/McNwUQJKFs7CsVXL/arZUFgQVGdkQDOIeCITzeFy4iP3JASewOk+yCUyCbBCya2AicU7BOjYpghD0QNmyaunTPhCySdBe4mS3QkAspHGg10H5dggNS0IqHYmUTlmHiYg9Pf9TF85krQih/s3hr/+i13u+y8iBwA7n/mXTt5IQ+NQgXNSC0uJvSjHU2Rzr9yKZ1lLEXMB0y+S9OVeZA=
29
- gem: hanami-events-cloud_pubsub
30
- on:
31
- tags: true
32
- repo: adHawk/hanami-events-cloud_pubsub
data/Gemfile.lock DELETED
@@ -1,163 +0,0 @@
1
- GIT
2
- remote: https://github.com/hanami/events
3
- revision: 59a36d22b75ea045fa8994f4f660a02c0901f8b2
4
- specs:
5
- hanami-events (0.2.1)
6
- dry-container (~> 0.6)
7
-
8
- PATH
9
- remote: .
10
- specs:
11
- hanami-events-cloud_pubsub (3.0.5)
12
- dry-configurable (>= 0.8)
13
- gapic-common (>= 0.3.4)
14
- google-cloud-pubsub (>= 0.38.1, < 2.4)
15
- hanami-cli (~> 0.2)
16
- hanami-events (~> 0.2.0)
17
- rack
18
-
19
- GEM
20
- remote: https://rubygems.org/
21
- specs:
22
- addressable (2.7.0)
23
- public_suffix (>= 2.0.2, < 5.0)
24
- ast (2.4.1)
25
- coderay (1.1.3)
26
- concurrent-ruby (1.1.6)
27
- diff-lcs (1.4.4)
28
- docile (1.3.2)
29
- dry-configurable (0.11.6)
30
- concurrent-ruby (~> 1.0)
31
- dry-core (~> 0.4, >= 0.4.7)
32
- dry-equalizer (~> 0.2)
33
- dry-container (0.7.2)
34
- concurrent-ruby (~> 1.0)
35
- dry-configurable (~> 0.1, >= 0.1.3)
36
- dry-core (0.4.9)
37
- concurrent-ruby (~> 1.0)
38
- dry-equalizer (0.3.0)
39
- faraday (1.1.0)
40
- multipart-post (>= 1.2, < 3)
41
- ruby2_keywords
42
- gapic-common (0.3.4)
43
- google-protobuf (~> 3.12, >= 3.12.2)
44
- googleapis-common-protos (>= 1.3.9, < 2.0)
45
- googleapis-common-protos-types (>= 1.0.4, < 2.0)
46
- googleauth (~> 0.9)
47
- grpc (~> 1.25)
48
- google-cloud-core (1.5.0)
49
- google-cloud-env (~> 1.0)
50
- google-cloud-errors (~> 1.0)
51
- google-cloud-env (1.4.0)
52
- faraday (>= 0.17.3, < 2.0)
53
- google-cloud-errors (1.0.1)
54
- google-cloud-pubsub (2.3.0)
55
- concurrent-ruby (~> 1.1)
56
- google-cloud-core (~> 1.5)
57
- google-cloud-pubsub-v1 (~> 0.0)
58
- google-cloud-pubsub-v1 (0.1.2)
59
- gapic-common (~> 0.3)
60
- google-cloud-errors (~> 1.0)
61
- grpc-google-iam-v1 (>= 0.6.10, < 2.0)
62
- google-protobuf (3.14.0)
63
- googleapis-common-protos (1.3.10)
64
- google-protobuf (~> 3.11)
65
- googleapis-common-protos-types (>= 1.0.5, < 2.0)
66
- grpc (~> 1.27)
67
- googleapis-common-protos-types (1.0.5)
68
- google-protobuf (~> 3.11)
69
- googleauth (0.14.0)
70
- faraday (>= 0.17.3, < 2.0)
71
- jwt (>= 1.4, < 3.0)
72
- memoist (~> 0.16)
73
- multi_json (~> 1.11)
74
- os (>= 0.9, < 2.0)
75
- signet (~> 0.14)
76
- grpc (1.34.0)
77
- google-protobuf (~> 3.13)
78
- googleapis-common-protos-types (~> 1.0)
79
- grpc-google-iam-v1 (0.6.10)
80
- google-protobuf (~> 3.11)
81
- googleapis-common-protos (>= 1.3.10, < 2.0)
82
- grpc (~> 1.27)
83
- hanami-cli (0.3.1)
84
- concurrent-ruby (~> 1.0)
85
- hanami-utils (~> 1.3)
86
- hanami-utils (1.3.6)
87
- concurrent-ruby (~> 1.0)
88
- transproc (~> 1.0)
89
- jwt (2.2.2)
90
- memoist (0.16.2)
91
- method_source (1.0.0)
92
- multi_json (1.15.0)
93
- multipart-post (2.1.1)
94
- os (1.1.1)
95
- parallel (1.19.2)
96
- parser (2.7.1.4)
97
- ast (~> 2.4.1)
98
- prometheus-client (2.1.0)
99
- pry (0.13.1)
100
- coderay (~> 1.1)
101
- method_source (~> 1.0)
102
- public_suffix (4.0.6)
103
- rack (2.2.3)
104
- rainbow (3.0.0)
105
- rake (13.0.1)
106
- regexp_parser (1.7.1)
107
- request_id (0.4.3)
108
- rexml (3.2.4)
109
- rspec (3.9.0)
110
- rspec-core (~> 3.9.0)
111
- rspec-expectations (~> 3.9.0)
112
- rspec-mocks (~> 3.9.0)
113
- rspec-core (3.9.2)
114
- rspec-support (~> 3.9.3)
115
- rspec-expectations (3.9.2)
116
- diff-lcs (>= 1.2.0, < 2.0)
117
- rspec-support (~> 3.9.0)
118
- rspec-mocks (3.9.1)
119
- diff-lcs (>= 1.2.0, < 2.0)
120
- rspec-support (~> 3.9.0)
121
- rspec-support (3.9.3)
122
- rubocop (0.89.0)
123
- parallel (~> 1.10)
124
- parser (>= 2.7.1.1)
125
- rainbow (>= 2.2.2, < 4.0)
126
- regexp_parser (>= 1.7)
127
- rexml
128
- rubocop-ast (>= 0.1.0, < 1.0)
129
- ruby-progressbar (~> 1.7)
130
- unicode-display_width (>= 1.4.0, < 2.0)
131
- rubocop-ast (0.3.0)
132
- parser (>= 2.7.1.4)
133
- ruby-progressbar (1.10.1)
134
- ruby2_keywords (0.0.2)
135
- signet (0.14.0)
136
- addressable (~> 2.3)
137
- faraday (>= 0.17.3, < 2.0)
138
- jwt (>= 1.5, < 3.0)
139
- multi_json (~> 1.10)
140
- simplecov (0.18.5)
141
- docile (~> 1.1)
142
- simplecov-html (~> 0.11)
143
- simplecov-html (0.12.2)
144
- transproc (1.1.1)
145
- unicode-display_width (1.7.0)
146
-
147
- PLATFORMS
148
- ruby
149
-
150
- DEPENDENCIES
151
- bundler (~> 1.16)
152
- hanami-events!
153
- hanami-events-cloud_pubsub!
154
- prometheus-client
155
- pry
156
- rake (~> 13.0)
157
- request_id (~> 0.4.3)
158
- rspec (~> 3.0)
159
- rubocop
160
- simplecov
161
-
162
- BUNDLED WITH
163
- 1.17.3
File without changes