generic_job 0.0.2 → 0.1.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: 92d3bc04b8a275912c8db7c199066a1fd2b9a490c95c8885bb6dd81fa85afab3
4
- data.tar.gz: 9952a976e9a4b2fbe71ed1201643ce04355f75c238c366bb8bd1a5d234b989a3
3
+ metadata.gz: 275512632bb09acb00d99e453832ecc4522e3b103413aa4b81d560944b8ecd49
4
+ data.tar.gz: fe65070bc71024d7c5ee30344d0e5f384e7cbb47b7700348546141b5c3dbff59
5
5
  SHA512:
6
- metadata.gz: d64823b2bfbd3ee24f754f8232a3e6d56014d039ae918dd9021466e2cfa5b6efe73c8d987f02b048f1853a87cff67fc3e4a4d59c625986b25a6b48960a0836f1
7
- data.tar.gz: bd04831cdf0bbc45fa395a0b48b29b178d8b81868c883fc06c0943d5e533ae96239eb7c30b71aabb3be1e6662f8f86082070a767e710f30b8aae9d31eef57b9a
6
+ metadata.gz: 962a7b7a531388ea2f0eca41873e957fbfd281b16caf078c970517710388cb093a04b11cd2a3878e64c67648fdd091f98dd53f9c2ee095f58eee6af99e5fe93a
7
+ data.tar.gz: 66126cf732b1b4405483e10e55d5cffa077333f6673cf0e1eb86b6e19c7356652e7eb62c329b459fd318008c8d37f49ffb8159ebab6ba9fce600d285908f8628
@@ -5,12 +5,12 @@ class GenericJob
5
5
  extend ActiveSupport::Concern
6
6
 
7
7
  class_methods do
8
- def async opts = {}
8
+ def async(opts = {})
9
9
  GenericJob::Stub.new self, opts
10
10
  end
11
11
  end
12
12
 
13
- def async opts = {}
13
+ def async(opts = {})
14
14
  GenericJob::Stub.new self, opts
15
15
  end
16
16
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  class GenericJob
4
4
  module Perform
5
- def perform receiver, data
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
- def fetch_receiver hash
19
- if hash[:init_args]
20
- hash[:class].constantize.new(*to_array(hash[:init_args]))
21
- else
22
- hash[:class].constantize
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
- 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
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
- 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
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
- def to_array args
45
- return args if args.is_a? Array
46
- [args]
47
- end
44
+ def to_array(args)
45
+ return args if args.is_a? Array
46
+
47
+ [args]
48
+ end
48
49
  end
49
50
  end
@@ -2,17 +2,17 @@
2
2
 
3
3
  class GenericJob
4
4
  class Stub
5
- def initialize receiver, opts
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? name, include_private
11
+ def respond_to_missing?(name, include_private)
12
12
  receiver_has_method?(name) || super
13
13
  end
14
14
 
15
- def method_missing name, *args, &_block
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 *args
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
- def receiver_has_method? name
31
- if @init_args
32
- @receiver.new(*@init_args).respond_to? name
33
- else
34
- @receiver.respond_to? name
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
- 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
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
- def receiver_as_hash args
48
- {
49
- class: @receiver.name,
50
- init_args: @init_args,
51
- meth_args: args
52
- }
53
- end
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
- def prepare_receiver
56
- return @receiver unless @receiver.is_a? Class
57
- @receiver.name
58
- end
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.2
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: 2019-08-28 00:00:00.000000000 Z
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: 0.74.0
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: 0.74.0
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.3.1
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.3.1
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: '0'
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.0.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: []