dry-effects 0.1.5 → 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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -0
  3. data/LICENSE +1 -1
  4. data/README.md +5 -4
  5. data/dry-effects.gemspec +15 -15
  6. data/lib/dry/effects/all.rb +3 -3
  7. data/lib/dry/effects/container.rb +1 -1
  8. data/lib/dry/effects/effect.rb +2 -2
  9. data/lib/dry/effects/effects/async.rb +3 -1
  10. data/lib/dry/effects/effects/cache.rb +13 -9
  11. data/lib/dry/effects/effects/cmp.rb +3 -1
  12. data/lib/dry/effects/effects/current_time.rb +4 -2
  13. data/lib/dry/effects/effects/defer.rb +3 -1
  14. data/lib/dry/effects/effects/env.rb +3 -1
  15. data/lib/dry/effects/effects/fork.rb +3 -1
  16. data/lib/dry/effects/effects/implicit.rb +3 -1
  17. data/lib/dry/effects/effects/interrupt.rb +3 -1
  18. data/lib/dry/effects/effects/lock.rb +3 -1
  19. data/lib/dry/effects/effects/parallel.rb +3 -1
  20. data/lib/dry/effects/effects/random.rb +3 -1
  21. data/lib/dry/effects/effects/reader.rb +1 -1
  22. data/lib/dry/effects/effects/resolve.rb +23 -3
  23. data/lib/dry/effects/effects/retry.rb +4 -2
  24. data/lib/dry/effects/effects/state.rb +4 -2
  25. data/lib/dry/effects/effects/timeout.rb +3 -1
  26. data/lib/dry/effects/effects/timestamp.rb +3 -1
  27. data/lib/dry/effects/errors.rb +4 -4
  28. data/lib/dry/effects/extensions/active_support/tagged_logging.rb +1 -1
  29. data/lib/dry/effects/extensions/auto_inject.rb +5 -5
  30. data/lib/dry/effects/extensions/system.rb +8 -7
  31. data/lib/dry/effects/extensions.rb +5 -5
  32. data/lib/dry/effects/frame.rb +30 -9
  33. data/lib/dry/effects/halt.rb +3 -3
  34. data/lib/dry/effects/handler.rb +1 -1
  35. data/lib/dry/effects/inflector.rb +1 -1
  36. data/lib/dry/effects/initializer.rb +16 -16
  37. data/lib/dry/effects/instruction.rb +1 -1
  38. data/lib/dry/effects/instructions/execute.rb +2 -1
  39. data/lib/dry/effects/instructions/raise.rb +2 -1
  40. data/lib/dry/effects/provider/class_interface.rb +2 -2
  41. data/lib/dry/effects/provider.rb +2 -2
  42. data/lib/dry/effects/providers/async.rb +2 -2
  43. data/lib/dry/effects/providers/cache.rb +2 -2
  44. data/lib/dry/effects/providers/cmp.rb +1 -1
  45. data/lib/dry/effects/providers/current_time/time_generators.rb +1 -1
  46. data/lib/dry/effects/providers/current_time.rb +5 -5
  47. data/lib/dry/effects/providers/defer.rb +6 -6
  48. data/lib/dry/effects/providers/env.rb +2 -2
  49. data/lib/dry/effects/providers/fork.rb +2 -2
  50. data/lib/dry/effects/providers/implicit.rb +1 -1
  51. data/lib/dry/effects/providers/interrupt.rb +3 -3
  52. data/lib/dry/effects/providers/lock.rb +6 -8
  53. data/lib/dry/effects/providers/parallel.rb +3 -3
  54. data/lib/dry/effects/providers/random.rb +5 -4
  55. data/lib/dry/effects/providers/reader.rb +1 -1
  56. data/lib/dry/effects/providers/resolve.rb +8 -7
  57. data/lib/dry/effects/providers/retry.rb +5 -7
  58. data/lib/dry/effects/providers/state.rb +2 -2
  59. data/lib/dry/effects/providers/timeout.rb +2 -2
  60. data/lib/dry/effects/providers/timestamp.rb +2 -2
  61. data/lib/dry/effects/stack.rb +6 -6
  62. data/lib/dry/effects/version.rb +1 -1
  63. data/lib/dry/effects.rb +7 -7
  64. metadata +8 -28
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry/effects/provider'
3
+ require "dry/effects/provider"
4
4
 
5
5
  module Dry
6
6
  module Effects
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry/effects/provider'
3
+ require "dry/effects/provider"
4
4
 
5
5
  module Dry
6
6
  module Effects
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'time'
4
- require 'dry/effects/provider'
5
- require 'dry/effects/providers/current_time/time_generators'
3
+ require "time"
4
+ require "dry/effects/provider"
5
+ require "dry/effects/providers/current_time/time_generators"
6
6
 
7
7
  module Dry
8
8
  module Effects
@@ -55,12 +55,12 @@ module Dry
55
55
  def represent
56
56
  if fixed?
57
57
  if generator.nil?
58
- 'current_time[fixed=true]'
58
+ "current_time[fixed=true]"
59
59
  else
60
60
  "current_time[fixed=#{generator.().iso8601(6)}]"
61
61
  end
62
62
  else
63
- 'current_time[fixed=false]'
63
+ "current_time[fixed=false]"
64
64
  end
65
65
  end
66
66
 
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'concurrent/promise'
4
- require 'dry/effects/provider'
5
- require 'dry/effects/frame'
3
+ require "concurrent/promise"
4
+ require "dry/effects/provider"
5
+ require "dry/effects/frame"
6
6
 
7
7
  module Dry
8
8
  module Effects
@@ -51,7 +51,7 @@ module Dry
51
51
  # Yield the block with the handler installed
52
52
  #
53
53
  # @api private
54
- def call(options = { executor: Undefined })
54
+ def call(options = {executor: Undefined})
55
55
  unless Undefined.equal?(options[:executor])
56
56
  @executor = options[:executor]
57
57
  end
@@ -79,9 +79,9 @@ module Dry
79
79
  info << "call_later=#{later_calls.size}" if later_calls.any?
80
80
 
81
81
  if info.empty?
82
- 'defer'
82
+ "defer"
83
83
  else
84
- "defer[#{info.join(' ')}]"
84
+ "defer[#{info.join(" ")}]"
85
85
  end
86
86
  end
87
87
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry/effects/provider'
4
- require 'dry/effects/instructions/raise'
3
+ require "dry/effects/provider"
4
+ require "dry/effects/instructions/raise"
5
5
 
6
6
  module Dry
7
7
  module Effects
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry/effects/provider'
4
- require 'dry/effects/frame'
3
+ require "dry/effects/provider"
4
+ require "dry/effects/frame"
5
5
 
6
6
  module Dry
7
7
  module Effects
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry/effects/provider'
3
+ require "dry/effects/provider"
4
4
 
5
5
  module Dry
6
6
  module Effects
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry/effects/provider'
4
- require 'dry/effects/instructions/raise'
5
- require 'dry/effects/halt'
3
+ require "dry/effects/provider"
4
+ require "dry/effects/instructions/raise"
5
+ require "dry/effects/halt"
6
6
 
7
7
  module Dry
8
8
  module Effects
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry/equalizer'
4
- require 'dry/effects/provider'
5
- require 'dry/effects/initializer'
3
+ require "dry/core/equalizer"
4
+ require "dry/effects/provider"
5
+ require "dry/effects/initializer"
6
6
 
7
7
  module Dry
8
8
  module Effects
@@ -96,11 +96,9 @@ module Dry
96
96
  end
97
97
 
98
98
  with_backend(backend_replace) do
99
- begin
100
- yield
101
- ensure
102
- owned.each { |handle| unlock(handle) }
103
- end
99
+ yield
100
+ ensure
101
+ owned.each { |handle| unlock(handle) }
104
102
  end
105
103
  end
106
104
 
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'concurrent/promise'
4
- require 'dry/effects/provider'
5
- require 'dry/effects/frame'
3
+ require "concurrent/promise"
4
+ require "dry/effects/provider"
5
+ require "dry/effects/frame"
6
6
 
7
7
  module Dry
8
8
  module Effects
@@ -1,14 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry/effects/provider'
3
+ require "dry/effects/provider"
4
4
 
5
5
  module Dry
6
6
  module Effects
7
7
  module Providers
8
8
  class Random < Provider[:random]
9
- DEFAULT = -> _ { ::Random::DEFAULT.rand }
9
+ DEFAULT_RANDOM = ::Random
10
+ DEFAULT = -> _ { DEFAULT_RANDOM.rand }
10
11
 
11
- DEFAULT_RANGE = 0.0...1.0
12
+ DEFAULT_RANGE = (0.0...1.0).freeze
12
13
 
13
14
  def rand(range_or_limit = nil)
14
15
  range_or_limit ||= DEFAULT_RANGE
@@ -66,7 +67,7 @@ module Dry
66
67
  if options.key?(:seed)
67
68
  random = ::Random.new(options[:seed])
68
69
  else
69
- random = ::Random::DEFAULT
70
+ random = DEFAULT_RANDOM
70
71
  end
71
72
 
72
73
  -> _ { random.rand }
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry/effects/provider'
3
+ require "dry/effects/provider"
4
4
 
5
5
  module Dry
6
6
  module Effects
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry/effects/provider'
4
- require 'dry/effects/instructions/raise'
3
+ require "dry/effects/provider"
4
+ require "dry/effects/instructions/raise"
5
5
 
6
6
  module Dry
7
7
  module Effects
@@ -84,16 +84,17 @@ module Dry
84
84
  # @return [String]
85
85
  # @api public
86
86
  def represent
87
- containers = [represent_container(static), represent_container(dynamic)].compact.join('+')
88
- "resolve[#{containers.empty? ? 'empty' : containers}]"
87
+ containers = [represent_container(static), represent_container(dynamic)].compact.join("+")
88
+ "resolve[#{containers.empty? ? "empty" : containers}]"
89
89
  end
90
90
 
91
91
  # @return [String]
92
92
  # @api private
93
93
  def represent_container(container)
94
- if container.is_a?(::Hash)
95
- container.empty? ? nil : 'hash'
96
- elsif container.is_a?(::Class)
94
+ case container
95
+ when ::Hash
96
+ container.empty? ? nil : "hash"
97
+ when ::Class
97
98
  container.name || container.to_s
98
99
  else
99
100
  container.to_s
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry/effects/provider'
4
- require 'dry/effects/halt'
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
- begin
27
- return attempt { yield }
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,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry/effects/providers/reader'
4
- require 'dry/effects/instructions/raise'
3
+ require "dry/effects/providers/reader"
4
+ require "dry/effects/instructions/raise"
5
5
 
6
6
  module Dry
7
7
  module Effects
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry/effects/provider'
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(scope, as: Undefined, **)
9
+ def self.handle_method(_scope, as: Undefined, **)
10
10
  Undefined.default(as) { :with_timeout }
11
11
  end
12
12
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry/effects/provider'
4
- require 'dry/effects/providers/current_time'
3
+ require "dry/effects/provider"
4
+ require "dry/effects/providers/current_time"
5
5
 
6
6
  module Dry
7
7
  module Effects
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry/effects/initializer'
4
- require 'dry/effects/effect'
5
- require 'dry/effects/instructions/raise'
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
- '#<Dry::Effects::Stack>'
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Dry
4
4
  module Effects
5
- VERSION = '0.1.5'
5
+ VERSION = "0.2.0"
6
6
  end
7
7
  end
data/lib/dry/effects.rb CHANGED
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
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'
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 'dry/effects/all'
73
- require 'dry/effects/extensions'
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.1.5
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikita Shilnikov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-09 00:00:00.000000000 Z
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.4'
53
+ version: '0.5'
54
54
  - - ">="
55
55
  - !ruby/object:Gem::Version
56
- version: 0.4.7
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.4'
63
+ version: '0.5'
64
64
  - - ">="
65
65
  - !ruby/object:Gem::Version
66
- version: 0.4.7
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
@@ -247,14 +227,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
247
227
  requirements:
248
228
  - - ">="
249
229
  - !ruby/object:Gem::Version
250
- version: 2.4.0
230
+ version: 2.6.0
251
231
  required_rubygems_version: !ruby/object:Gem::Requirement
252
232
  requirements:
253
233
  - - ">="
254
234
  - !ruby/object:Gem::Version
255
235
  version: '0'
256
236
  requirements: []
257
- rubygems_version: 3.0.3
237
+ rubygems_version: 3.1.6
258
238
  signing_key:
259
239
  specification_version: 4
260
240
  summary: Algebraic effects