zaikio-loom 0.3.0 → 1.2.0

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: 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