sidekiq_adhoc_job 0.1.3 → 0.1.4
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/sidekiq_adhoc_job.rb +1 -0
- data/lib/sidekiq_adhoc_job/services/schedule_adhoc_job.rb +5 -2
- data/lib/sidekiq_adhoc_job/utils/class_inspector.rb +50 -0
- data/lib/sidekiq_adhoc_job/utils/string.rb +10 -0
- data/lib/sidekiq_adhoc_job/version.rb +1 -1
- data/lib/sidekiq_adhoc_job/web/job_presenter.rb +2 -9
- 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: df66102de04a00d471d9fb6227e4c60b0223062dda40be414cfc2f3b4e8278e6
|
4
|
+
data.tar.gz: 132225f4c811811c85ecc971a7a9f34cff0cf2d9b0d6b2f83218c76e2653c367
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 459e2d8b32611520ea08e696ddb2daa6716059eaa966e6f3f2208b6c81679c46be0cfd88e0da94b1ab9f2a31de794b6be583dd170c293625782e02af21b43406
|
7
|
+
data.tar.gz: 5aa2a6a2e5d7c9f8c4fa6163114a8d0573ed7cfa4c3dadbeebdd4c2d6523924590e9a73d98e148730f7d80429aa79aa300e2daff1046a8dc141e50210fc1ed41
|
data/lib/sidekiq_adhoc_job.rb
CHANGED
@@ -2,6 +2,7 @@ require 'sidekiq'
|
|
2
2
|
require 'sidekiq/web'
|
3
3
|
|
4
4
|
require 'sidekiq_adhoc_job/utils/string'
|
5
|
+
require 'sidekiq_adhoc_job/utils/class_inspector'
|
5
6
|
require 'sidekiq_adhoc_job/worker_classes_loader'
|
6
7
|
require 'sidekiq_adhoc_job/web/job_presenter'
|
7
8
|
require 'sidekiq_adhoc_job/services/schedule_adhoc_job'
|
@@ -9,6 +9,9 @@ module SidekiqAdhocJob
|
|
9
9
|
acc
|
10
10
|
end
|
11
11
|
@worker_klass = WorkerClassesLoader.find_worker_klass(job_name)
|
12
|
+
@worker_klass_inspector = Utils::ClassInspector.new(worker_klass)
|
13
|
+
@allowed_params = worker_klass_inspector.required_parameters(:perform) + worker_klass_inspector.optional_parameters(:perform)
|
14
|
+
|
12
15
|
parse_params
|
13
16
|
end
|
14
17
|
|
@@ -18,10 +21,10 @@ module SidekiqAdhocJob
|
|
18
21
|
|
19
22
|
private
|
20
23
|
|
21
|
-
attr_reader :request_params, :worker_klass, :
|
24
|
+
attr_reader :request_params, :worker_klass, :worker_klass_inspector,
|
25
|
+
:allowed_params, :worker_params
|
22
26
|
|
23
27
|
def parse_params
|
24
|
-
@allowed_params = worker_klass.new.method(:perform).parameters.reject { |type, _| type == :rest }.flat_map(&:last)
|
25
28
|
@worker_params = allowed_params.map { |key| StringUtil.parse(request_params[key]) }
|
26
29
|
if !!request_params[:rest_args] && !request_params[:rest_args].empty?
|
27
30
|
@worker_params += request_params[:rest_args].split(',').map { |arg| StringUtil.parse(arg.strip) }
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module SidekiqAdhocJob
|
2
|
+
module Utils
|
3
|
+
class ClassInspector
|
4
|
+
|
5
|
+
attr_reader :klass_name, :klass_obj, :method_parameters
|
6
|
+
|
7
|
+
def initialize(klass_name)
|
8
|
+
@klass_name = klass_name
|
9
|
+
@klass_obj = klass_name.new
|
10
|
+
@method_parameters = {}
|
11
|
+
end
|
12
|
+
|
13
|
+
def parameters(method_name)
|
14
|
+
return method_parameters[method_name] if method_parameters[method_name]
|
15
|
+
|
16
|
+
klass_method = klass_method(klass_obj.method(method_name))
|
17
|
+
params = klass_method
|
18
|
+
.parameters
|
19
|
+
.group_by { |type, _| type }
|
20
|
+
.inject({}) do |acc, (type, params)|
|
21
|
+
acc[type] = params.map(&:last)
|
22
|
+
acc
|
23
|
+
end
|
24
|
+
|
25
|
+
method_parameters[method_name] = params
|
26
|
+
|
27
|
+
params
|
28
|
+
end
|
29
|
+
|
30
|
+
def required_parameters(method_name)
|
31
|
+
parameters(method_name)[:req] || []
|
32
|
+
end
|
33
|
+
|
34
|
+
def optional_parameters(method_name)
|
35
|
+
parameters(method_name)[:opt] || []
|
36
|
+
end
|
37
|
+
|
38
|
+
def has_rest_parameter?(method_name)
|
39
|
+
!!parameters(method_name)[:rest]
|
40
|
+
end
|
41
|
+
|
42
|
+
def klass_method(method)
|
43
|
+
return method unless method.super_method
|
44
|
+
|
45
|
+
klass_method(method.super_method)
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -82,10 +82,14 @@ module SidekiqAdhocJob
|
|
82
82
|
true
|
83
83
|
elsif input == 'false'
|
84
84
|
false
|
85
|
+
elsif input == 'nil'
|
86
|
+
nil
|
85
87
|
elsif (i = parse_integer(input))
|
86
88
|
i
|
87
89
|
elsif (f = parse_float(input))
|
88
90
|
f
|
91
|
+
elsif (j = parse_json(input))
|
92
|
+
j
|
89
93
|
else
|
90
94
|
input
|
91
95
|
end
|
@@ -103,6 +107,12 @@ module SidekiqAdhocJob
|
|
103
107
|
nil
|
104
108
|
end
|
105
109
|
|
110
|
+
def self.parse_json(input)
|
111
|
+
JSON.parse(input)
|
112
|
+
rescue JSON::ParserError => _e
|
113
|
+
nil
|
114
|
+
end
|
115
|
+
|
106
116
|
end
|
107
117
|
end
|
108
118
|
end
|
@@ -38,16 +38,9 @@ module SidekiqAdhocJob
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def self.convert_klass_name_to_presenter(path_name, klass_name)
|
41
|
-
klass_obj = klass_name.new
|
42
41
|
queue = klass_name.sidekiq_options['queue']
|
43
|
-
|
44
|
-
|
45
|
-
.parameters
|
46
|
-
.group_by { |type, _| type }
|
47
|
-
.inject({}) do |acc, (type, params)|
|
48
|
-
acc[type] = params.map(&:last)
|
49
|
-
acc
|
50
|
-
end
|
42
|
+
class_inspector = SidekiqAdhocJob::Utils::ClassInspector.new(klass_name)
|
43
|
+
args = class_inspector.parameters(:perform)
|
51
44
|
new(klass_name, path_name, queue, args)
|
52
45
|
end
|
53
46
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq_adhoc_job
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Goh Khoon Hiang
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-06-
|
11
|
+
date: 2019-06-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -117,6 +117,7 @@ extra_rdoc_files: []
|
|
117
117
|
files:
|
118
118
|
- lib/sidekiq_adhoc_job.rb
|
119
119
|
- lib/sidekiq_adhoc_job/services/schedule_adhoc_job.rb
|
120
|
+
- lib/sidekiq_adhoc_job/utils/class_inspector.rb
|
120
121
|
- lib/sidekiq_adhoc_job/utils/string.rb
|
121
122
|
- lib/sidekiq_adhoc_job/version.rb
|
122
123
|
- lib/sidekiq_adhoc_job/web.rb
|