hanami-events-cloud_pubsub 3.0.6 → 3.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0c771a179c93a8264e30f783a31b3c623c301206c587f9fb76f3dfcff9834731
4
- data.tar.gz: 6b4b4ec5bbef668fc5fdf3d46a336a1646a440eeaeb68825803211dc6797ac34
3
+ metadata.gz: 9e0fdfeb61f064d5c8f1a85649abd16a1613d74989d176cf5b27d887aa907f4a
4
+ data.tar.gz: fec712a0d1ec1bbe6993698c1665a4c7c9fe534433b50666f99b14cfa08a1a81
5
5
  SHA512:
6
- metadata.gz: dd9fdb68cd1a9bfffadd5a55e3656c39e884dfa99f57324dba5b2609309c3077e8a83ed6d9bfe169dd5cf4ead82ab1fbe38c057ac889ae099f7f54aad8304aa0
7
- data.tar.gz: 339896e5b18a3396f6988c19b846f6995d1fc3368b5430ff25c5ef5a759c9beac1609715aa2221ce03ea7470c3f769a4b8035a6fdb1198dd420fb4d619ba432f
6
+ metadata.gz: c2cb0dd0af7b23c989ba9ac184956b16a31b8aa7c118c417957af2359539fbb41430a6ae5d8589fad9964f8898c70a2622e7341f93f40c1c8e473ffd912930bd
7
+ data.tar.gz: 783d050027e2536e1f25bc82b1b5998f70da9f11fea84cd9d6645b440d2e05d69fa5cd27d51a34681e576463b6e05333d5dc6cd97c7456b92611a8b8708c200d
@@ -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
@@ -7,7 +7,6 @@ require 'hanami/events/cloud_pubsub/middleware/stack'
7
7
  require 'hanami/events/cloud_pubsub/middleware/logging'
8
8
  require 'hanami/events/cloud_pubsub/runner'
9
9
  require 'hanami/events/cloud_pubsub/errors'
10
- require 'google/cloud/pubsub'
11
10
  require 'dry-configurable'
12
11
 
13
12
  module Hanami
@@ -60,12 +59,13 @@ module Hanami
60
59
  Middleware::Logging.new
61
60
  )
62
61
 
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
62
+ if defined?(Yabeda::Prometheus::Exporter)
63
+ begin
64
+ require 'hanami/events/cloud_pubsub/middleware/prometheus'
65
+ middleware_stack << Middleware::Prometheus.new
66
+ rescue LoadError
67
+ # ok
68
+ end
69
69
  end
70
70
 
71
71
  setting :middleware, middleware_stack
@@ -96,6 +96,7 @@ module Hanami
96
96
  end
97
97
 
98
98
  def self.finalize_settings!
99
+ require 'google/cloud/pubsub'
99
100
  conf_hash = config.pubsub
100
101
  conf_hash.each { |key, val| Google::Cloud::Pubsub.configure[key] = val }
101
102
  end
@@ -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
@@ -33,6 +33,8 @@ module Hanami
33
33
  conf.cloud_pubsub.each { |blk| blk.call(config) }
34
34
  end
35
35
 
36
+ require 'google/cloud/pubsub'
37
+
36
38
  ::Hanami::Events.initialize(
37
39
  :cloud_pubsub,
38
40
  pubsub: Google::Cloud::Pubsub.new,
@@ -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
@@ -3,7 +3,7 @@
3
3
  module Hanami
4
4
  module Events
5
5
  module CloudPubsub
6
- VERSION = '3.0.6'
6
+ VERSION = '3.1.3'
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.6
4
+ version: 3.1.3
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-22 00:00:00.000000000 Z
11
+ date: 2021-03-02 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.6)
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