interactify 0.3.0.pre.alpha.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -0
- data/.ruby-version +1 -0
- data/Appraisals +23 -0
- data/CHANGELOG.md +14 -0
- data/README.md +33 -44
- data/gemfiles/.bundle/config +2 -0
- data/gemfiles/no_railties_no_sidekiq.gemfile +18 -0
- data/gemfiles/no_railties_no_sidekiq.gemfile.lock +127 -0
- data/gemfiles/railties_6.gemfile +14 -0
- data/gemfiles/railties_6.gemfile.lock +253 -0
- data/gemfiles/railties_6_no_sidekiq.gemfile +19 -0
- data/gemfiles/railties_6_no_sidekiq.gemfile.lock +159 -0
- data/gemfiles/railties_6_sidekiq.gemfile +20 -0
- data/gemfiles/railties_6_sidekiq.gemfile.lock +168 -0
- data/gemfiles/railties_7_no_sidekiq.gemfile +19 -0
- data/gemfiles/railties_7_no_sidekiq.gemfile.lock +158 -0
- data/gemfiles/railties_7_sidekiq.gemfile +20 -0
- data/gemfiles/railties_7_sidekiq.gemfile.lock +167 -0
- data/lib/interactify/async/job_klass.rb +63 -0
- data/lib/interactify/async/job_maker.rb +58 -0
- data/lib/interactify/async/jobable.rb +96 -0
- data/lib/interactify/async/null_job.rb +23 -0
- data/lib/interactify/configuration.rb +15 -0
- data/lib/interactify/contracts/call_wrapper.rb +19 -0
- data/lib/interactify/contracts/failure.rb +8 -0
- data/lib/interactify/contracts/helpers.rb +81 -0
- data/lib/interactify/contracts/mismatching_promise_error.rb +19 -0
- data/lib/interactify/contracts/promising.rb +36 -0
- data/lib/interactify/contracts/setup.rb +39 -0
- data/lib/interactify/dsl/each_chain.rb +90 -0
- data/lib/interactify/dsl/if_interactor.rb +81 -0
- data/lib/interactify/dsl/if_klass.rb +82 -0
- data/lib/interactify/dsl/organizer.rb +32 -0
- data/lib/interactify/dsl/unique_klass_name.rb +23 -0
- data/lib/interactify/dsl/wrapper.rb +74 -0
- data/lib/interactify/dsl.rb +12 -6
- data/lib/interactify/rspec_matchers/matchers.rb +68 -0
- data/lib/interactify/version.rb +1 -1
- data/lib/interactify/{interactor_wiring → wiring}/callable_representation.rb +2 -2
- data/lib/interactify/{interactor_wiring → wiring}/constants.rb +4 -4
- data/lib/interactify/{interactor_wiring → wiring}/error_context.rb +1 -1
- data/lib/interactify/{interactor_wiring → wiring}/files.rb +1 -1
- data/lib/interactify/{interactor_wiring.rb → wiring.rb} +5 -5
- data/lib/interactify.rb +58 -38
- metadata +48 -71
- data/lib/interactify/async_job_klass.rb +0 -61
- data/lib/interactify/call_wrapper.rb +0 -17
- data/lib/interactify/contract_failure.rb +0 -6
- data/lib/interactify/contract_helpers.rb +0 -71
- data/lib/interactify/each_chain.rb +0 -88
- data/lib/interactify/if_interactor.rb +0 -70
- data/lib/interactify/interactor_wrapper.rb +0 -72
- data/lib/interactify/job_maker.rb +0 -56
- data/lib/interactify/jobable.rb +0 -92
- data/lib/interactify/mismatching_promise_error.rb +0 -17
- data/lib/interactify/organizer.rb +0 -30
- data/lib/interactify/promising.rb +0 -34
- data/lib/interactify/rspec/matchers.rb +0 -67
- data/lib/interactify/unique_klass_name.rb +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ec61ad4a3a73d2c36430e29d01ae754b670ebdaab812f3d946b61adff9bf8ae
|
4
|
+
data.tar.gz: b4441070a5178d6933f97adf465bce313e638fef6dc42901d4e6d84c7a8e73d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b0552ea7eabc4a818888a255bb674c430babf57504b921e0cfd48949e9c0cee8bd3eb722b584e28c2a1aed7643f1b277f335b827a3af1cc6d2e121feb7c0856c
|
7
|
+
data.tar.gz: 73995415964151caf4f4b1977cecd558791ff14e4d475a26dda813b4403c29e2c4c59d06daf63e67800e29e44cbca558e26c970acdbef635d1a781fbfbdffada
|
data/.rubocop.yml
CHANGED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
3.1.4
|
data/Appraisals
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
appraise "railties-7-sidekiq" do
|
4
|
+
gem "railties", "7"
|
5
|
+
gem "sidekiq", "7"
|
6
|
+
end
|
7
|
+
|
8
|
+
appraise "railties-7-no-sidekiq" do
|
9
|
+
gem "railties", "7"
|
10
|
+
end
|
11
|
+
|
12
|
+
appraise "railties-6-sidekiq" do
|
13
|
+
gem "railties", "6"
|
14
|
+
gem "sidekiq", "7"
|
15
|
+
end
|
16
|
+
|
17
|
+
appraise "railties-6-no-sidekiq" do
|
18
|
+
gem "railties", "6"
|
19
|
+
end
|
20
|
+
|
21
|
+
appraise "no-railties-no-sidekiq" do
|
22
|
+
# nothing extra
|
23
|
+
end
|
data/CHANGELOG.md
CHANGED
@@ -11,3 +11,17 @@
|
|
11
11
|
## [0.3.0-alpha.1] - 2023-12-29
|
12
12
|
|
13
13
|
- Added support for `{if: :condition, then: A, else: B}` in organizers
|
14
|
+
|
15
|
+
## [0.3.0-alpha.2] - 2023-12-29
|
16
|
+
|
17
|
+
- Remove deep_matching development dependency
|
18
|
+
|
19
|
+
## [0.3.0-RC1] - 2023-12-29
|
20
|
+
|
21
|
+
- Fixed to work with and make optional dependencies for sidekiq and railties. Confirmed as working with ruby >= 3.1.4
|
22
|
+
|
23
|
+
## [0.4.0] - 2023-12-29
|
24
|
+
|
25
|
+
- All internal restructuring/refactoring into domains.
|
26
|
+
- Add support for organize `self.if(:condition, then: A, else: B)` syntax
|
27
|
+
- change location of matchers to `require 'interactify/rspec_matchers/matchers'`
|
data/README.md
CHANGED
@@ -1,6 +1,17 @@
|
|
1
1
|
# Interactify
|
2
2
|
|
3
|
-
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/interactify.svg)](https://badge.fury.io/rb/interactify)
|
4
|
+
[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
|
5
|
+
![Ruby 3.3.0](https://img.shields.io/badge/ruby-3.3.0-green.svg)
|
6
|
+
![Ruby 3.2.2](https://img.shields.io/badge/ruby-3.2.2-green.svg)
|
7
|
+
![Ruby 3.1.4](https://img.shields.io/badge/ruby-3.1.4-green.svg)
|
8
|
+
[![Code Climate](https://codeclimate.com/github/markburns/interactify/badges/gpa.svg)](https://codeclimate.com/github/markburns/interactify)
|
9
|
+
|
10
|
+
Interactify enhances Rails applications by simplifying complex interactor chains.
|
11
|
+
This gem builds on [interactors](https://github.com/collectiveidea/interactor) and [interactor-contracts](https://github.com/michaelherold/interactor-contracts) to improve readability and maintainability of business logic.
|
12
|
+
We depend on activesupport, and optionally on railties and sidekiq. So it's a good fit for Rails projects using Sidekiq, offering advanced features for chain management and debugging.
|
13
|
+
Interactify is about making interactor usage in Rails more efficient and less error-prone, reducing the overhead of traditional interactor orchestration.
|
14
|
+
|
4
15
|
## Installation
|
5
16
|
|
6
17
|
```ruby
|
@@ -10,6 +21,7 @@ gem 'interactify'
|
|
10
21
|
## Usage
|
11
22
|
|
12
23
|
### Initializer
|
24
|
+
|
13
25
|
```ruby
|
14
26
|
# in config/initializers/interactify.rb
|
15
27
|
Interactify.configure do |config|
|
@@ -28,9 +40,10 @@ end
|
|
28
40
|
|
29
41
|
### Using the RSpec matchers
|
30
42
|
```ruby
|
31
|
-
# e.g. in spec/
|
32
|
-
require 'interactify/
|
43
|
+
# e.g. in spec/support/interactify.rb
|
44
|
+
require 'interactify/rspec_matchers/matchers'
|
33
45
|
|
46
|
+
# in specs
|
34
47
|
expect(described_class).to expect_inputs(:foo, :bar, :baz)
|
35
48
|
expect(described_class).to promise_outputs(:fee, :fi, :fo, :fum)
|
36
49
|
```
|
@@ -211,26 +224,22 @@ class OuterThing
|
|
211
224
|
# ... boilerplate ...
|
212
225
|
organize \
|
213
226
|
SetupStep,
|
227
|
+
|
228
|
+
# lambda conditional
|
214
229
|
self.if(->(c){ c.thing == 'a' }, DoThingA, DoThingB),
|
215
|
-
end
|
216
230
|
|
217
|
-
#
|
218
|
-
|
219
|
-
|
220
|
-
|
231
|
+
# context conditional
|
232
|
+
self.if(:some_key_on_context, DoThingA, DoThingB),
|
233
|
+
|
234
|
+
# alternative hash syntax
|
221
235
|
{if: :key_set_on_context, then: DoThingA, else: DoThingB},
|
222
|
-
AfterBothCases
|
223
|
-
end
|
224
|
-
```
|
225
236
|
|
226
|
-
|
237
|
+
# method call with hash syntax, plus implicit chaining
|
238
|
+
self.if(:key_set_on_context, then: [A, B, C], else: [B, C, D]),
|
227
239
|
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
organize \
|
232
|
-
self.if(:key_set_on_context, DoThingA, DoThingB),
|
233
|
-
AfterBothCases
|
240
|
+
# method call with lambda, hash syntax, and implicit chaining
|
241
|
+
self.if(->(ctx) { ctx.this }, then: [A, B, C], else: [B, C, D]),
|
242
|
+
AfterDoThis
|
234
243
|
end
|
235
244
|
```
|
236
245
|
|
@@ -250,6 +259,7 @@ class SomeOrganizer
|
|
250
259
|
end
|
251
260
|
|
252
261
|
```
|
262
|
+
|
253
263
|
### Contract validation failures
|
254
264
|
Sometimes contract validation fails at runtime as an exception. It's something unexpected and you'll have an `Interactor::Failure` sent to rollbar/sentry/honeybadger.
|
255
265
|
If the context is large it's often hard to spot what the actual problem is or where it occurred.
|
@@ -298,7 +308,6 @@ Actual promises are:
|
|
298
308
|
step1
|
299
309
|
```
|
300
310
|
|
301
|
-
|
302
311
|
### Interactor wiring specs
|
303
312
|
Sometimes you have an interactor chain that fails because something is expected deeper down the chain and not provided further up the chain.
|
304
313
|
The existing way to solve this is with enough integration specs to catch them, hunting and sticking a `byebug`, `debugger` or `binding.pry` in at suspected locations and inferring where in the chain the wiring went awry.
|
@@ -310,7 +319,7 @@ In order to detect these wiring issues, stick a spec in your test suite like thi
|
|
310
319
|
```ruby
|
311
320
|
RSpec.describe 'InteractorWiring' do
|
312
321
|
it 'validates the interactors in the whole app', :aggregate_failures do
|
313
|
-
errors = Interactify.validate_app(ignore: [/
|
322
|
+
errors = Interactify.validate_app(ignore: [/SomeClassName/, AnotherClass, 'SomeClassNameString'])
|
314
323
|
|
315
324
|
expect(errors).to eq ''
|
316
325
|
end
|
@@ -338,17 +347,7 @@ expect(described_class).to promise_outputs(:order)
|
|
338
347
|
### Sidekiq Jobs
|
339
348
|
Sometimes you want to asyncify an interactor.
|
340
349
|
|
341
|
-
|
342
|
-
# before
|
343
|
-
class SomeInteractor
|
344
|
-
include Interactify
|
345
|
-
|
346
|
-
def call
|
347
|
-
# ...
|
348
|
-
end
|
349
|
-
end
|
350
|
-
```
|
351
|
-
|
350
|
+
#### before
|
352
351
|
```diff
|
353
352
|
- SomeInteractor.call(*args)
|
354
353
|
+ class SomeInteractorJob
|
@@ -362,24 +361,14 @@ end
|
|
362
361
|
+ SomeInteractorJob.perform_async(*args)
|
363
362
|
```
|
364
363
|
|
365
|
-
|
366
|
-
# after
|
367
|
-
class SomeInteractor
|
368
|
-
include Interactify
|
369
|
-
|
370
|
-
def call
|
371
|
-
# ...
|
372
|
-
end
|
373
|
-
end
|
374
|
-
```
|
375
|
-
|
376
|
-
No need to manually create a job class or handle the perform/call impedance mismatch
|
377
|
-
|
364
|
+
#### after
|
378
365
|
```diff
|
379
366
|
- SomeInteractor.call!(*args)
|
380
367
|
+ SomeInteractor::Async.call!(*args)
|
381
368
|
```
|
382
369
|
|
370
|
+
No need to manually create a job class or handle the perform/call impedance mismatch
|
371
|
+
|
383
372
|
This also makes it easy to add cron jobs to run interactors. As any interactor can be asyncified.
|
384
373
|
By using it's internal Async class.
|
385
374
|
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "rake", "~> 13.0"
|
6
|
+
|
7
|
+
group :development do
|
8
|
+
gem "appraisal"
|
9
|
+
gem "bundler", "~> 2.0"
|
10
|
+
end
|
11
|
+
|
12
|
+
group :test do
|
13
|
+
gem "debug"
|
14
|
+
gem "rspec", "~> 3.0"
|
15
|
+
gem "simplecov", require: false
|
16
|
+
end
|
17
|
+
|
18
|
+
gemspec path: "../"
|
@@ -0,0 +1,127 @@
|
|
1
|
+
PATH
|
2
|
+
remote: ..
|
3
|
+
specs:
|
4
|
+
interactify (0.4.0)
|
5
|
+
activesupport (>= 6.0.0)
|
6
|
+
interactor
|
7
|
+
interactor-contracts
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: https://rubygems.org/
|
11
|
+
specs:
|
12
|
+
activesupport (7.1.2)
|
13
|
+
base64
|
14
|
+
bigdecimal
|
15
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
16
|
+
connection_pool (>= 2.2.5)
|
17
|
+
drb
|
18
|
+
i18n (>= 1.6, < 2)
|
19
|
+
minitest (>= 5.1)
|
20
|
+
mutex_m
|
21
|
+
tzinfo (~> 2.0)
|
22
|
+
appraisal (2.5.0)
|
23
|
+
bundler
|
24
|
+
rake
|
25
|
+
thor (>= 0.14.0)
|
26
|
+
base64 (0.2.0)
|
27
|
+
bigdecimal (3.1.5)
|
28
|
+
concurrent-ruby (1.2.2)
|
29
|
+
connection_pool (2.4.1)
|
30
|
+
debug (1.9.1)
|
31
|
+
irb (~> 1.10)
|
32
|
+
reline (>= 0.3.8)
|
33
|
+
diff-lcs (1.5.0)
|
34
|
+
docile (1.4.0)
|
35
|
+
drb (2.2.0)
|
36
|
+
ruby2_keywords
|
37
|
+
dry-configurable (1.0.1)
|
38
|
+
dry-core (~> 1.0, < 2)
|
39
|
+
zeitwerk (~> 2.6)
|
40
|
+
dry-core (1.0.0)
|
41
|
+
concurrent-ruby (~> 1.0)
|
42
|
+
zeitwerk (~> 2.6)
|
43
|
+
dry-inflector (1.0.0)
|
44
|
+
dry-initializer (3.1.1)
|
45
|
+
dry-logic (1.5.0)
|
46
|
+
concurrent-ruby (~> 1.0)
|
47
|
+
dry-core (~> 1.0, < 2)
|
48
|
+
zeitwerk (~> 2.6)
|
49
|
+
dry-schema (1.13.3)
|
50
|
+
concurrent-ruby (~> 1.0)
|
51
|
+
dry-configurable (~> 1.0, >= 1.0.1)
|
52
|
+
dry-core (~> 1.0, < 2)
|
53
|
+
dry-initializer (~> 3.0)
|
54
|
+
dry-logic (>= 1.4, < 2)
|
55
|
+
dry-types (>= 1.7, < 2)
|
56
|
+
zeitwerk (~> 2.6)
|
57
|
+
dry-types (1.7.1)
|
58
|
+
concurrent-ruby (~> 1.0)
|
59
|
+
dry-core (~> 1.0)
|
60
|
+
dry-inflector (~> 1.0)
|
61
|
+
dry-logic (~> 1.4)
|
62
|
+
zeitwerk (~> 2.6)
|
63
|
+
dry-validation (1.10.0)
|
64
|
+
concurrent-ruby (~> 1.0)
|
65
|
+
dry-core (~> 1.0, < 2)
|
66
|
+
dry-initializer (~> 3.0)
|
67
|
+
dry-schema (>= 1.12, < 2)
|
68
|
+
zeitwerk (~> 2.6)
|
69
|
+
i18n (1.14.1)
|
70
|
+
concurrent-ruby (~> 1.0)
|
71
|
+
interactor (3.1.2)
|
72
|
+
interactor-contracts (0.3.0)
|
73
|
+
dry-validation (~> 1.0)
|
74
|
+
interactor (~> 3)
|
75
|
+
io-console (0.7.1)
|
76
|
+
irb (1.11.0)
|
77
|
+
rdoc
|
78
|
+
reline (>= 0.3.8)
|
79
|
+
minitest (5.20.0)
|
80
|
+
mutex_m (0.2.0)
|
81
|
+
psych (5.1.2)
|
82
|
+
stringio
|
83
|
+
rake (13.1.0)
|
84
|
+
rdoc (6.6.2)
|
85
|
+
psych (>= 4.0.0)
|
86
|
+
reline (0.4.1)
|
87
|
+
io-console (~> 0.5)
|
88
|
+
rspec (3.12.0)
|
89
|
+
rspec-core (~> 3.12.0)
|
90
|
+
rspec-expectations (~> 3.12.0)
|
91
|
+
rspec-mocks (~> 3.12.0)
|
92
|
+
rspec-core (3.12.2)
|
93
|
+
rspec-support (~> 3.12.0)
|
94
|
+
rspec-expectations (3.12.3)
|
95
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
96
|
+
rspec-support (~> 3.12.0)
|
97
|
+
rspec-mocks (3.12.6)
|
98
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
99
|
+
rspec-support (~> 3.12.0)
|
100
|
+
rspec-support (3.12.1)
|
101
|
+
ruby2_keywords (0.0.5)
|
102
|
+
simplecov (0.22.0)
|
103
|
+
docile (~> 1.1)
|
104
|
+
simplecov-html (~> 0.11)
|
105
|
+
simplecov_json_formatter (~> 0.1)
|
106
|
+
simplecov-html (0.12.3)
|
107
|
+
simplecov_json_formatter (0.1.4)
|
108
|
+
stringio (3.1.0)
|
109
|
+
thor (1.3.0)
|
110
|
+
tzinfo (2.0.6)
|
111
|
+
concurrent-ruby (~> 1.0)
|
112
|
+
zeitwerk (2.6.12)
|
113
|
+
|
114
|
+
PLATFORMS
|
115
|
+
ruby
|
116
|
+
|
117
|
+
DEPENDENCIES
|
118
|
+
appraisal
|
119
|
+
bundler (~> 2.0)
|
120
|
+
debug
|
121
|
+
interactify!
|
122
|
+
rake (~> 13.0)
|
123
|
+
rspec (~> 3.0)
|
124
|
+
simplecov
|
125
|
+
|
126
|
+
BUNDLED WITH
|
127
|
+
2.4.22
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "simplecov", require: false
|
6
|
+
gem "rake", "~> 13.0"
|
7
|
+
gem "railties", "6"
|
8
|
+
gem "sidekiq", "7"
|
9
|
+
|
10
|
+
group :test do
|
11
|
+
gem "rspec", "~> 3.0"
|
12
|
+
end
|
13
|
+
|
14
|
+
gemspec path: "../"
|
@@ -0,0 +1,253 @@
|
|
1
|
+
PATH
|
2
|
+
remote: ..
|
3
|
+
specs:
|
4
|
+
interactify (0.3.0.pre.alpha.2)
|
5
|
+
interactor
|
6
|
+
interactor-contracts
|
7
|
+
rails (>= 6.0.0)
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: https://rubygems.org/
|
11
|
+
specs:
|
12
|
+
actioncable (6.0.0)
|
13
|
+
actionpack (= 6.0.0)
|
14
|
+
nio4r (~> 2.0)
|
15
|
+
websocket-driver (>= 0.6.1)
|
16
|
+
actionmailbox (6.0.0)
|
17
|
+
actionpack (= 6.0.0)
|
18
|
+
activejob (= 6.0.0)
|
19
|
+
activerecord (= 6.0.0)
|
20
|
+
activestorage (= 6.0.0)
|
21
|
+
activesupport (= 6.0.0)
|
22
|
+
mail (>= 2.7.1)
|
23
|
+
actionmailer (6.0.0)
|
24
|
+
actionpack (= 6.0.0)
|
25
|
+
actionview (= 6.0.0)
|
26
|
+
activejob (= 6.0.0)
|
27
|
+
mail (~> 2.5, >= 2.5.4)
|
28
|
+
rails-dom-testing (~> 2.0)
|
29
|
+
actionpack (6.0.0)
|
30
|
+
actionview (= 6.0.0)
|
31
|
+
activesupport (= 6.0.0)
|
32
|
+
rack (~> 2.0)
|
33
|
+
rack-test (>= 0.6.3)
|
34
|
+
rails-dom-testing (~> 2.0)
|
35
|
+
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
36
|
+
actiontext (6.0.0)
|
37
|
+
actionpack (= 6.0.0)
|
38
|
+
activerecord (= 6.0.0)
|
39
|
+
activestorage (= 6.0.0)
|
40
|
+
activesupport (= 6.0.0)
|
41
|
+
nokogiri (>= 1.8.5)
|
42
|
+
actionview (6.0.0)
|
43
|
+
activesupport (= 6.0.0)
|
44
|
+
builder (~> 3.1)
|
45
|
+
erubi (~> 1.4)
|
46
|
+
rails-dom-testing (~> 2.0)
|
47
|
+
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
48
|
+
activejob (6.0.0)
|
49
|
+
activesupport (= 6.0.0)
|
50
|
+
globalid (>= 0.3.6)
|
51
|
+
activemodel (6.0.0)
|
52
|
+
activesupport (= 6.0.0)
|
53
|
+
activerecord (6.0.0)
|
54
|
+
activemodel (= 6.0.0)
|
55
|
+
activesupport (= 6.0.0)
|
56
|
+
activestorage (6.0.0)
|
57
|
+
actionpack (= 6.0.0)
|
58
|
+
activejob (= 6.0.0)
|
59
|
+
activerecord (= 6.0.0)
|
60
|
+
marcel (~> 0.3.1)
|
61
|
+
activesupport (6.0.0)
|
62
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
63
|
+
i18n (>= 0.7, < 2)
|
64
|
+
minitest (~> 5.1)
|
65
|
+
tzinfo (~> 1.1)
|
66
|
+
zeitwerk (~> 2.1, >= 2.1.8)
|
67
|
+
appraisal (2.5.0)
|
68
|
+
bundler
|
69
|
+
rake
|
70
|
+
thor (>= 0.14.0)
|
71
|
+
builder (3.2.4)
|
72
|
+
concurrent-ruby (1.2.2)
|
73
|
+
connection_pool (2.4.1)
|
74
|
+
crass (1.0.6)
|
75
|
+
date (3.3.4)
|
76
|
+
debug (1.9.1)
|
77
|
+
irb (~> 1.10)
|
78
|
+
reline (>= 0.3.8)
|
79
|
+
diff-lcs (1.5.0)
|
80
|
+
docile (1.4.0)
|
81
|
+
dry-configurable (1.1.0)
|
82
|
+
dry-core (~> 1.0, < 2)
|
83
|
+
zeitwerk (~> 2.6)
|
84
|
+
dry-core (1.0.1)
|
85
|
+
concurrent-ruby (~> 1.0)
|
86
|
+
zeitwerk (~> 2.6)
|
87
|
+
dry-inflector (1.0.0)
|
88
|
+
dry-initializer (3.1.1)
|
89
|
+
dry-logic (1.5.0)
|
90
|
+
concurrent-ruby (~> 1.0)
|
91
|
+
dry-core (~> 1.0, < 2)
|
92
|
+
zeitwerk (~> 2.6)
|
93
|
+
dry-schema (1.13.3)
|
94
|
+
concurrent-ruby (~> 1.0)
|
95
|
+
dry-configurable (~> 1.0, >= 1.0.1)
|
96
|
+
dry-core (~> 1.0, < 2)
|
97
|
+
dry-initializer (~> 3.0)
|
98
|
+
dry-logic (>= 1.4, < 2)
|
99
|
+
dry-types (>= 1.7, < 2)
|
100
|
+
zeitwerk (~> 2.6)
|
101
|
+
dry-types (1.7.1)
|
102
|
+
concurrent-ruby (~> 1.0)
|
103
|
+
dry-core (~> 1.0)
|
104
|
+
dry-inflector (~> 1.0)
|
105
|
+
dry-logic (~> 1.4)
|
106
|
+
zeitwerk (~> 2.6)
|
107
|
+
dry-validation (1.10.0)
|
108
|
+
concurrent-ruby (~> 1.0)
|
109
|
+
dry-core (~> 1.0, < 2)
|
110
|
+
dry-initializer (~> 3.0)
|
111
|
+
dry-schema (>= 1.12, < 2)
|
112
|
+
zeitwerk (~> 2.6)
|
113
|
+
erubi (1.12.0)
|
114
|
+
globalid (1.1.0)
|
115
|
+
activesupport (>= 5.0)
|
116
|
+
i18n (1.14.1)
|
117
|
+
concurrent-ruby (~> 1.0)
|
118
|
+
interactor (3.1.2)
|
119
|
+
interactor-contracts (0.3.0)
|
120
|
+
dry-validation (~> 1.0)
|
121
|
+
interactor (~> 3)
|
122
|
+
io-console (0.7.1)
|
123
|
+
irb (1.11.0)
|
124
|
+
rdoc
|
125
|
+
reline (>= 0.3.8)
|
126
|
+
loofah (2.22.0)
|
127
|
+
crass (~> 1.0.2)
|
128
|
+
nokogiri (>= 1.12.0)
|
129
|
+
mail (2.8.1)
|
130
|
+
mini_mime (>= 0.1.1)
|
131
|
+
net-imap
|
132
|
+
net-pop
|
133
|
+
net-smtp
|
134
|
+
marcel (0.3.3)
|
135
|
+
mimemagic (~> 0.3.2)
|
136
|
+
method_source (1.0.0)
|
137
|
+
mimemagic (0.3.10)
|
138
|
+
nokogiri (~> 1)
|
139
|
+
rake
|
140
|
+
mini_mime (1.1.5)
|
141
|
+
mini_portile2 (2.8.5)
|
142
|
+
minitest (5.20.0)
|
143
|
+
net-imap (0.4.9)
|
144
|
+
date
|
145
|
+
net-protocol
|
146
|
+
net-pop (0.1.2)
|
147
|
+
net-protocol
|
148
|
+
net-protocol (0.2.2)
|
149
|
+
timeout
|
150
|
+
net-smtp (0.4.0)
|
151
|
+
net-protocol
|
152
|
+
nio4r (2.7.0)
|
153
|
+
nokogiri (1.16.0)
|
154
|
+
mini_portile2 (~> 2.8.2)
|
155
|
+
racc (~> 1.4)
|
156
|
+
psych (5.1.2)
|
157
|
+
stringio
|
158
|
+
racc (1.7.3)
|
159
|
+
rack (2.2.8)
|
160
|
+
rack-test (2.1.0)
|
161
|
+
rack (>= 1.3)
|
162
|
+
rails (6.0.0)
|
163
|
+
actioncable (= 6.0.0)
|
164
|
+
actionmailbox (= 6.0.0)
|
165
|
+
actionmailer (= 6.0.0)
|
166
|
+
actionpack (= 6.0.0)
|
167
|
+
actiontext (= 6.0.0)
|
168
|
+
actionview (= 6.0.0)
|
169
|
+
activejob (= 6.0.0)
|
170
|
+
activemodel (= 6.0.0)
|
171
|
+
activerecord (= 6.0.0)
|
172
|
+
activestorage (= 6.0.0)
|
173
|
+
activesupport (= 6.0.0)
|
174
|
+
bundler (>= 1.3.0)
|
175
|
+
railties (= 6.0.0)
|
176
|
+
sprockets-rails (>= 2.0.0)
|
177
|
+
rails-dom-testing (2.2.0)
|
178
|
+
activesupport (>= 5.0.0)
|
179
|
+
minitest
|
180
|
+
nokogiri (>= 1.6)
|
181
|
+
rails-html-sanitizer (1.6.0)
|
182
|
+
loofah (~> 2.21)
|
183
|
+
nokogiri (~> 1.14)
|
184
|
+
railties (6.0.0)
|
185
|
+
actionpack (= 6.0.0)
|
186
|
+
activesupport (= 6.0.0)
|
187
|
+
method_source
|
188
|
+
rake (>= 0.8.7)
|
189
|
+
thor (>= 0.20.3, < 2.0)
|
190
|
+
rake (13.1.0)
|
191
|
+
rdoc (6.6.2)
|
192
|
+
psych (>= 4.0.0)
|
193
|
+
redis-client (0.19.1)
|
194
|
+
connection_pool
|
195
|
+
reline (0.4.1)
|
196
|
+
io-console (~> 0.5)
|
197
|
+
rspec (3.12.0)
|
198
|
+
rspec-core (~> 3.12.0)
|
199
|
+
rspec-expectations (~> 3.12.0)
|
200
|
+
rspec-mocks (~> 3.12.0)
|
201
|
+
rspec-core (3.12.2)
|
202
|
+
rspec-support (~> 3.12.0)
|
203
|
+
rspec-expectations (3.12.3)
|
204
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
205
|
+
rspec-support (~> 3.12.0)
|
206
|
+
rspec-mocks (3.12.6)
|
207
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
208
|
+
rspec-support (~> 3.12.0)
|
209
|
+
rspec-support (3.12.1)
|
210
|
+
sidekiq (7.0.0)
|
211
|
+
concurrent-ruby (< 2)
|
212
|
+
connection_pool (>= 2.3.0)
|
213
|
+
rack (>= 2.2.4)
|
214
|
+
redis-client (>= 0.9.0)
|
215
|
+
simplecov (0.22.0)
|
216
|
+
docile (~> 1.1)
|
217
|
+
simplecov-html (~> 0.11)
|
218
|
+
simplecov_json_formatter (~> 0.1)
|
219
|
+
simplecov-html (0.12.3)
|
220
|
+
simplecov_json_formatter (0.1.4)
|
221
|
+
sprockets (4.2.1)
|
222
|
+
concurrent-ruby (~> 1.0)
|
223
|
+
rack (>= 2.2.4, < 4)
|
224
|
+
sprockets-rails (3.4.2)
|
225
|
+
actionpack (>= 5.2)
|
226
|
+
activesupport (>= 5.2)
|
227
|
+
sprockets (>= 3.0.0)
|
228
|
+
stringio (3.1.0)
|
229
|
+
thor (1.3.0)
|
230
|
+
thread_safe (0.3.6)
|
231
|
+
timeout (0.4.1)
|
232
|
+
tzinfo (1.2.11)
|
233
|
+
thread_safe (~> 0.1)
|
234
|
+
websocket-driver (0.7.6)
|
235
|
+
websocket-extensions (>= 0.1.0)
|
236
|
+
websocket-extensions (0.1.5)
|
237
|
+
zeitwerk (2.6.12)
|
238
|
+
|
239
|
+
PLATFORMS
|
240
|
+
ruby
|
241
|
+
|
242
|
+
DEPENDENCIES
|
243
|
+
appraisal
|
244
|
+
debug
|
245
|
+
interactify!
|
246
|
+
railties (= 6)
|
247
|
+
rake (~> 13.0)
|
248
|
+
rspec (~> 3.0)
|
249
|
+
sidekiq (= 7)
|
250
|
+
simplecov
|
251
|
+
|
252
|
+
BUNDLED WITH
|
253
|
+
2.4.19
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "rake", "~> 13.0"
|
6
|
+
gem "railties", "6"
|
7
|
+
|
8
|
+
group :development do
|
9
|
+
gem "appraisal"
|
10
|
+
gem "bundler", "~> 2.0"
|
11
|
+
end
|
12
|
+
|
13
|
+
group :test do
|
14
|
+
gem "debug"
|
15
|
+
gem "rspec", "~> 3.0"
|
16
|
+
gem "simplecov", require: false
|
17
|
+
end
|
18
|
+
|
19
|
+
gemspec path: "../"
|