zaikio-loom 0.2.0 → 1.1.1

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: 7116806b8e6e82be413f8f163f7b5b8c785c9218e8a03a7e9f798d76032b2eab
4
- data.tar.gz: e5d303f87cb2dd1ee94823f8ae61f6b4ebf2eff0cf130121f885e541b5d58668
3
+ metadata.gz: 3786a2308fe8e476ff4ac2d238c5dcbf77bb9858ac30e974e2a3e188685dfb3a
4
+ data.tar.gz: 8e1a5e7dbdc412299b4210f31752ea1ca6113e060c1eb15495766e90d6981aea
5
5
  SHA512:
6
- metadata.gz: 0351fa33b725e6198a3685a3135098586348cdeb14729d0227ccee426ea70ee4c3909c92fed543799b092f7b6533ff5f268ddb5fc0295c9686681b30e9b9ee6c
7
- data.tar.gz: 2af0e36488855e2098bd950b5284d35505d06709f2c3dde8e30903f48e0b0627b0435c0d1dc29fd468266f80d4a85f3c1d5d88ea6a837fdb419734a331de19f0
6
+ metadata.gz: eaf76e4bf467e1842f4d1c2d45d4ad231ee5c8a38d80c0dbba0c601e25c5e0848ac8898757aa0a00f11b889a5d48c39e5ba97c21a32c6da93f6670dc3f9aab64
7
+ data.tar.gz: a58d8aaf7489ed78422fdfcbc631b0a3cb292d134c64f039965b169da4101ea50417d2f9838cbc152a7734b642b9fd93fd8db552b3997e8ca021051ea24338de
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
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,10 +1,13 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.6
2
+ TargetRubyVersion: 2.7
3
3
  Exclude:
4
4
  - test/**/*.rb
5
+ NewCops: enable
5
6
 
6
7
  require:
8
+ - rubocop-minitest
7
9
  - rubocop-performance
10
+ - rubocop-rake
8
11
 
9
12
  Layout/HashAlignment:
10
13
  EnforcedColonStyle: table
data/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # Zaikio Loom Ruby Gem Changelog
2
2
 
3
+ ## master
4
+
5
+ ## 1.1.1 - 2021-03-25
6
+
7
+ * Replace dependency on `rails` with a more specific dependency on `railties` and friends
8
+
9
+ ## 1.1.0 - 2021-01-05
10
+
11
+ - Ensure compability with Ruby 3.0 and Ruby on Rails 6.1
12
+
13
+ ## 1.0.1 - 2020-06-03
14
+
15
+ - Fix a bug in the event serializer
16
+
17
+ ## 1.0.0 - 2020-06-03
18
+
19
+ - Add multi client support
20
+ - Confguration format changed
21
+
22
+ ## 0.3.0 - 2020-04-22
23
+
24
+ - Do not send events to Loom in development or staging environment
25
+
26
+ ## 0.2.1 - 2020-03-30
27
+
28
+ - Fix bug with event serialization
29
+
3
30
  ## 0.2.0 - 2020-03-30
4
31
 
5
32
  - Events are now fired in background with ActiveJob.
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/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.
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/zai-loom-ruby/blob/master/CODE_OF_CONDUCT.md).
data/bin/test CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- $: << File.expand_path("../test", __dir__)
2
+ $LOAD_PATH << File.expand_path("../test", __dir__)
3
3
 
4
4
  require "bundler/setup"
5
5
  require "rails/plugin/test"
data/lib/zaikio/loom.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require "zaikio/loom/app_configuration"
1
2
  require "zaikio/loom/configuration"
2
3
  require "zaikio/loom/event"
3
4
  require "zaikio/loom/event_serializer"
@@ -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
@@ -4,36 +4,32 @@ module Zaikio
4
4
  module Loom
5
5
  class Configuration
6
6
  HOSTS = {
7
- development: "http://loom.zaikio.test",
8
- test: "http://loom.zaikio.test",
9
- staging: "https://loom.staging.zaikio.com",
10
- sandbox: "https://loom.sandbox.zaikio.com",
11
- production: "https://loom.zaikio.com"
7
+ test: "http://loom.zaikio.test",
8
+ sandbox: "https://loom.sandbox.zaikio.com",
9
+ production: "https://loom.zaikio.com"
12
10
  }.freeze
13
11
 
14
- attr_accessor :app_name, :password, :version
15
- attr_reader :environment, :host
12
+ attr_accessor :version
13
+ attr_reader :environment, :host, :apps
16
14
  attr_writer :logger
17
15
 
18
16
  def initialize
19
17
  @environment = :sandbox
18
+ @apps = {}
20
19
  end
21
20
 
22
21
  def logger
23
- @logger ||= Logger.new(STDOUT)
22
+ @logger ||= Logger.new($stdout)
24
23
  end
25
24
 
26
25
  def environment=(env)
27
26
  @environment = env.to_sym
28
- @host = host_for(environment)
27
+ @host = HOSTS[environment]
29
28
  end
30
29
 
31
- private
32
-
33
- def host_for(environment)
34
- HOSTS.fetch(environment) do
35
- raise StandardError.new, "Invalid Zaikio::Loom environment '#{environment}'"
36
- end
30
+ def application(name)
31
+ @apps[name.to_s] = AppConfiguration.new(name.to_s)
32
+ yield(@apps[name.to_s])
37
33
  end
38
34
  end
39
35
  end
@@ -5,10 +5,10 @@ require "securerandom"
5
5
  module Zaikio
6
6
  module Loom
7
7
  class Event
8
- attr_reader :status_code, :response_body
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,13 +17,15 @@ 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
24
24
 
25
25
  def fire # rubocop:disable Metrics/AbcSize
26
- return false unless configuration.password && configuration.host
26
+ log_event
27
+
28
+ return false unless app_password && configuration.host
27
29
 
28
30
  uri = URI("#{configuration.host}/api/v1/events")
29
31
 
@@ -55,9 +57,17 @@ module Zaikio
55
57
 
56
58
  private
57
59
 
60
+ def app_name
61
+ @event_name.split(".").first
62
+ end
63
+
64
+ def app_password
65
+ configuration.apps[app_name].password
66
+ end
67
+
58
68
  def build_request(uri)
59
69
  Net::HTTP::Post.new(uri, "User-Agent" => "zaikio-loom:#{Zaikio::Loom::VERSION}").tap do |request|
60
- request.basic_auth(configuration.app_name, configuration.password)
70
+ request.basic_auth(app_name, app_password)
61
71
  request.body = event_as_json
62
72
  request.content_type = "application/json"
63
73
  end
@@ -68,7 +78,11 @@ module Zaikio
68
78
  end
69
79
 
70
80
  def event_as_json
71
- Oj.dump({ event: to_h }, mode: :compat)
81
+ @event_as_json ||= Oj.dump({ event: to_h }, mode: :compat)
82
+ end
83
+
84
+ def log_event
85
+ configuration.logger.info("Zaikio::Loom event\n#{event_as_json}")
72
86
  end
73
87
  end
74
88
  end
@@ -6,12 +6,14 @@ module Zaikio
6
6
  end
7
7
 
8
8
  def serialize(event)
9
- super(event.to_h)
9
+ super(event.to_h.stringify_keys)
10
10
  end
11
11
 
12
12
  def deserialize(hash)
13
- name = hash.delete('name')
14
- Event.new(name, hash)
13
+ name = hash.delete("name")
14
+ timestamp = DateTime.parse(hash.delete("timestamp"))
15
+ hash.delete("_aj_serialized")
16
+ Event.new(name, **hash.symbolize_keys.merge(timestamp: timestamp))
15
17
  end
16
18
  end
17
19
  end
@@ -1,5 +1,5 @@
1
1
  module Zaikio
2
2
  module Loom
3
- VERSION = "0.2.0".freeze
3
+ VERSION = "1.1.1".freeze
4
4
  end
5
5
  end
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/zai-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/zai-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,18 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zaikio-loom
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - crispymtn
8
8
  - Martin Spickermann
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-03-30 00:00:00.000000000 Z
12
+ date: 2021-03-29 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
@@ -143,7 +199,7 @@ dependencies:
143
199
  - - ">="
144
200
  - !ruby/object:Gem::Version
145
201
  version: '0'
146
- description:
202
+ description:
147
203
  email:
148
204
  - op@crispymtn.com
149
205
  - spickermann@gmail.com
@@ -157,7 +213,6 @@ files:
157
213
  - CHANGELOG.md
158
214
  - CODE_OF_CONDUCT.md
159
215
  - Gemfile
160
- - Gemfile.lock
161
216
  - LICENSE.txt
162
217
  - README.md
163
218
  - Rakefile
@@ -166,6 +221,7 @@ files:
166
221
  - bin/test
167
222
  - config/initializers/register_zaikio_loom_event_serializer.rb
168
223
  - lib/zaikio/loom.rb
224
+ - lib/zaikio/loom/app_configuration.rb
169
225
  - lib/zaikio/loom/configuration.rb
170
226
  - lib/zaikio/loom/engine.rb
171
227
  - lib/zaikio/loom/event.rb
@@ -173,14 +229,14 @@ files:
173
229
  - lib/zaikio/loom/railtie.rb
174
230
  - lib/zaikio/loom/version.rb
175
231
  - zaikio-loom.gemspec
176
- homepage: https://github.com/crispymtn/zai-loom-ruby
232
+ homepage: https://github.com/zaikio/zai-loom-ruby
177
233
  licenses:
178
234
  - MIT
179
235
  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
183
- post_install_message:
236
+ changelog_uri: https://github.com/zaikio/zai-loom-ruby/blob/master/CHANGELOG.md
237
+ homepage_uri: https://github.com/zaikio/zai-loom-ruby
238
+ source_code_uri: https://github.com/zaikio/zai-loom-ruby
239
+ post_install_message:
184
240
  rdoc_options: []
185
241
  require_paths:
186
242
  - lib
@@ -188,15 +244,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
188
244
  requirements:
189
245
  - - ">="
190
246
  - !ruby/object:Gem::Version
191
- version: '0'
247
+ version: 2.7.1
192
248
  required_rubygems_version: !ruby/object:Gem::Requirement
193
249
  requirements:
194
250
  - - ">="
195
251
  - !ruby/object:Gem::Version
196
252
  version: '0'
197
253
  requirements: []
198
- rubygems_version: 3.0.1
199
- signing_key:
254
+ rubygems_version: 3.2.3
255
+ signing_key:
200
256
  specification_version: 4
201
257
  summary: The Zaikio Loom Ruby Gem simplifies publishing events on the Zaikio Loom
202
258
  event system.
data/Gemfile.lock DELETED
@@ -1,179 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- zaikio-loom (0.2.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.0)
78
- i18n (1.8.2)
79
- concurrent-ruby (~> 1.0)
80
- jaro_winkler (1.5.4)
81
- loofah (2.4.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.5)
98
- parallel (1.19.1)
99
- parser (2.7.0.2)
100
- ast (~> 2.4.0)
101
- public_suffix (4.0.3)
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
- rubocop (0.79.0)
134
- jaro_winkler (~> 1.5.1)
135
- parallel (~> 1.10)
136
- parser (>= 2.7.0.1)
137
- rainbow (>= 2.2.2, < 4.0)
138
- ruby-progressbar (~> 1.7)
139
- unicode-display_width (>= 1.4.0, < 1.7)
140
- rubocop-performance (1.5.2)
141
- rubocop (>= 0.71.0)
142
- ruby-progressbar (1.10.1)
143
- safe_yaml (1.0.5)
144
- sprockets (4.0.0)
145
- concurrent-ruby (~> 1.0)
146
- rack (> 1, < 3)
147
- sprockets-rails (3.2.1)
148
- actionpack (>= 4.0)
149
- activesupport (>= 4.0)
150
- sprockets (>= 3.0.0)
151
- thor (1.0.1)
152
- thread_safe (0.3.6)
153
- tzinfo (1.2.6)
154
- thread_safe (~> 0.1)
155
- unicode-display_width (1.6.1)
156
- webmock (3.8.0)
157
- addressable (>= 2.3.6)
158
- crack (>= 0.3.2)
159
- hashdiff (>= 0.4.0, < 2.0.0)
160
- websocket-driver (0.7.1)
161
- websocket-extensions (>= 0.1.0)
162
- websocket-extensions (0.1.4)
163
- zeitwerk (2.3.0)
164
-
165
- PLATFORMS
166
- ruby
167
-
168
- DEPENDENCIES
169
- bundler
170
- minitest
171
- mocha
172
- rake
173
- rubocop
174
- rubocop-performance
175
- webmock
176
- zaikio-loom!
177
-
178
- BUNDLED WITH
179
- 2.1.4