light_service_object 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b0131044b44de19c76bbc250f966457b3bc2cc89ea20c03cd749d293ddd61d5b
4
- data.tar.gz: b3c794b42cb56463c37c91b6fd86a39e52da5ace9229ee83ed320126f76c9a4b
3
+ metadata.gz: fe7f5ce500fc97da2f221d27f178dadce48bfd13cc6241cb1f934e52af591761
4
+ data.tar.gz: d21d1c296cc99aef3600d6a49a4d0275cdc98c42387b97f88b29efba210b70a8
5
5
  SHA512:
6
- metadata.gz: 4503fc8bf681fb8d86799c0a4c39b5c43ca3ed0768e8360b5aad93f44e349f3198b5f6c06fcf9897e71e945688c07932bb368c86a1935d0b909975fda0b0ac6a
7
- data.tar.gz: b7f841ced31db2a9e92c106f9e3fc1e073b067602e5b5d236d1933a9c6238abf5e16f583dcf01b3257b0cb715d19181b3e358cefb4983b466c2120b0e2ead350
6
+ metadata.gz: e288b1a3b6da66486d7adabe406689af6bb970ff74709be254ed60f931dc0bda9665b9011d207f93acdf991cc0e2020d883a7d64f7f0dcebdd24ecee78cbdd05
7
+ data.tar.gz: ecdc7a15394eeb532ac5f73711c57f8c89a7f4919bce77f2554e5a7728353864dff7ffa499bf7831277efca523c1e3506f744055b481119722c53352afb432a0
@@ -34,6 +34,12 @@ module LightServiceObject
34
34
  extend Dry::Initializer
35
35
  include Dry::Monads::Result::Mixin
36
36
 
37
+
38
+ ## — CLASS METHODS
39
+ def self.result_class
40
+ @result_class
41
+ end
42
+
37
43
  def self.param(key, **options)
38
44
  raise Error.new("Do not use param in a service object")
39
45
  end
@@ -52,10 +58,6 @@ module LightServiceObject
52
58
  @result_class = klass.constantize if klass.is_a?(String)
53
59
  end
54
60
 
55
- class << self
56
- attr_reader :result_class
57
- end
58
-
59
61
  def self.call(**options)
60
62
  obj = self.new(**options)
61
63
 
@@ -65,6 +67,15 @@ module LightServiceObject
65
67
  # ap("#{self.name} > Unknown Parameters #{unknown_params}") if unknown_params.present?
66
68
 
67
69
  result = obj.call
70
+ end
71
+
72
+ ## — INSTANCE METHODS
73
+ def result_class
74
+ self.class.result_class
75
+ end
76
+
77
+ def call
78
+ result = self.perform
68
79
  if self.result_class.present?
69
80
  if !result.is_a?(self.result_class)
70
81
  a_name = "#{self.result_class}"
@@ -73,24 +84,20 @@ module LightServiceObject
73
84
  fail!("#{self.name} is not returning #{a_name}")
74
85
  end
75
86
  end
76
-
77
87
  Dry::Monads.Success(result)
78
88
  rescue StandardError => error
79
- self.failed(error)
80
- Dry::Monads.Failure("#{self}: #{error}")
89
+ reason = self.error_reason(error)
90
+ Dry::Monads.Failure(reason)
81
91
  end
82
92
 
83
93
  def fail!(error)
84
- raise (error.is_a?(String) ? ::StandardError.new(error) : error)
94
+ error = ::StandardError.new(error.to_s) if !error.is_a?(::StandardError)
95
+ raise error
85
96
  end
86
97
 
87
- def self.failed(error)
98
+ def error_reason(error)
88
99
  # Give subclasses a chance to see errors first
100
+ "#{self}: #{error}"
89
101
  end
90
-
91
- private
92
-
93
- def call
94
- end
95
102
  end
96
103
  end
@@ -1,3 +1,3 @@
1
1
  module LightServiceObject
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  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.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Sharpe
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-03-01 00:00:00.000000000 Z
11
+ date: 2019-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler