zaikio-loom 0.3.0 → 1.2.0

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: 83b8f848c42ce893f17ea2fcc965f607cbb2582de13d2cb6a5082937f4035d66
4
- data.tar.gz: dcc33304f16d8e5b223ddd62d4edb339fc087cfb8f25b61a464a76e2f2a03a0c
3
+ metadata.gz: a25fa4c17a5eba51db6793cd20d875b6cedc279e98cd9dd69efbe5839c992446
4
+ data.tar.gz: dbc90fefb4b417af5412cfa788e4aea1ea8c48f52f272b5e31ae86271bbcda9e
5
5
  SHA512:
6
- metadata.gz: 3f123c3dd9b2356b118593d3de86f78b7ef9307c0118b174a84b44b77acff372660e39b9bbe218c19ca19f3602c98e0d9fc6159d54a50314d7688a2d12322ea0
7
- data.tar.gz: c612160d9ff55ebd84d2bc75d3d42549dfe6b0510f6dc57f43706cc4f5f2a3750fe7bb210a90fe898a36a15bcbf85076ac12dad73723d6483341dbca8be8934f
6
+ metadata.gz: 94458de7ec87e5ecec1f1171a1c2df1a679fd183926fd5059546f637e4e72b17bf2732ae543cbc9f51759c471d39e0cf1a2fc42d02dbee7e8d881bf7b46cd8f9
7
+ data.tar.gz: b2a7ca51992630ea9088872ac8d786004432b6a6c610213e6f352a288b9b91337177e800d9a25200021d06a82a3d0d592496919e162f561192e793cdb8e373ba
data/.circleci/config.yml CHANGED
@@ -2,7 +2,7 @@ version: 2
2
2
  jobs:
3
3
  build:
4
4
  docker:
5
- - image: circleci/ruby:2.6.5
5
+ - image: circleci/ruby:3.0.0
6
6
  - image: circleci/redis:3.2-alpine
7
7
 
8
8
  working_directory: ~/repo
@@ -0,0 +1,11 @@
1
+ version: 2
2
+
3
+ updates:
4
+ - package-ecosystem: bundler
5
+ directory: "/"
6
+ reviewers:
7
+ - jalyna
8
+ schedule:
9
+ interval: daily
10
+ time: "04:00"
11
+ open-pull-requests-limit: 10
data/.gitignore CHANGED
@@ -8,5 +8,6 @@
8
8
  /tmp/
9
9
  .gem
10
10
  .DS_Store
11
+ Gemfile.lock
11
12
  test/dummy/tmp
12
13
  test/dummy/log
data/.rubocop.yml CHANGED
@@ -1,11 +1,13 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.6
2
+ TargetRubyVersion: 2.7
3
3
  Exclude:
4
4
  - test/**/*.rb
5
5
  NewCops: enable
6
6
 
7
7
  require:
8
+ - rubocop-minitest
8
9
  - rubocop-performance
10
+ - rubocop-rake
9
11
 
10
12
  Layout/HashAlignment:
11
13
  EnforcedColonStyle: table
data/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # Zaikio Loom Ruby Gem Changelog
2
2
 
3
+ ## [Unreleased]
4
+
5
+ ## 1.2.0 - 2021-10-18
6
+
7
+ - **BREAKING** Fixed: Throw new `Zaikio::Loom::Error` when posting events fails (e.g. 422)
8
+
9
+ ## 1.1.1 - 2021-03-25
10
+
11
+ * Replace dependency on `rails` with a more specific dependency on `railties` and friends
12
+
13
+ ## 1.1.0 - 2021-01-05
14
+
15
+ - Ensure compability with Ruby 3.0 and Ruby on Rails 6.1
16
+
17
+ ## 1.0.1 - 2020-06-03
18
+
19
+ - Fix a bug in the event serializer
20
+
21
+ ## 1.0.0 - 2020-06-03
22
+
23
+ - Add multi client support
24
+ - Confguration format changed
25
+
3
26
  ## 0.3.0 - 2020-04-22
4
27
 
5
28
  - Do not send events to Loom in development or staging environment
data/Gemfile CHANGED
@@ -2,3 +2,8 @@ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in zaikio-loom.gemspec
4
4
  gemspec
5
+
6
+ gem "actionpack"
7
+ gem "actionview"
8
+ gem "activemodel"
9
+ gem "sprockets-rails"
data/README.md CHANGED
@@ -35,17 +35,35 @@ Zaikio::Loom.configure do |config|
35
35
 
36
36
  # The name of your application like it is named in the directory of the
37
37
  # choosen enviroment.
38
- config.app_name = 'my_application'
39
-
40
- # Your application's event password for the choosen environment
41
- # Do not add this password into version control.
42
- config.password = ENV.fetch('ZAIKIO_LOOM_PASSWORD')
38
+ config.application 'my_application' do |app|
39
+ # Your application's event password for the choosen environment
40
+ # Do not add this password into version control.
41
+ app.password = ENV.fetch('ZAIKIO_LOOM_PASSWORD')
42
+ end
43
43
 
44
44
  # The version of the event's payload format and structure
45
45
  config.version = '1.0'
46
46
  end
47
47
  ```
48
48
 
49
+ #### Multiple Clients
50
+
51
+ ```ruby
52
+ # in config/initializers/zaikio_loom.rb
53
+ Zaikio::Loom.configure do |config|
54
+ config.environment = :sandbox
55
+ config.version = '1.0'
56
+
57
+ config.application 'my_application' do |app|
58
+ app.password = ENV.fetch('ZAIKIO_LOOM_PASSWORD')
59
+ end
60
+
61
+ config.application 'my_other_app' do |app|
62
+ app.password = ENV.fetch('ZAIKIO_LOOM_OTHER_APP_PASSWORD')
63
+ end
64
+ end
65
+ ```
66
+
49
67
  ### Usage
50
68
 
51
69
  Firing events to Zaikio Loom:
@@ -60,6 +78,16 @@ Zaikio::Loom.fire_event(
60
78
 
61
79
  This example would publish an event (in the background) to Zaikio Loom with a random UUID and the current timestamp.
62
80
 
81
+ If you want to publish the event for a specific client, you have to add it as part of the event name:
82
+
83
+ ```rb
84
+ Zaikio::Loom.fire_event(
85
+ 'my_other_app.event_name',
86
+ subject: 'Org/3a242896-fa57-41ba-997e-8c212d7157f3',
87
+ payload: { foo: 'bar', baz: [1, 2, 3] }
88
+ )
89
+ ```
90
+
63
91
  If you need more control over the published event, for example:
64
92
 
65
93
  - to provide a specific unique UUID or timestamp in the past or
@@ -108,7 +136,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
108
136
 
109
137
  ## Contributing
110
138
 
111
- Bug reports and pull requests are welcome on GitHub at https://github.com/crispymtn/zai-loom-ruby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
139
+ Bug reports and pull requests are welcome on GitHub at https://github.com/zaikio/zaikio-loom-ruby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
112
140
 
113
141
  ## License
114
142
 
@@ -116,4 +144,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
116
144
 
117
145
  ## Code of Conduct
118
146
 
119
- Everyone interacting in the Zaikio Loom Ruby gem project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/crispymtn/zai-loom-ruby/blob/master/CODE_OF_CONDUCT.md).
147
+ Everyone interacting in the Zaikio Loom Ruby gem project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/zaikio/zaikio-loom-ruby/blob/master/CODE_OF_CONDUCT.md).
@@ -0,0 +1,11 @@
1
+ module Zaikio
2
+ module Loom
3
+ class AppConfiguration
4
+ attr_accessor :app_name, :password
5
+
6
+ def initialize(app_name)
7
+ @app_name = app_name
8
+ end
9
+ end
10
+ end
11
+ end
@@ -9,22 +9,28 @@ module Zaikio
9
9
  production: "https://loom.zaikio.com"
10
10
  }.freeze
11
11
 
12
- attr_accessor :app_name, :password, :version
13
- attr_reader :environment, :host
12
+ attr_accessor :version
13
+ attr_reader :environment, :host, :apps
14
14
  attr_writer :logger
15
15
 
16
16
  def initialize
17
17
  @environment = :sandbox
18
+ @apps = {}
18
19
  end
19
20
 
20
21
  def logger
21
- @logger ||= Logger.new(STDOUT)
22
+ @logger ||= Logger.new($stdout)
22
23
  end
23
24
 
24
25
  def environment=(env)
25
26
  @environment = env.to_sym
26
27
  @host = HOSTS[environment]
27
28
  end
29
+
30
+ def application(name)
31
+ @apps[name.to_s] = AppConfiguration.new(name.to_s)
32
+ yield(@apps[name.to_s])
33
+ end
28
34
  end
29
35
  end
30
36
  end
@@ -0,0 +1,14 @@
1
+ module Zaikio
2
+ module Loom
3
+ class Error < StandardError
4
+ attr_reader :body, :status_code
5
+
6
+ def initialize(message = nil, body:, status_code:)
7
+ super(message)
8
+
9
+ @body = body
10
+ @status_code = status_code
11
+ end
12
+ end
13
+ end
14
+ end
@@ -7,8 +7,8 @@ module Zaikio
7
7
  class Event
8
8
  attr_reader :id, :status_code, :response_body
9
9
 
10
- def initialize(name, subject:, id: nil, link: nil, payload: nil, receiver: nil, timestamp: nil, version: nil) # rubocop:disable Metrics/ParameterLists
11
- @event_name = "#{configuration.app_name}.#{name}"
10
+ def initialize(name, subject:, id: nil, link: nil, payload: nil, receiver: nil, timestamp: nil, version: nil) # rubocop:disable Metrics/AbcSize, Metrics/ParameterLists
11
+ @event_name = name.to_s.count(".").zero? ? "#{configuration.apps.values.first.app_name}.#{name}" : name.to_s
12
12
  @id = id || SecureRandom.uuid
13
13
  @link = link
14
14
  @payload = payload
@@ -17,7 +17,7 @@ module Zaikio
17
17
  @timestamp = timestamp
18
18
  @version = version || configuration.version
19
19
 
20
- return if configuration.password
20
+ return if app_password
21
21
 
22
22
  configuration.logger.error("Zaikio::Loom is disabled – event password is missing")
23
23
  end
@@ -25,7 +25,7 @@ module Zaikio
25
25
  def fire # rubocop:disable Metrics/AbcSize
26
26
  log_event
27
27
 
28
- return false unless configuration.password && configuration.host
28
+ return false unless app_password && configuration.host
29
29
 
30
30
  uri = URI("#{configuration.host}/api/v1/events")
31
31
 
@@ -37,6 +37,14 @@ module Zaikio
37
37
  @status_code = response.code.to_i
38
38
  @response_body = response.body
39
39
 
40
+ unless response.is_a?(Net::HTTPSuccess)
41
+ raise Zaikio::Loom::Error.new(
42
+ "Sending event failed (#{@status_code}): #{@response_body}",
43
+ body: @response_body,
44
+ status_code: @status_code
45
+ )
46
+ end
47
+
40
48
  response.is_a?(Net::HTTPSuccess)
41
49
  end
42
50
 
@@ -57,9 +65,17 @@ module Zaikio
57
65
 
58
66
  private
59
67
 
68
+ def app_name
69
+ @event_name.split(".").first
70
+ end
71
+
72
+ def app_password
73
+ configuration.apps[app_name].password
74
+ end
75
+
60
76
  def build_request(uri)
61
77
  Net::HTTP::Post.new(uri, "User-Agent" => "zaikio-loom:#{Zaikio::Loom::VERSION}").tap do |request|
62
- request.basic_auth(configuration.app_name, configuration.password)
78
+ request.basic_auth(app_name, app_password)
63
79
  request.body = event_as_json
64
80
  request.content_type = "application/json"
65
81
  end
@@ -10,7 +10,7 @@ module Zaikio
10
10
  end
11
11
 
12
12
  def deserialize(hash)
13
- name = hash.delete("name").split(".").last
13
+ name = hash.delete("name")
14
14
  timestamp = DateTime.parse(hash.delete("timestamp"))
15
15
  hash.delete("_aj_serialized")
16
16
  Event.new(name, **hash.symbolize_keys.merge(timestamp: timestamp))
@@ -1,5 +1,5 @@
1
1
  module Zaikio
2
2
  module Loom
3
- VERSION = "0.3.0".freeze
3
+ VERSION = "1.2.0".freeze
4
4
  end
5
5
  end
data/lib/zaikio/loom.rb CHANGED
@@ -1,4 +1,6 @@
1
+ require "zaikio/loom/app_configuration"
1
2
  require "zaikio/loom/configuration"
3
+ require "zaikio/loom/error"
2
4
  require "zaikio/loom/event"
3
5
  require "zaikio/loom/event_serializer"
4
6
  require "zaikio/loom/railtie"
data/zaikio-loom.gemspec CHANGED
@@ -8,11 +8,11 @@ Gem::Specification.new do |spec|
8
8
 
9
9
  spec.authors = ["crispymtn", "Martin Spickermann"]
10
10
  spec.email = ["op@crispymtn.com", "spickermann@gmail.com"]
11
- spec.homepage = "https://github.com/crispymtn/zai-loom-ruby"
11
+ spec.homepage = "https://github.com/zaikio/zaikio-loom-ruby"
12
12
  spec.license = "MIT"
13
13
  spec.summary = "The Zaikio Loom Ruby Gem simplifies publishing events on the Zaikio Loom event system."
14
14
 
15
- spec.metadata["changelog_uri"] = "https://github.com/crispymtn/zai-loom-ruby/blob/master/CHANGELOG.md"
15
+ spec.metadata["changelog_uri"] = "https://github.com/zaikio/zaikio-loom-ruby/blob/master/CHANGELOG.md"
16
16
  spec.metadata["homepage_uri"] = spec.homepage
17
17
  spec.metadata["source_code_uri"] = spec.homepage
18
18
 
@@ -23,14 +23,19 @@ Gem::Specification.new do |spec|
23
23
  end
24
24
  spec.require_paths = ["lib"]
25
25
 
26
+ spec.add_dependency "activejob"
27
+ spec.add_dependency "nokogiri", ">= 1.11.0"
28
+ spec.add_dependency "railties", "~> 6.0", ">= 6.0.2.3"
26
29
  spec.add_runtime_dependency "oj"
27
- spec.add_dependency "rails", "~> 6.0", ">= 6.0.2.2"
30
+ spec.required_ruby_version = ">= 2.7.1"
28
31
 
29
32
  spec.add_development_dependency "bundler"
30
33
  spec.add_development_dependency "minitest"
31
34
  spec.add_development_dependency "mocha"
32
35
  spec.add_development_dependency "rake"
33
36
  spec.add_development_dependency "rubocop"
37
+ spec.add_development_dependency "rubocop-minitest"
34
38
  spec.add_development_dependency "rubocop-performance"
39
+ spec.add_development_dependency "rubocop-rake"
35
40
  spec.add_development_dependency "webmock"
36
41
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zaikio-loom
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - crispymtn
@@ -9,10 +9,10 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-04-22 00:00:00.000000000 Z
12
+ date: 2021-10-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: oj
15
+ name: activejob
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - ">="
@@ -26,7 +26,21 @@ dependencies:
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
- name: rails
29
+ name: nokogiri
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 1.11.0
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: 1.11.0
42
+ - !ruby/object:Gem::Dependency
43
+ name: railties
30
44
  requirement: !ruby/object:Gem::Requirement
31
45
  requirements:
32
46
  - - "~>"
@@ -34,7 +48,7 @@ dependencies:
34
48
  version: '6.0'
35
49
  - - ">="
36
50
  - !ruby/object:Gem::Version
37
- version: 6.0.2.2
51
+ version: 6.0.2.3
38
52
  type: :runtime
39
53
  prerelease: false
40
54
  version_requirements: !ruby/object:Gem::Requirement
@@ -44,7 +58,21 @@ dependencies:
44
58
  version: '6.0'
45
59
  - - ">="
46
60
  - !ruby/object:Gem::Version
47
- version: 6.0.2.2
61
+ version: 6.0.2.3
62
+ - !ruby/object:Gem::Dependency
63
+ name: oj
64
+ requirement: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ type: :runtime
70
+ prerelease: false
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
48
76
  - !ruby/object:Gem::Dependency
49
77
  name: bundler
50
78
  requirement: !ruby/object:Gem::Requirement
@@ -115,6 +143,20 @@ dependencies:
115
143
  - - ">="
116
144
  - !ruby/object:Gem::Version
117
145
  version: '0'
146
+ - !ruby/object:Gem::Dependency
147
+ name: rubocop-minitest
148
+ requirement: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ type: :development
154
+ prerelease: false
155
+ version_requirements: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
118
160
  - !ruby/object:Gem::Dependency
119
161
  name: rubocop-performance
120
162
  requirement: !ruby/object:Gem::Requirement
@@ -129,6 +171,20 @@ dependencies:
129
171
  - - ">="
130
172
  - !ruby/object:Gem::Version
131
173
  version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: rubocop-rake
176
+ requirement: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ type: :development
182
+ prerelease: false
183
+ version_requirements: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
132
188
  - !ruby/object:Gem::Dependency
133
189
  name: webmock
134
190
  requirement: !ruby/object:Gem::Requirement
@@ -152,12 +208,12 @@ extensions: []
152
208
  extra_rdoc_files: []
153
209
  files:
154
210
  - ".circleci/config.yml"
211
+ - ".github/dependabot.yml"
155
212
  - ".gitignore"
156
213
  - ".rubocop.yml"
157
214
  - CHANGELOG.md
158
215
  - CODE_OF_CONDUCT.md
159
216
  - Gemfile
160
- - Gemfile.lock
161
217
  - LICENSE.txt
162
218
  - README.md
163
219
  - Rakefile
@@ -166,20 +222,22 @@ files:
166
222
  - bin/test
167
223
  - config/initializers/register_zaikio_loom_event_serializer.rb
168
224
  - lib/zaikio/loom.rb
225
+ - lib/zaikio/loom/app_configuration.rb
169
226
  - lib/zaikio/loom/configuration.rb
170
227
  - lib/zaikio/loom/engine.rb
228
+ - lib/zaikio/loom/error.rb
171
229
  - lib/zaikio/loom/event.rb
172
230
  - lib/zaikio/loom/event_serializer.rb
173
231
  - lib/zaikio/loom/railtie.rb
174
232
  - lib/zaikio/loom/version.rb
175
233
  - zaikio-loom.gemspec
176
- homepage: https://github.com/crispymtn/zai-loom-ruby
234
+ homepage: https://github.com/zaikio/zaikio-loom-ruby
177
235
  licenses:
178
236
  - MIT
179
237
  metadata:
180
- changelog_uri: https://github.com/crispymtn/zai-loom-ruby/blob/master/CHANGELOG.md
181
- homepage_uri: https://github.com/crispymtn/zai-loom-ruby
182
- source_code_uri: https://github.com/crispymtn/zai-loom-ruby
238
+ changelog_uri: https://github.com/zaikio/zaikio-loom-ruby/blob/master/CHANGELOG.md
239
+ homepage_uri: https://github.com/zaikio/zaikio-loom-ruby
240
+ source_code_uri: https://github.com/zaikio/zaikio-loom-ruby
183
241
  post_install_message:
184
242
  rdoc_options: []
185
243
  require_paths:
@@ -188,14 +246,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
188
246
  requirements:
189
247
  - - ">="
190
248
  - !ruby/object:Gem::Version
191
- version: '0'
249
+ version: 2.7.1
192
250
  required_rubygems_version: !ruby/object:Gem::Requirement
193
251
  requirements:
194
252
  - - ">="
195
253
  - !ruby/object:Gem::Version
196
254
  version: '0'
197
255
  requirements: []
198
- rubygems_version: 3.1.2
256
+ rubygems_version: 3.1.4
199
257
  signing_key:
200
258
  specification_version: 4
201
259
  summary: The Zaikio Loom Ruby Gem simplifies publishing events on the Zaikio Loom
data/Gemfile.lock DELETED
@@ -1,181 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- zaikio-loom (0.3.0)
5
- oj
6
- rails (~> 6.0, >= 6.0.2.2)
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- actioncable (6.0.2.2)
12
- actionpack (= 6.0.2.2)
13
- nio4r (~> 2.0)
14
- websocket-driver (>= 0.6.1)
15
- actionmailbox (6.0.2.2)
16
- actionpack (= 6.0.2.2)
17
- activejob (= 6.0.2.2)
18
- activerecord (= 6.0.2.2)
19
- activestorage (= 6.0.2.2)
20
- activesupport (= 6.0.2.2)
21
- mail (>= 2.7.1)
22
- actionmailer (6.0.2.2)
23
- actionpack (= 6.0.2.2)
24
- actionview (= 6.0.2.2)
25
- activejob (= 6.0.2.2)
26
- mail (~> 2.5, >= 2.5.4)
27
- rails-dom-testing (~> 2.0)
28
- actionpack (6.0.2.2)
29
- actionview (= 6.0.2.2)
30
- activesupport (= 6.0.2.2)
31
- rack (~> 2.0, >= 2.0.8)
32
- rack-test (>= 0.6.3)
33
- rails-dom-testing (~> 2.0)
34
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
35
- actiontext (6.0.2.2)
36
- actionpack (= 6.0.2.2)
37
- activerecord (= 6.0.2.2)
38
- activestorage (= 6.0.2.2)
39
- activesupport (= 6.0.2.2)
40
- nokogiri (>= 1.8.5)
41
- actionview (6.0.2.2)
42
- activesupport (= 6.0.2.2)
43
- builder (~> 3.1)
44
- erubi (~> 1.4)
45
- rails-dom-testing (~> 2.0)
46
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
47
- activejob (6.0.2.2)
48
- activesupport (= 6.0.2.2)
49
- globalid (>= 0.3.6)
50
- activemodel (6.0.2.2)
51
- activesupport (= 6.0.2.2)
52
- activerecord (6.0.2.2)
53
- activemodel (= 6.0.2.2)
54
- activesupport (= 6.0.2.2)
55
- activestorage (6.0.2.2)
56
- actionpack (= 6.0.2.2)
57
- activejob (= 6.0.2.2)
58
- activerecord (= 6.0.2.2)
59
- marcel (~> 0.3.1)
60
- activesupport (6.0.2.2)
61
- concurrent-ruby (~> 1.0, >= 1.0.2)
62
- i18n (>= 0.7, < 2)
63
- minitest (~> 5.1)
64
- tzinfo (~> 1.1)
65
- zeitwerk (~> 2.2)
66
- addressable (2.7.0)
67
- public_suffix (>= 2.0.2, < 5.0)
68
- ast (2.4.0)
69
- builder (3.2.4)
70
- concurrent-ruby (1.1.6)
71
- crack (0.4.3)
72
- safe_yaml (~> 1.0.0)
73
- crass (1.0.6)
74
- erubi (1.9.0)
75
- globalid (0.4.2)
76
- activesupport (>= 4.2.0)
77
- hashdiff (1.0.1)
78
- i18n (1.8.2)
79
- concurrent-ruby (~> 1.0)
80
- jaro_winkler (1.5.4)
81
- loofah (2.5.0)
82
- crass (~> 1.0.2)
83
- nokogiri (>= 1.5.9)
84
- mail (2.7.1)
85
- mini_mime (>= 0.1.1)
86
- marcel (0.3.3)
87
- mimemagic (~> 0.3.2)
88
- method_source (1.0.0)
89
- mimemagic (0.3.4)
90
- mini_mime (1.0.2)
91
- mini_portile2 (2.4.0)
92
- minitest (5.14.0)
93
- mocha (1.11.2)
94
- nio4r (2.5.2)
95
- nokogiri (1.10.9)
96
- mini_portile2 (~> 2.4.0)
97
- oj (3.10.6)
98
- parallel (1.19.1)
99
- parser (2.7.1.1)
100
- ast (~> 2.4.0)
101
- public_suffix (4.0.4)
102
- rack (2.2.2)
103
- rack-test (1.1.0)
104
- rack (>= 1.0, < 3)
105
- rails (6.0.2.2)
106
- actioncable (= 6.0.2.2)
107
- actionmailbox (= 6.0.2.2)
108
- actionmailer (= 6.0.2.2)
109
- actionpack (= 6.0.2.2)
110
- actiontext (= 6.0.2.2)
111
- actionview (= 6.0.2.2)
112
- activejob (= 6.0.2.2)
113
- activemodel (= 6.0.2.2)
114
- activerecord (= 6.0.2.2)
115
- activestorage (= 6.0.2.2)
116
- activesupport (= 6.0.2.2)
117
- bundler (>= 1.3.0)
118
- railties (= 6.0.2.2)
119
- sprockets-rails (>= 2.0.0)
120
- rails-dom-testing (2.0.3)
121
- activesupport (>= 4.2.0)
122
- nokogiri (>= 1.6)
123
- rails-html-sanitizer (1.3.0)
124
- loofah (~> 2.3)
125
- railties (6.0.2.2)
126
- actionpack (= 6.0.2.2)
127
- activesupport (= 6.0.2.2)
128
- method_source
129
- rake (>= 0.8.7)
130
- thor (>= 0.20.3, < 2.0)
131
- rainbow (3.0.0)
132
- rake (13.0.1)
133
- rexml (3.2.4)
134
- rubocop (0.82.0)
135
- jaro_winkler (~> 1.5.1)
136
- parallel (~> 1.10)
137
- parser (>= 2.7.0.1)
138
- rainbow (>= 2.2.2, < 4.0)
139
- rexml
140
- ruby-progressbar (~> 1.7)
141
- unicode-display_width (>= 1.4.0, < 2.0)
142
- rubocop-performance (1.5.2)
143
- rubocop (>= 0.71.0)
144
- ruby-progressbar (1.10.1)
145
- safe_yaml (1.0.5)
146
- sprockets (4.0.0)
147
- concurrent-ruby (~> 1.0)
148
- rack (> 1, < 3)
149
- sprockets-rails (3.2.1)
150
- actionpack (>= 4.0)
151
- activesupport (>= 4.0)
152
- sprockets (>= 3.0.0)
153
- thor (1.0.1)
154
- thread_safe (0.3.6)
155
- tzinfo (1.2.7)
156
- thread_safe (~> 0.1)
157
- unicode-display_width (1.7.0)
158
- webmock (3.8.3)
159
- addressable (>= 2.3.6)
160
- crack (>= 0.3.2)
161
- hashdiff (>= 0.4.0, < 2.0.0)
162
- websocket-driver (0.7.1)
163
- websocket-extensions (>= 0.1.0)
164
- websocket-extensions (0.1.4)
165
- zeitwerk (2.3.0)
166
-
167
- PLATFORMS
168
- ruby
169
-
170
- DEPENDENCIES
171
- bundler
172
- minitest
173
- mocha
174
- rake
175
- rubocop
176
- rubocop-performance
177
- webmock
178
- zaikio-loom!
179
-
180
- BUNDLED WITH
181
- 2.1.4