readymade 0.2.8 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8b21e8901b1feeed09d060f31d886d21041a3c13c000e4c6a90c11a0cd50de12
4
- data.tar.gz: 2909b312ed7110ff519b67a203023389c45db97e00be314e599df9d1b8f60337
3
+ metadata.gz: f4e8e02d585f7ebcd9b83ddaef817e0116b8b06c80d543a46fbfb2df1adf99ca
4
+ data.tar.gz: 333b90782eb4e24733f9073132f667f540b2f81c5b62d3dd92372ee434b0b9f3
5
5
  SHA512:
6
- metadata.gz: 359f4a10a9afbcadfff88b655d27dc8f5d4e971cf812f5ab7bc74e27b48b81b273fb79678e0de057ddc3d70c44077420e7fd13da7b11e0a2225fed1c35432213
7
- data.tar.gz: '08a127d29a24149dab9e1ac7d8eac89eb008c36f90c1fb569e83cc5ee7920f9ed3503bf2fac43b92e90c47a0fb4861a76bc308922fe61a6fd5098860bca24740'
6
+ metadata.gz: 202033d59da56afbc9a17b0eaf8659ed3fcd1fd4ff9c89d9687d429d636dbe61d22c450dc03ba15251b9d282ae6f7aa943caece163a23d8866f95d3798f58db5
7
+ data.tar.gz: 3d02a2c554e9d4de2db20bbd598fa4c0d8da2757003358142cb61e7e71abf47b728a880b8f08c28824c8214c10711973376ed93550e2439ef98bb3d48c51ed34
data/.gitignore CHANGED
@@ -9,3 +9,4 @@
9
9
 
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
+ spec/.DS_Store
data/CHANGELOG.md CHANGED
@@ -1,6 +1,10 @@
1
1
  Changelog
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
+ ## [0.3.0] - 2023-03-14
5
+
6
+ * Add `.call_async` method to `Readymade::Action` to run service in background
7
+
4
8
  ## [0.2.8] - 2022-11-10
5
9
 
6
10
  ### Fixes
data/Gemfile CHANGED
@@ -2,7 +2,8 @@
2
2
 
3
3
  source 'https://rubygems.org'
4
4
 
5
- # Specify your gem's dependencies in lead.gemspec
5
+ # Specify your gem's dependencies in readymade.gemspec
6
6
  gemspec
7
-
8
- gem 'activemodel'
7
+ #
8
+ # gem 'activemodel'
9
+ # gem 'activejob'
data/Gemfile.lock CHANGED
@@ -1,11 +1,16 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- readymade (0.2.8)
4
+ readymade (0.3.0)
5
+ activejob
6
+ activemodel
5
7
 
6
8
  GEM
7
9
  remote: https://rubygems.org/
8
10
  specs:
11
+ activejob (6.1.4.1)
12
+ activesupport (= 6.1.4.1)
13
+ globalid (>= 0.3.6)
9
14
  activemodel (6.1.4.1)
10
15
  activesupport (= 6.1.4.1)
11
16
  activesupport (6.1.4.1)
@@ -17,6 +22,8 @@ GEM
17
22
  byebug (11.1.3)
18
23
  concurrent-ruby (1.1.9)
19
24
  diff-lcs (1.4.4)
25
+ globalid (1.1.0)
26
+ activesupport (>= 5.0)
20
27
  i18n (1.8.11)
21
28
  concurrent-ruby (~> 1.0)
22
29
  minitest (5.14.4)
@@ -42,7 +49,6 @@ PLATFORMS
42
49
  ruby
43
50
 
44
51
  DEPENDENCIES
45
- activemodel
46
52
  byebug
47
53
  rake
48
54
  readymade!
data/README.md CHANGED
@@ -131,6 +131,23 @@ response.data[:record]
131
131
  response.data[:any_other_data]
132
132
  ```
133
133
 
134
+ ### `.call_async` - any action could we call async (using ActiveJob)
135
+
136
+ ```ruby
137
+ class Orders::Actions::SendNotifications < Readymade::Action
138
+ def call
139
+ send_email
140
+ send_push
141
+ send_slack
142
+
143
+ response(:success, record: record, any_other_data: data)
144
+ end
145
+ ...
146
+ end
147
+
148
+ Orders::Actions::SendNotifications.call_async(order: order)
149
+ ```
150
+
134
151
  ### Readymade::Operation
135
152
 
136
153
  Provides set of help methods like: `build_form`, `form_valid?`, `validation_fail`, `save_record`, etc.
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'readymade/response'
4
+ require 'readymade/background_job'
4
5
 
5
6
  module Readymade
6
7
  class Action
@@ -10,6 +11,10 @@ module Readymade
10
11
  new(*args, &block).call
11
12
  end
12
13
 
14
+ def self.call_async(*args, &block)
15
+ new(*args, &block).call_async
16
+ end
17
+
13
18
  attr_reader :args, :data
14
19
 
15
20
  def initialize(args = {})
@@ -23,6 +28,10 @@ module Readymade
23
28
 
24
29
  def call; end
25
30
 
31
+ def call_async
32
+ ::Readymade::BackgroundJob.perform_later(class_name: self.class.name, **args)
33
+ end
34
+
26
35
  def response(status, *args)
27
36
  Response.new(status, *args)
28
37
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_job' unless defined?(::ActiveJob)
4
+
5
+ module Readymade
6
+ class BackgroundJob < ::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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Readymade
4
- VERSION = '0.2.8'
4
+ VERSION = '0.3.0'
5
5
  end
data/lib/readymade.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  require 'readymade/model/api_attachable'
4
4
  require 'readymade/model/filterable'
5
5
  require 'readymade/controller/serialization'
6
+ require 'readymade/background_job'
6
7
  require 'readymade/action'
7
8
  require 'readymade/form'
8
9
  require 'readymade/instant_form'
data/readymade.gemspec CHANGED
@@ -35,4 +35,7 @@ Gem::Specification.new do |spec|
35
35
  spec.add_development_dependency 'byebug'
36
36
  spec.add_development_dependency 'rake'
37
37
  spec.add_development_dependency 'rspec'
38
+
39
+ spec.add_dependency "activemodel"
40
+ spec.add_dependency "activejob"
38
41
  end
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.2.8
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - OrestF
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-12-07 00:00:00.000000000 Z
11
+ date: 2023-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: activemodel
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: activejob
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  description: Set of base classes for ABDI architecture
56
84
  email:
57
85
  - falchuko@gmail.com
@@ -73,6 +101,7 @@ files:
73
101
  - bin/setup
74
102
  - lib/readymade.rb
75
103
  - lib/readymade/action.rb
104
+ - lib/readymade/background_job.rb
76
105
  - lib/readymade/controller/serialization.rb
77
106
  - lib/readymade/form.rb
78
107
  - lib/readymade/instant_form.rb