readymade 0.3.0 → 0.3.5
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 +5 -0
- data/Gemfile.lock +10 -12
- data/README.md +38 -0
- data/lib/readymade/action.rb +20 -0
- data/lib/readymade/background_bang_job.rb +13 -0
- data/lib/readymade/version.rb +1 -1
- data/lib/readymade.rb +1 -0
- 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: f6af81b9c83a1dad8f64ead23ebe956ffe8341308c3acef6211a9c76fa5df5fb
|
4
|
+
data.tar.gz: d6cda3a6863ce1330df753de6e6fd51c8f0005e05b0aa8d10534b59eb5b6104f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f05bc204146596fd641f742d6ee2738dfc8db887ddb35c1588f1a1aa1639f80fc334920333206e2392999ea7c01f9db42c585b356ec33cfa9ec528cec0249f2
|
7
|
+
data.tar.gz: 1d7196a1c79a79169bcf865406dca0aa8bdfcfb07d7e659616fe2563260b3dbfcc95ed8f19c3f43eca7242e7acd573648629a90cce803495474b2289cc408d19
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
Changelog
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
|
4
|
+
## [0.4.0] - 2023-06-22
|
5
|
+
|
6
|
+
* Add `.call!` method to `Readymade::Action` to raise an error if not success
|
7
|
+
* Add `.call_async!` method to `Readymade::Action` to raise an error in background if not success
|
8
|
+
|
4
9
|
## [0.3.0] - 2023-03-14
|
5
10
|
|
6
11
|
* Add `.call_async` method to `Readymade::Action` to run service in background
|
data/Gemfile.lock
CHANGED
@@ -1,32 +1,31 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
readymade (0.3.
|
4
|
+
readymade (0.3.5)
|
5
5
|
activejob
|
6
6
|
activemodel
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
activejob (
|
12
|
-
activesupport (=
|
11
|
+
activejob (7.0.5)
|
12
|
+
activesupport (= 7.0.5)
|
13
13
|
globalid (>= 0.3.6)
|
14
|
-
activemodel (
|
15
|
-
activesupport (=
|
16
|
-
activesupport (
|
14
|
+
activemodel (7.0.5)
|
15
|
+
activesupport (= 7.0.5)
|
16
|
+
activesupport (7.0.5)
|
17
17
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
18
18
|
i18n (>= 1.6, < 2)
|
19
19
|
minitest (>= 5.1)
|
20
20
|
tzinfo (~> 2.0)
|
21
|
-
zeitwerk (~> 2.3)
|
22
21
|
byebug (11.1.3)
|
23
|
-
concurrent-ruby (1.
|
22
|
+
concurrent-ruby (1.2.2)
|
24
23
|
diff-lcs (1.4.4)
|
25
24
|
globalid (1.1.0)
|
26
25
|
activesupport (>= 5.0)
|
27
|
-
i18n (1.
|
26
|
+
i18n (1.14.1)
|
28
27
|
concurrent-ruby (~> 1.0)
|
29
|
-
minitest (5.
|
28
|
+
minitest (5.18.1)
|
30
29
|
rake (13.0.6)
|
31
30
|
rspec (3.10.0)
|
32
31
|
rspec-core (~> 3.10.0)
|
@@ -41,9 +40,8 @@ GEM
|
|
41
40
|
diff-lcs (>= 1.2.0, < 2.0)
|
42
41
|
rspec-support (~> 3.10.0)
|
43
42
|
rspec-support (3.10.3)
|
44
|
-
tzinfo (2.0.
|
43
|
+
tzinfo (2.0.6)
|
45
44
|
concurrent-ruby (~> 1.0)
|
46
|
-
zeitwerk (2.5.1)
|
47
45
|
|
48
46
|
PLATFORMS
|
49
47
|
ruby
|
data/README.md
CHANGED
@@ -148,6 +148,44 @@ end
|
|
148
148
|
Orders::Actions::SendNotifications.call_async(order: order)
|
149
149
|
```
|
150
150
|
|
151
|
+
|
152
|
+
### `.call!` - raise error unless response is success
|
153
|
+
(action must return Readymade::Response.new(:success))
|
154
|
+
|
155
|
+
```ruby
|
156
|
+
class Orders::Actions::SendNotifications < Readymade::Action
|
157
|
+
def call!
|
158
|
+
send_email
|
159
|
+
return response(:fail, errors: errors) unless email_sent?
|
160
|
+
send_push
|
161
|
+
send_slack
|
162
|
+
|
163
|
+
response(:success, record: record, any_other_data: data)
|
164
|
+
end
|
165
|
+
...
|
166
|
+
end
|
167
|
+
|
168
|
+
Orders::Actions::SendNotifications.call!(order: order) # raise error if response is fail
|
169
|
+
```
|
170
|
+
### `.call_async!` - runs in background and raise error unless response is success
|
171
|
+
(action must return Readymade::Response.new(:success))
|
172
|
+
|
173
|
+
```ruby
|
174
|
+
class Orders::Actions::SendNotifications < Readymade::Action
|
175
|
+
def call!
|
176
|
+
send_email
|
177
|
+
return response(:fail, errors: errors) unless email_sent?
|
178
|
+
send_push
|
179
|
+
send_slack
|
180
|
+
|
181
|
+
response(:success, record: record, any_other_data: data)
|
182
|
+
end
|
183
|
+
...
|
184
|
+
end
|
185
|
+
|
186
|
+
Orders::Actions::SendNotifications.call_async!(order: order) # job will be failed
|
187
|
+
```
|
188
|
+
|
151
189
|
### Readymade::Operation
|
152
190
|
|
153
191
|
Provides set of help methods like: `build_form`, `form_valid?`, `validation_fail`, `save_record`, etc.
|
data/lib/readymade/action.rb
CHANGED
@@ -2,19 +2,33 @@
|
|
2
2
|
|
3
3
|
require 'readymade/response'
|
4
4
|
require 'readymade/background_job'
|
5
|
+
require 'readymade/background_bang_job'
|
5
6
|
|
6
7
|
module Readymade
|
7
8
|
class Action
|
8
9
|
class NonKeywordArgumentsError < StandardError; end
|
10
|
+
class UnSuccessError < StandardError; end
|
9
11
|
|
10
12
|
def self.call(*args, &block)
|
11
13
|
new(*args, &block).call
|
12
14
|
end
|
13
15
|
|
16
|
+
def self.call!(*args, &block)
|
17
|
+
new(*args, &block).call!.then do |res|
|
18
|
+
raise UnSuccessError unless res.try(:success?)
|
19
|
+
|
20
|
+
res
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
14
24
|
def self.call_async(*args, &block)
|
15
25
|
new(*args, &block).call_async
|
16
26
|
end
|
17
27
|
|
28
|
+
def self.call_async!(*args, &block)
|
29
|
+
new(*args, &block).call_async!
|
30
|
+
end
|
31
|
+
|
18
32
|
attr_reader :args, :data
|
19
33
|
|
20
34
|
def initialize(args = {})
|
@@ -28,10 +42,16 @@ module Readymade
|
|
28
42
|
|
29
43
|
def call; end
|
30
44
|
|
45
|
+
def call!; end
|
46
|
+
|
31
47
|
def call_async
|
32
48
|
::Readymade::BackgroundJob.perform_later(class_name: self.class.name, **args)
|
33
49
|
end
|
34
50
|
|
51
|
+
def call_async!
|
52
|
+
::Readymade::BackgroundBangJob.perform_later(class_name: self.class.name, **args)
|
53
|
+
end
|
54
|
+
|
35
55
|
def response(status, *args)
|
36
56
|
Response.new(status, *args)
|
37
57
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_job' unless defined?(::ActiveJob)
|
4
|
+
|
5
|
+
module Readymade
|
6
|
+
class BackgroundBangJob < ::ActiveJob::Base
|
7
|
+
# queue_as :default
|
8
|
+
|
9
|
+
def perform(**args)
|
10
|
+
args.delete(:class_name).to_s.constantize.send(:call!, **args)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/readymade/version.rb
CHANGED
data/lib/readymade.rb
CHANGED
@@ -4,6 +4,7 @@ require 'readymade/model/api_attachable'
|
|
4
4
|
require 'readymade/model/filterable'
|
5
5
|
require 'readymade/controller/serialization'
|
6
6
|
require 'readymade/background_job'
|
7
|
+
require 'readymade/background_bang_job'
|
7
8
|
require 'readymade/action'
|
8
9
|
require 'readymade/form'
|
9
10
|
require 'readymade/instant_form'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: readymade
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- OrestF
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-06-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: byebug
|
@@ -101,6 +101,7 @@ files:
|
|
101
101
|
- bin/setup
|
102
102
|
- lib/readymade.rb
|
103
103
|
- lib/readymade/action.rb
|
104
|
+
- lib/readymade/background_bang_job.rb
|
104
105
|
- lib/readymade/background_job.rb
|
105
106
|
- lib/readymade/controller/serialization.rb
|
106
107
|
- lib/readymade/form.rb
|