light_service_object 0.1.7 → 0.1.12

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e700271db3a2b52514ce8b2174a4f955c1926c70b60f370ecdcd69e71698b4dc
4
- data.tar.gz: d13ece90b9a57c819b6b028ec19a0dc88d60af261883c8862bffe7d856b09986
3
+ metadata.gz: 1ea1d00ece72f1a9f36a79c9b517dc82aa221bced9a62963920ea0db502201d1
4
+ data.tar.gz: e01b4289b44e837f55942b06305d937151b57496d393330839554e3f8ea227ad
5
5
  SHA512:
6
- metadata.gz: '095296979110b150d06f473690212b2a9085e6595367622649b01eea8b3f4a1df6be9d56b3d9288ac2e60a40fe72faa997197ed34cf3cfc92dc06ed6e86be8c1'
7
- data.tar.gz: 6dac101c8261634d7c099d9ba73505e539021b91a26c9c4f6d7685345bf99eb93197d1772015a359decbfd60c6818a0e775ad62088a577172bee6db248c9fa7a
6
+ metadata.gz: bfd6ad7047fd917f9ef5de75aba3dff65ecfeb0cecf499ffd76e8313d7c38d5512d2a7566b8b8c8a5b307ea7b7a8116b848ff2cc740fc87f515147f23fad943a
7
+ data.tar.gz: c5d7ec2bd6c933b705df7487b077cf55704d082d5e75a369b8998a692e43041f8f770b945a7440a953c6d98003a39816c02078d46fc4c3d89471e826ea854119
data/Gemfile.lock CHANGED
@@ -1,37 +1,37 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- light_service_object (0.1.7)
5
- dry-initializer (~> 2.0)
6
- dry-monads (~> 1.0)
4
+ light_service_object (0.1.12)
5
+ dry-initializer (>= 3.0)
6
+ dry-monads (>= 1.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- concurrent-ruby (1.1.5)
12
- diff-lcs (1.3)
13
- dry-core (0.4.9)
11
+ concurrent-ruby (1.1.9)
12
+ diff-lcs (1.4.4)
13
+ dry-core (0.6.0)
14
14
  concurrent-ruby (~> 1.0)
15
- dry-equalizer (0.2.2)
16
- dry-initializer (2.5.0)
17
- dry-monads (1.3.1)
15
+ dry-equalizer (0.3.0)
16
+ dry-initializer (3.0.4)
17
+ dry-monads (1.3.5)
18
18
  concurrent-ruby (~> 1.0)
19
19
  dry-core (~> 0.4, >= 0.4.4)
20
20
  dry-equalizer
21
- rake (10.5.0)
22
- rspec (3.8.0)
23
- rspec-core (~> 3.8.0)
24
- rspec-expectations (~> 3.8.0)
25
- rspec-mocks (~> 3.8.0)
26
- rspec-core (3.8.2)
27
- rspec-support (~> 3.8.0)
28
- rspec-expectations (3.8.4)
21
+ rake (13.0.3)
22
+ rspec (3.10.0)
23
+ rspec-core (~> 3.10.0)
24
+ rspec-expectations (~> 3.10.0)
25
+ rspec-mocks (~> 3.10.0)
26
+ rspec-core (3.10.1)
27
+ rspec-support (~> 3.10.0)
28
+ rspec-expectations (3.10.1)
29
29
  diff-lcs (>= 1.2.0, < 2.0)
30
- rspec-support (~> 3.8.0)
31
- rspec-mocks (3.8.1)
30
+ rspec-support (~> 3.10.0)
31
+ rspec-mocks (3.10.2)
32
32
  diff-lcs (>= 1.2.0, < 2.0)
33
- rspec-support (~> 3.8.0)
34
- rspec-support (3.8.2)
33
+ rspec-support (~> 3.10.0)
34
+ rspec-support (3.10.2)
35
35
 
36
36
  PLATFORMS
37
37
  ruby
@@ -39,8 +39,8 @@ PLATFORMS
39
39
  DEPENDENCIES
40
40
  bundler (~> 2.0)
41
41
  light_service_object!
42
- rake (~> 10.0)
42
+ rake (>= 12.3.3)
43
43
  rspec (~> 3.0)
44
44
 
45
45
  BUNDLED WITH
46
- 2.0.2
46
+ 2.2.15
data/README.md CHANGED
@@ -54,8 +54,8 @@ class NewServiceObject < LightServiceObject::Base
54
54
  optional :number
55
55
 
56
56
  def perform
57
- fail!("Date is too far away") if date - Date.today >= 7
58
-
57
+ fail!("Date is too far away") if date - Date.today >= 7
58
+
59
59
  number + 10
60
60
  end
61
61
  end
@@ -67,6 +67,9 @@ end
67
67
  - the last thing evaluated will be returned as the result `number + 10`
68
68
  - one side note: all parameters are immutable by default
69
69
 
70
+ ### Why is it Light?
71
+
72
+ It really is just a plain-old-ruby-object (PORO) with `Dry::Initializer` throw in with some syntax grease, and returns a `Dry::Monads::Result` -- that's it.
70
73
 
71
74
  ## Contributing
72
75
 
@@ -21,7 +21,10 @@ if defined?(Ensurance)
21
21
  end
22
22
  klass = klass.klass if klass.is_a?(ActiveRecord::Relation)
23
23
 
24
- coercer = ->(value) { klass.ensure(value) }
24
+ coercer = options[:optional] ?
25
+ ->(value) { klass.ensure(value) } :
26
+ ->(value) { klass.ensure!(value) }
27
+
25
28
  options.merge(type: coercer)
26
29
  end
27
30
 
@@ -48,7 +51,8 @@ module LightServiceObject
48
51
 
49
52
  def option(*args, **opts, &block)
50
53
  if opts.delete(:mutable)
51
- self.send("attr_writer", args.first)
54
+ name = opts[:as] || args.first
55
+ self.send("attr_writer", name)
52
56
  end
53
57
  super(*args, **opts, &block)
54
58
  end
@@ -70,12 +74,10 @@ module LightServiceObject
70
74
  end
71
75
 
72
76
  def call(**options)
73
- begin
74
- obj = self.new(**options)
75
- obj.call
76
- rescue KeyError => error
77
- Dry::Monads.Failure(error.message)
78
- end
77
+ obj = self.new(**options)
78
+ obj.call
79
+ rescue Exception => error
80
+ Dry::Monads.Failure(error.message)
79
81
  end
80
82
  end
81
83
 
@@ -1,3 +1,3 @@
1
1
  module LightServiceObject
2
- VERSION = "0.1.7"
2
+ VERSION = "0.1.12"
3
3
  end
@@ -24,9 +24,9 @@ Gem::Specification.new do |spec|
24
24
  spec.require_paths = ["lib"]
25
25
 
26
26
  spec.add_development_dependency "bundler", "~> 2.0"
27
- spec.add_development_dependency "rake", "~> 10.0"
27
+ spec.add_development_dependency "rake", ">= 12.3.3"
28
28
  spec.add_development_dependency "rspec", "~> 3.0"
29
29
 
30
- spec.add_dependency "dry-initializer", "~> 2.0"
31
- spec.add_dependency "dry-monads", "~> 1.0"
30
+ spec.add_dependency "dry-initializer", ">= 3.0"
31
+ spec.add_dependency "dry-monads", ">= 1.0"
32
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: light_service_object
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Sharpe
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-14 00:00:00.000000000 Z
11
+ date: 2021-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: 12.3.3
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: 12.3.3
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -56,28 +56,28 @@ dependencies:
56
56
  name: dry-initializer
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '2.0'
61
+ version: '3.0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '2.0'
68
+ version: '3.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: dry-monads
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '1.0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '1.0'
83
83
  description: 'Service object based on DRY.rb components for speed and less boilerplate '
@@ -106,7 +106,7 @@ homepage: https://github.com/bsharpe/light_service_object
106
106
  licenses:
107
107
  - MIT
108
108
  metadata: {}
109
- post_install_message:
109
+ post_install_message:
110
110
  rdoc_options: []
111
111
  require_paths:
112
112
  - lib
@@ -121,8 +121,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
121
  - !ruby/object:Gem::Version
122
122
  version: '0'
123
123
  requirements: []
124
- rubygems_version: 3.0.6
125
- signing_key:
124
+ rubygems_version: 3.2.15
125
+ signing_key:
126
126
  specification_version: 4
127
127
  summary: A lightweight base service object for Rails/Ruby
128
128
  test_files: []