generic_job 0.0.2 → 0.1.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/lib/generic_job/async.rb +2 -2
- data/lib/generic_job/perform.rb +26 -25
- data/lib/generic_job/stub.rb +30 -29
- metadata +11 -45
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 275512632bb09acb00d99e453832ecc4522e3b103413aa4b81d560944b8ecd49
|
4
|
+
data.tar.gz: fe65070bc71024d7c5ee30344d0e5f384e7cbb47b7700348546141b5c3dbff59
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 962a7b7a531388ea2f0eca41873e957fbfd281b16caf078c970517710388cb093a04b11cd2a3878e64c67648fdd091f98dd53f9c2ee095f58eee6af99e5fe93a
|
7
|
+
data.tar.gz: 66126cf732b1b4405483e10e55d5cffa077333f6673cf0e1eb86b6e19c7356652e7eb62c329b459fd318008c8d37f49ffb8159ebab6ba9fce600d285908f8628
|
data/lib/generic_job/async.rb
CHANGED
@@ -5,12 +5,12 @@ class GenericJob
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
class_methods do
|
8
|
-
def async
|
8
|
+
def async(opts = {})
|
9
9
|
GenericJob::Stub.new self, opts
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
def async
|
13
|
+
def async(opts = {})
|
14
14
|
GenericJob::Stub.new self, opts
|
15
15
|
end
|
16
16
|
end
|
data/lib/generic_job/perform.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
class GenericJob
|
4
4
|
module Perform
|
5
|
-
def perform
|
5
|
+
def perform(receiver, data)
|
6
6
|
case receiver
|
7
7
|
when Hash
|
8
8
|
handle_passed_hash receiver.symbolize_keys, data
|
@@ -15,35 +15,36 @@ class GenericJob
|
|
15
15
|
|
16
16
|
private
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
end
|
18
|
+
def fetch_receiver(hash)
|
19
|
+
if hash[:init_args]
|
20
|
+
hash[:class].constantize.new(**to_array(hash[:init_args]).first)
|
21
|
+
else
|
22
|
+
hash[:class].constantize
|
24
23
|
end
|
24
|
+
end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
end
|
26
|
+
def handle_passed_hash(hash, meth)
|
27
|
+
if hash[:meth_args]
|
28
|
+
fetch_receiver(hash).send meth, *to_array(hash[:meth_args])
|
29
|
+
else
|
30
|
+
fetch_receiver(hash).send meth
|
32
31
|
end
|
32
|
+
end
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
end
|
34
|
+
def handle_passed_obj(obj, data)
|
35
|
+
case data
|
36
|
+
when String
|
37
|
+
obj.send data
|
38
|
+
when Hash
|
39
|
+
args = data[:args] || [data[:arg]]
|
40
|
+
obj.send data[:meth], *args
|
42
41
|
end
|
42
|
+
end
|
43
43
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
44
|
+
def to_array(args)
|
45
|
+
return args if args.is_a? Array
|
46
|
+
|
47
|
+
[args]
|
48
|
+
end
|
48
49
|
end
|
49
50
|
end
|
data/lib/generic_job/stub.rb
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
|
3
3
|
class GenericJob
|
4
4
|
class Stub
|
5
|
-
def initialize
|
5
|
+
def initialize(receiver, opts)
|
6
6
|
@receiver = receiver
|
7
7
|
@opts = opts
|
8
8
|
@init_args = nil
|
9
9
|
end
|
10
10
|
|
11
|
-
def respond_to_missing?
|
11
|
+
def respond_to_missing?(name, include_private)
|
12
12
|
receiver_has_method?(name) || super
|
13
13
|
end
|
14
14
|
|
15
|
-
def method_missing
|
15
|
+
def method_missing(name, *args, &_block)
|
16
16
|
if receiver_has_method? name
|
17
17
|
call_missing_method name.to_s, *args
|
18
18
|
else
|
@@ -20,41 +20,42 @@ class GenericJob
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
def new
|
24
|
-
@init_args = args
|
23
|
+
def new(*args)
|
24
|
+
@init_args = args.first
|
25
25
|
self
|
26
26
|
end
|
27
27
|
|
28
28
|
private
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
end
|
30
|
+
def receiver_has_method?(name)
|
31
|
+
if @init_args
|
32
|
+
@receiver.new(**@init_args).respond_to? name
|
33
|
+
else
|
34
|
+
@receiver.respond_to? name
|
36
35
|
end
|
36
|
+
end
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
end
|
38
|
+
def call_missing_method(name, *args)
|
39
|
+
if @init_args
|
40
|
+
GenericJob.set(@opts).perform_later receiver_as_hash(args), name
|
41
|
+
else
|
42
|
+
GenericJob.set(@opts)
|
43
|
+
.perform_later prepare_receiver, meth: name, args: args
|
45
44
|
end
|
45
|
+
end
|
46
46
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
47
|
+
def receiver_as_hash(args)
|
48
|
+
{
|
49
|
+
class: @receiver.name,
|
50
|
+
init_args: @init_args,
|
51
|
+
meth_args: args
|
52
|
+
}
|
53
|
+
end
|
54
54
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
55
|
+
def prepare_receiver
|
56
|
+
return @receiver unless @receiver.is_a? Class
|
57
|
+
|
58
|
+
@receiver.name
|
59
|
+
end
|
59
60
|
end
|
60
61
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: generic_job
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zbigniew Humeniuk
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-05-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -30,68 +30,34 @@ dependencies:
|
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '7.0'
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: listen
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - ">="
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: 3.1.5
|
40
|
-
- - "<"
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: '3.2'
|
43
|
-
type: :development
|
44
|
-
prerelease: false
|
45
|
-
version_requirements: !ruby/object:Gem::Requirement
|
46
|
-
requirements:
|
47
|
-
- - ">="
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: 3.1.5
|
50
|
-
- - "<"
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: '3.2'
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
name: overcommit
|
55
|
-
requirement: !ruby/object:Gem::Requirement
|
56
|
-
requirements:
|
57
|
-
- - '='
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: 0.49.1
|
60
|
-
type: :development
|
61
|
-
prerelease: false
|
62
|
-
version_requirements: !ruby/object:Gem::Requirement
|
63
|
-
requirements:
|
64
|
-
- - '='
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: 0.49.1
|
67
33
|
- !ruby/object:Gem::Dependency
|
68
34
|
name: rubocop
|
69
35
|
requirement: !ruby/object:Gem::Requirement
|
70
36
|
requirements:
|
71
37
|
- - "~>"
|
72
38
|
- !ruby/object:Gem::Version
|
73
|
-
version:
|
39
|
+
version: '1.14'
|
74
40
|
type: :development
|
75
41
|
prerelease: false
|
76
42
|
version_requirements: !ruby/object:Gem::Requirement
|
77
43
|
requirements:
|
78
44
|
- - "~>"
|
79
45
|
- !ruby/object:Gem::Version
|
80
|
-
version:
|
46
|
+
version: '1.14'
|
81
47
|
- !ruby/object:Gem::Dependency
|
82
48
|
name: rubocop-rails
|
83
49
|
requirement: !ruby/object:Gem::Requirement
|
84
50
|
requirements:
|
85
51
|
- - "~>"
|
86
52
|
- !ruby/object:Gem::Version
|
87
|
-
version: 2.
|
53
|
+
version: '2.10'
|
88
54
|
type: :development
|
89
55
|
prerelease: false
|
90
56
|
version_requirements: !ruby/object:Gem::Requirement
|
91
57
|
requirements:
|
92
58
|
- - "~>"
|
93
59
|
- !ruby/object:Gem::Version
|
94
|
-
version: 2.
|
60
|
+
version: '2.10'
|
95
61
|
- !ruby/object:Gem::Dependency
|
96
62
|
name: sqlite3
|
97
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -124,7 +90,7 @@ homepage: https://artofcode.co
|
|
124
90
|
licenses:
|
125
91
|
- MIT
|
126
92
|
metadata: {}
|
127
|
-
post_install_message:
|
93
|
+
post_install_message:
|
128
94
|
rdoc_options: []
|
129
95
|
require_paths:
|
130
96
|
- lib
|
@@ -132,15 +98,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
132
98
|
requirements:
|
133
99
|
- - ">="
|
134
100
|
- !ruby/object:Gem::Version
|
135
|
-
version:
|
101
|
+
version: 2.6.0
|
136
102
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
103
|
requirements:
|
138
104
|
- - ">="
|
139
105
|
- !ruby/object:Gem::Version
|
140
106
|
version: '0'
|
141
107
|
requirements: []
|
142
|
-
rubygems_version: 3.
|
143
|
-
signing_key:
|
108
|
+
rubygems_version: 3.2.15
|
109
|
+
signing_key:
|
144
110
|
specification_version: 4
|
145
111
|
summary: Higher level abstraction on the top of ActiveJob.
|
146
112
|
test_files: []
|