readymade 0.2.8 → 0.3.0

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: 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