dry-effects 0.1.2 → 0.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 +4 -4
- data/CHANGELOG.md +57 -5
- data/LICENSE +1 -1
- data/README.md +19 -11
- data/dry-effects.gemspec +33 -41
- data/lib/dry/effects/all.rb +4 -4
- data/lib/dry/effects/container.rb +1 -1
- data/lib/dry/effects/effect.rb +2 -2
- data/lib/dry/effects/effects/async.rb +3 -1
- data/lib/dry/effects/effects/cache.rb +13 -9
- data/lib/dry/effects/effects/cmp.rb +3 -1
- data/lib/dry/effects/effects/current_time.rb +4 -2
- data/lib/dry/effects/effects/defer.rb +3 -1
- data/lib/dry/effects/effects/env.rb +4 -2
- data/lib/dry/effects/effects/fork.rb +3 -1
- data/lib/dry/effects/effects/implicit.rb +4 -2
- data/lib/dry/effects/effects/interrupt.rb +4 -2
- data/lib/dry/effects/effects/lock.rb +8 -6
- data/lib/dry/effects/effects/parallel.rb +4 -2
- data/lib/dry/effects/effects/random.rb +5 -3
- data/lib/dry/effects/effects/reader.rb +1 -1
- data/lib/dry/effects/effects/resolve.rb +23 -3
- data/lib/dry/effects/effects/retry.rb +4 -2
- data/lib/dry/effects/effects/state.rb +4 -2
- data/lib/dry/effects/effects/timeout.rb +3 -1
- data/lib/dry/effects/effects/timestamp.rb +3 -1
- data/lib/dry/effects/errors.rb +4 -4
- data/lib/dry/effects/extensions/active_support/tagged_logging.rb +13 -0
- data/lib/dry/effects/extensions/auto_inject.rb +5 -5
- data/lib/dry/effects/extensions/system.rb +8 -7
- data/lib/dry/effects/extensions.rb +12 -4
- data/lib/dry/effects/frame.rb +30 -9
- data/lib/dry/effects/halt.rb +3 -3
- data/lib/dry/effects/handler.rb +1 -1
- data/lib/dry/effects/inflector.rb +1 -1
- data/lib/dry/effects/initializer.rb +17 -16
- data/lib/dry/effects/instruction.rb +1 -1
- data/lib/dry/effects/instructions/execute.rb +2 -1
- data/lib/dry/effects/instructions/raise.rb +2 -1
- data/lib/dry/effects/provider/class_interface.rb +2 -2
- data/lib/dry/effects/provider.rb +2 -2
- data/lib/dry/effects/providers/async.rb +2 -2
- data/lib/dry/effects/providers/cache.rb +2 -2
- data/lib/dry/effects/providers/cmp.rb +1 -1
- data/lib/dry/effects/providers/current_time/time_generators.rb +1 -1
- data/lib/dry/effects/providers/current_time.rb +5 -5
- data/lib/dry/effects/providers/defer.rb +6 -6
- data/lib/dry/effects/providers/env.rb +2 -2
- data/lib/dry/effects/providers/fork.rb +2 -2
- data/lib/dry/effects/providers/implicit.rb +1 -1
- data/lib/dry/effects/providers/interrupt.rb +3 -3
- data/lib/dry/effects/providers/lock.rb +6 -8
- data/lib/dry/effects/providers/parallel.rb +3 -3
- data/lib/dry/effects/providers/random.rb +74 -2
- data/lib/dry/effects/providers/reader.rb +1 -1
- data/lib/dry/effects/providers/resolve.rb +8 -7
- data/lib/dry/effects/providers/retry.rb +5 -7
- data/lib/dry/effects/providers/state.rb +2 -2
- data/lib/dry/effects/providers/timeout.rb +2 -2
- data/lib/dry/effects/providers/timestamp.rb +2 -2
- data/lib/dry/effects/stack.rb +6 -6
- data/lib/dry/effects/version.rb +1 -1
- data/lib/dry/effects.rb +7 -7
- metadata +22 -69
- data/.codeclimate.yml +0 -12
- data/.github/ISSUE_TEMPLATE/----please-don-t-ask-for-support-via-issues.md +0 -10
- data/.github/ISSUE_TEMPLATE/---bug-report.md +0 -30
- data/.github/ISSUE_TEMPLATE/---feature-request.md +0 -18
- data/.github/workflows/ci.yml +0 -74
- data/.github/workflows/docsite.yml +0 -34
- data/.github/workflows/sync_configs.yml +0 -34
- data/.gitignore +0 -12
- data/.rspec +0 -4
- data/.rubocop.yml +0 -95
- data/CODE_OF_CONDUCT.md +0 -13
- data/CONTRIBUTING.md +0 -29
- data/Gemfile +0 -23
- data/Rakefile +0 -8
- data/docsite/source/effects/cache.html.md +0 -84
- data/docsite/source/effects/current_time.html.md +0 -186
- data/docsite/source/effects/defer.html.md +0 -130
- data/docsite/source/effects/env.html.md +0 -144
- data/docsite/source/effects/interrupt.html.md +0 -109
- data/docsite/source/effects/parallel.html.md +0 -25
- data/docsite/source/effects/reader.html.md +0 -126
- data/docsite/source/effects/resolve.html.md +0 -188
- data/docsite/source/effects/state.html.md +0 -178
- data/docsite/source/effects/timeout.html.md +0 -42
- data/docsite/source/effects.html.md +0 -29
- data/docsite/source/index.html.md +0 -212
- data/examples/cmp.rb +0 -51
- data/examples/state.rb +0 -29
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "dry/effects/provider"
|
4
|
+
require "dry/effects/halt"
|
5
5
|
|
6
6
|
module Dry
|
7
7
|
module Effects
|
@@ -18,15 +18,13 @@ module Dry
|
|
18
18
|
# Yield the block with the handler installed
|
19
19
|
#
|
20
20
|
# @api private
|
21
|
-
def call(limit)
|
21
|
+
def call(limit, &block)
|
22
22
|
@limit = limit
|
23
23
|
@attempts = 0
|
24
24
|
|
25
25
|
loop do
|
26
|
-
|
27
|
-
|
28
|
-
rescue halt
|
29
|
-
end
|
26
|
+
return attempt(&block)
|
27
|
+
rescue halt # rubocop:disable Lint/SuppressedException
|
30
28
|
end
|
31
29
|
end
|
32
30
|
|
@@ -1,12 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "dry/effects/provider"
|
4
4
|
|
5
5
|
module Dry
|
6
6
|
module Effects
|
7
7
|
module Providers
|
8
8
|
class Timeout < Provider[:timeout]
|
9
|
-
def self.handle_method(
|
9
|
+
def self.handle_method(_scope, as: Undefined, **)
|
10
10
|
Undefined.default(as) { :with_timeout }
|
11
11
|
end
|
12
12
|
|
data/lib/dry/effects/stack.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require "dry/effects/initializer"
|
4
|
+
require "dry/effects/effect"
|
5
|
+
require "dry/effects/instructions/raise"
|
6
6
|
|
7
7
|
module Dry
|
8
8
|
module Effects
|
@@ -23,7 +23,7 @@ module Dry
|
|
23
23
|
else
|
24
24
|
yield
|
25
25
|
end
|
26
|
-
rescue ::Exception => e
|
26
|
+
rescue ::Exception => e # rubocop:disable Lint/RescueException
|
27
27
|
Instructions::Raise.new(e)
|
28
28
|
end
|
29
29
|
|
@@ -56,9 +56,9 @@ module Dry
|
|
56
56
|
|
57
57
|
def to_s
|
58
58
|
if empty?
|
59
|
-
|
59
|
+
"#<Dry::Effects::Stack>"
|
60
60
|
else
|
61
|
-
stack = map(&:represent).reverse.join(
|
61
|
+
stack = map(&:represent).reverse.join("->")
|
62
62
|
|
63
63
|
"#<Dry::Effects::Stack #{stack}>"
|
64
64
|
end
|
data/lib/dry/effects/version.rb
CHANGED
data/lib/dry/effects.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
3
|
+
require "dry/core/constants"
|
4
|
+
require "dry/effects/version"
|
5
|
+
require "dry/effects/container"
|
6
|
+
require "dry/effects/errors"
|
7
|
+
require "dry/effects/instructions/raise"
|
8
8
|
|
9
9
|
module Dry
|
10
10
|
module Effects
|
@@ -69,5 +69,5 @@ module Dry
|
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
-
require
|
73
|
-
require
|
72
|
+
require "dry/effects/all"
|
73
|
+
require "dry/effects/extensions"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry-effects
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nikita Shilnikov
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -50,40 +50,20 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '0.
|
53
|
+
version: '0.5'
|
54
54
|
- - ">="
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: 0.
|
56
|
+
version: '0.5'
|
57
57
|
type: :runtime
|
58
58
|
prerelease: false
|
59
59
|
version_requirements: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
61
|
- - "~>"
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: '0.
|
63
|
+
version: '0.5'
|
64
64
|
- - ">="
|
65
65
|
- !ruby/object:Gem::Version
|
66
|
-
version: 0.
|
67
|
-
- !ruby/object:Gem::Dependency
|
68
|
-
name: dry-equalizer
|
69
|
-
requirement: !ruby/object:Gem::Requirement
|
70
|
-
requirements:
|
71
|
-
- - "~>"
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
version: '0.2'
|
74
|
-
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: 0.2.2
|
77
|
-
type: :runtime
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
80
|
-
requirements:
|
81
|
-
- - "~>"
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: '0.2'
|
84
|
-
- - ">="
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
version: 0.2.2
|
66
|
+
version: '0.5'
|
87
67
|
- !ruby/object:Gem::Dependency
|
88
68
|
name: dry-inflector
|
89
69
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,69 +116,41 @@ dependencies:
|
|
136
116
|
name: rake
|
137
117
|
requirement: !ruby/object:Gem::Requirement
|
138
118
|
requirements:
|
139
|
-
- - "
|
119
|
+
- - ">="
|
140
120
|
- !ruby/object:Gem::Version
|
141
|
-
version: '
|
121
|
+
version: '0'
|
142
122
|
type: :development
|
143
123
|
prerelease: false
|
144
124
|
version_requirements: !ruby/object:Gem::Requirement
|
145
125
|
requirements:
|
146
|
-
- - "
|
126
|
+
- - ">="
|
147
127
|
- !ruby/object:Gem::Version
|
148
|
-
version: '
|
128
|
+
version: '0'
|
149
129
|
- !ruby/object:Gem::Dependency
|
150
130
|
name: rspec
|
151
131
|
requirement: !ruby/object:Gem::Requirement
|
152
132
|
requirements:
|
153
|
-
- - "
|
133
|
+
- - ">="
|
154
134
|
- !ruby/object:Gem::Version
|
155
|
-
version: '
|
135
|
+
version: '0'
|
156
136
|
type: :development
|
157
137
|
prerelease: false
|
158
138
|
version_requirements: !ruby/object:Gem::Requirement
|
159
139
|
requirements:
|
160
|
-
- - "
|
140
|
+
- - ">="
|
161
141
|
- !ruby/object:Gem::Version
|
162
|
-
version: '
|
163
|
-
description: Algebraic effects
|
142
|
+
version: '0'
|
143
|
+
description: Algebraic effects
|
164
144
|
email:
|
165
145
|
- fg@flashgordon.ru
|
166
146
|
executables: []
|
167
147
|
extensions: []
|
168
148
|
extra_rdoc_files: []
|
169
149
|
files:
|
170
|
-
- ".codeclimate.yml"
|
171
|
-
- ".github/ISSUE_TEMPLATE/----please-don-t-ask-for-support-via-issues.md"
|
172
|
-
- ".github/ISSUE_TEMPLATE/---bug-report.md"
|
173
|
-
- ".github/ISSUE_TEMPLATE/---feature-request.md"
|
174
|
-
- ".github/workflows/ci.yml"
|
175
|
-
- ".github/workflows/docsite.yml"
|
176
|
-
- ".github/workflows/sync_configs.yml"
|
177
|
-
- ".gitignore"
|
178
|
-
- ".rspec"
|
179
|
-
- ".rubocop.yml"
|
180
150
|
- CHANGELOG.md
|
181
|
-
- CODE_OF_CONDUCT.md
|
182
|
-
- CONTRIBUTING.md
|
183
|
-
- Gemfile
|
184
151
|
- LICENSE
|
185
152
|
- README.md
|
186
|
-
- Rakefile
|
187
|
-
- docsite/source/effects.html.md
|
188
|
-
- docsite/source/effects/cache.html.md
|
189
|
-
- docsite/source/effects/current_time.html.md
|
190
|
-
- docsite/source/effects/defer.html.md
|
191
|
-
- docsite/source/effects/env.html.md
|
192
|
-
- docsite/source/effects/interrupt.html.md
|
193
|
-
- docsite/source/effects/parallel.html.md
|
194
|
-
- docsite/source/effects/reader.html.md
|
195
|
-
- docsite/source/effects/resolve.html.md
|
196
|
-
- docsite/source/effects/state.html.md
|
197
|
-
- docsite/source/effects/timeout.html.md
|
198
|
-
- docsite/source/index.html.md
|
199
153
|
- dry-effects.gemspec
|
200
|
-
- examples/cmp.rb
|
201
|
-
- examples/state.rb
|
202
154
|
- lib/dry/effects.rb
|
203
155
|
- lib/dry/effects/all.rb
|
204
156
|
- lib/dry/effects/constructors.rb
|
@@ -224,6 +176,7 @@ files:
|
|
224
176
|
- lib/dry/effects/effects/timestamp.rb
|
225
177
|
- lib/dry/effects/errors.rb
|
226
178
|
- lib/dry/effects/extensions.rb
|
179
|
+
- lib/dry/effects/extensions/active_support/tagged_logging.rb
|
227
180
|
- lib/dry/effects/extensions/auto_inject.rb
|
228
181
|
- lib/dry/effects/extensions/rspec.rb
|
229
182
|
- lib/dry/effects/extensions/system.rb
|
@@ -258,12 +211,12 @@ files:
|
|
258
211
|
- lib/dry/effects/providers/timestamp.rb
|
259
212
|
- lib/dry/effects/stack.rb
|
260
213
|
- lib/dry/effects/version.rb
|
261
|
-
homepage: https://
|
214
|
+
homepage: https://dry-rb.org/gems/dry-effects
|
262
215
|
licenses:
|
263
216
|
- MIT
|
264
217
|
metadata:
|
265
218
|
allowed_push_host: https://rubygems.org
|
266
|
-
|
219
|
+
changelog_uri: https://github.com/dry-rb/dry-effects/blob/master/CHANGELOG.md
|
267
220
|
source_code_uri: https://github.com/dry-rb/dry-effects
|
268
221
|
bug_tracker_uri: https://github.com/dry-rb/dry-effects/issues
|
269
222
|
post_install_message:
|
@@ -274,15 +227,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
274
227
|
requirements:
|
275
228
|
- - ">="
|
276
229
|
- !ruby/object:Gem::Version
|
277
|
-
version:
|
230
|
+
version: 2.6.0
|
278
231
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
279
232
|
requirements:
|
280
233
|
- - ">="
|
281
234
|
- !ruby/object:Gem::Version
|
282
235
|
version: '0'
|
283
236
|
requirements: []
|
284
|
-
rubygems_version: 3.
|
237
|
+
rubygems_version: 3.1.6
|
285
238
|
signing_key:
|
286
239
|
specification_version: 4
|
287
|
-
summary: Algebraic effects
|
240
|
+
summary: Algebraic effects
|
288
241
|
test_files: []
|
data/.codeclimate.yml
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
---
|
2
|
-
name: "\U0001F41B Bug report"
|
3
|
-
about: See CONTRIBUTING.md for more information
|
4
|
-
title: ''
|
5
|
-
labels: bug
|
6
|
-
assignees: ''
|
7
|
-
|
8
|
-
---
|
9
|
-
|
10
|
-
**Before you submit this: WE ONLY ACCEPT BUG REPORTS AND FEATURE REQUESTS**
|
11
|
-
|
12
|
-
For more information see `CONTRIBUTING.md`.
|
13
|
-
|
14
|
-
**Describe the bug**
|
15
|
-
|
16
|
-
A clear and concise description of what the bug is.
|
17
|
-
|
18
|
-
**To Reproduce**
|
19
|
-
|
20
|
-
Provide detailed steps to reproduce, an executable script would be best.
|
21
|
-
|
22
|
-
**Expected behavior**
|
23
|
-
|
24
|
-
A clear and concise description of what you expected to happen.
|
25
|
-
|
26
|
-
**Your environment**
|
27
|
-
|
28
|
-
- Affects my production application: **YES/NO**
|
29
|
-
- Ruby version: ...
|
30
|
-
- OS: ...
|
@@ -1,18 +0,0 @@
|
|
1
|
-
---
|
2
|
-
name: "\U0001F6E0 Feature request"
|
3
|
-
about: See CONTRIBUTING.md for more information
|
4
|
-
title: ''
|
5
|
-
labels: feature
|
6
|
-
assignees: ''
|
7
|
-
|
8
|
-
---
|
9
|
-
|
10
|
-
Summary of what the feature is supposed to do.
|
11
|
-
|
12
|
-
## Examples
|
13
|
-
|
14
|
-
Code examples showing how the feature could be used.
|
15
|
-
|
16
|
-
## Resources
|
17
|
-
|
18
|
-
Additional information, like a link to the discussion forum thread where the feature was discussed etc.
|
data/.github/workflows/ci.yml
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
# this file is managed by dry-rb/devtools project
|
2
|
-
|
3
|
-
name: ci
|
4
|
-
|
5
|
-
on:
|
6
|
-
push:
|
7
|
-
paths:
|
8
|
-
- .github/workflows/ci.yml
|
9
|
-
- lib/**
|
10
|
-
- spec/**
|
11
|
-
- Gemfile
|
12
|
-
- "*.gemspec"
|
13
|
-
|
14
|
-
jobs:
|
15
|
-
tests-mri:
|
16
|
-
runs-on: ubuntu-latest
|
17
|
-
strategy:
|
18
|
-
fail-fast: false
|
19
|
-
matrix:
|
20
|
-
ruby: ["2.6.x", "2.5.x", "2.4.x"]
|
21
|
-
include:
|
22
|
-
- ruby: "2.6.x"
|
23
|
-
coverage: "true"
|
24
|
-
steps:
|
25
|
-
- uses: actions/checkout@v1
|
26
|
-
- name: Set up Ruby
|
27
|
-
uses: actions/setup-ruby@v1
|
28
|
-
with:
|
29
|
-
ruby-version: ${{matrix.ruby}}
|
30
|
-
- name: Download test reporter
|
31
|
-
if: "matrix.coverage == 'true'"
|
32
|
-
run: |
|
33
|
-
mkdir -p tmp/
|
34
|
-
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./tmp/cc-test-reporter
|
35
|
-
chmod +x ./tmp/cc-test-reporter
|
36
|
-
./tmp/cc-test-reporter before-build
|
37
|
-
- name: Run all tests
|
38
|
-
env:
|
39
|
-
COVERAGE: ${{matrix.coverage}}
|
40
|
-
run: |
|
41
|
-
gem install bundler
|
42
|
-
bundle install --jobs 4 --retry 3 --without tools docs benchmarks
|
43
|
-
bundle exec rake
|
44
|
-
- name: Send coverage results
|
45
|
-
if: "matrix.coverage == 'true'"
|
46
|
-
env:
|
47
|
-
CC_TEST_REPORTER_ID: ${{secrets.CC_TEST_REPORTER_ID}}
|
48
|
-
GIT_COMMIT_SHA: ${{github.sha}}
|
49
|
-
GIT_BRANCH: ${{github.ref}}
|
50
|
-
GIT_COMMITTED_AT: ${{github.event.head_commit.timestamp}}
|
51
|
-
run: |
|
52
|
-
GIT_BRANCH=`ruby -e "puts ENV['GITHUB_REF'].split('/', 3).last"` \
|
53
|
-
GIT_COMMITTED_AT=`ruby -r time -e "puts Time.iso8601(ENV['GIT_COMMITTED_AT']).to_i"` \
|
54
|
-
./tmp/cc-test-reporter after-build
|
55
|
-
|
56
|
-
tests-others:
|
57
|
-
runs-on: ubuntu-latest
|
58
|
-
strategy:
|
59
|
-
fail-fast: false
|
60
|
-
matrix:
|
61
|
-
image: ["jruby:9.2.8", "ruby:rc"]
|
62
|
-
container:
|
63
|
-
image: ${{matrix.image}}
|
64
|
-
steps:
|
65
|
-
- uses: actions/checkout@v1
|
66
|
-
- name: Install git
|
67
|
-
run: |
|
68
|
-
apt-get update
|
69
|
-
apt-get install -y --no-install-recommends git
|
70
|
-
- name: Run all tests
|
71
|
-
run: |
|
72
|
-
gem install bundler
|
73
|
-
bundle install --jobs 4 --retry 3 --without tools docs benchmarks
|
74
|
-
bundle exec rspec
|