interactify 0.3.0.pre.alpha.1 → 0.4.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 +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
|
+
[](https://badge.fury.io/rb/interactify)
|
4
|
+
[](LICENSE)
|
5
|
+

|
6
|
+

|
7
|
+

|
8
|
+
[](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: "../"
|