resol 0.2.1 → 0.3.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/Gemfile.lock +1 -1
- data/README.md +28 -0
- data/lib/resol/callbacks.rb +27 -0
- data/lib/resol/service.rb +3 -0
- data/lib/resol/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 95f5ea4fd61a180568a08289a20f53847d1709e70c07623086eb588948afa71e
|
4
|
+
data.tar.gz: b425c633f442b13ff8885b840fa792b94f28a6df9037581fe0def1aa7feeffd6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cb48dfe79e77f5ee8bbc71c2c7438d2d414ab72fb428d634dc424d81d4bb7e5be940af252bd5bce2096c216e45e2872c081111c31eb3a3b8863db1eac565acec
|
7
|
+
data.tar.gz: de35e8196047e2af8100be471f1ec1fb1c2a920994215483fac1865089e19b9a5ee09112c0544041bf41f02471208be40ef5c3dace4b7756019dfb963b18eb1a
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -63,6 +63,34 @@ All incoming params and options can be defined using a [smart_initializer](https
|
|
63
63
|
- `success!(value)` – finish with a success value
|
64
64
|
- `fail!(code, data = nil)` – fail with any error code and optional data
|
65
65
|
|
66
|
+
#### Define callbacks
|
67
|
+
|
68
|
+
You can define callbacks to be executed before calling the `#call` method.
|
69
|
+
|
70
|
+
```ruby
|
71
|
+
class FindUser < Resol::Service
|
72
|
+
param :id
|
73
|
+
|
74
|
+
before_call :set_user
|
75
|
+
|
76
|
+
def call
|
77
|
+
if user
|
78
|
+
success!(user)
|
79
|
+
else
|
80
|
+
fail!(:not_found)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
private
|
85
|
+
|
86
|
+
attr_accessor :user
|
87
|
+
|
88
|
+
def set_user
|
89
|
+
self.user = User.find(id)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
```
|
93
|
+
|
66
94
|
### Result objects
|
67
95
|
|
68
96
|
Methods:
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Resol
|
4
|
+
module Callbacks
|
5
|
+
def self.included(base)
|
6
|
+
base.extend(ClassMethods)
|
7
|
+
base.instance_variable_set(:@__callback_methods__, [])
|
8
|
+
end
|
9
|
+
|
10
|
+
module ClassMethods
|
11
|
+
def inherited(subclass)
|
12
|
+
super
|
13
|
+
subclass.instance_variable_set(:@__callback_methods__, @__callback_methods__.dup)
|
14
|
+
end
|
15
|
+
|
16
|
+
def before_call(method_name)
|
17
|
+
@__callback_methods__ << method_name
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def __run_callbacks__(instance)
|
23
|
+
@__callback_methods__.each { |method_name| instance.send(method_name) }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/resol/service.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative "builder"
|
4
|
+
require_relative "callbacks"
|
4
5
|
require_relative "result"
|
5
6
|
|
6
7
|
module Resol
|
@@ -41,6 +42,7 @@ module Resol
|
|
41
42
|
|
42
43
|
include SmartCore::Initializer
|
43
44
|
include Resol::Builder
|
45
|
+
include Resol::Callbacks
|
44
46
|
|
45
47
|
class << self
|
46
48
|
def inherited(klass)
|
@@ -51,6 +53,7 @@ module Resol
|
|
51
53
|
|
52
54
|
def call(*args, &block)
|
53
55
|
command = build(*args)
|
56
|
+
__run_callbacks__(command)
|
54
57
|
command.call(&block)
|
55
58
|
|
56
59
|
error_message = "No success! or fail! called in the #call method in #{command.class}"
|
data/lib/resol/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resol
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aleksei Bespalov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-04-
|
11
|
+
date: 2021-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: smart_initializer
|
@@ -171,6 +171,7 @@ files:
|
|
171
171
|
- bin/setup
|
172
172
|
- lib/resol.rb
|
173
173
|
- lib/resol/builder.rb
|
174
|
+
- lib/resol/callbacks.rb
|
174
175
|
- lib/resol/result.rb
|
175
176
|
- lib/resol/service.rb
|
176
177
|
- lib/resol/version.rb
|