sidekiq_adhoc_job 0.1.5 → 0.1.6

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: c0f35c0912b36fde038556110a6a116b789aaaf62cab80bd43521e1c50eec4ec
4
- data.tar.gz: 18913f33c03e1a976bafeac7fa03f575f87c43f6a325c00d92f9b22370014667
3
+ metadata.gz: 1b485f48179615a49f00e4a39c0ff9b7d4ffe77ef9336e331d875633c1ccdf82
4
+ data.tar.gz: c0f7d9316a7cff046ebe6ef03fea42206ff0c195c5e6081fe80750e5de5f98c9
5
5
  SHA512:
6
- metadata.gz: 1790167e58fe6b6cfe2ec654e00801b31249e04041463505130f4d0857162dd4b55f2234e3ea2fb1cba1ad0d54e2601ca8d640eff7bb4e2aac94bd33f9cf0845
7
- data.tar.gz: a7e0161b04b1cfbe0a7b0b7e9038f8c0802952925b33ed05ec3f356160d0ba2c9dd967f16e04bc4d9cfad70c178c31cd8311a61c434e60fc689a7cc1fc1fc76b
6
+ metadata.gz: 427a776633fa687204e6a7d73f7ef95c0e3fc3a77995fccbb4ab84a78bd3a51c731f98ee7ffa3886df6f9e98bd735dd5a73136c2bf5f45e028d3de1a0c60edbe
7
+ data.tar.gz: c4897277ab341b525cd4dcf1b4943cac66ba27a46d581d91334f32eb8867c0bf300d96eb342093c10530a43d4cb0f1e85cb08b1dad852e0f746e20d1ffd6b8bd
@@ -10,8 +10,6 @@ require 'sidekiq_adhoc_job/web'
10
10
 
11
11
  module SidekiqAdhocJob
12
12
 
13
- InvalidConfigurationError ||= Class.new(RuntimeError)
14
-
15
13
  def self.configure
16
14
  @_config = Configuration.new
17
15
  yield @_config
@@ -22,8 +20,6 @@ module SidekiqAdhocJob
22
20
  end
23
21
 
24
22
  def self.init
25
- raise InvalidConfigurationError, 'Must configure before init' unless @_config&.configured?
26
-
27
23
  SidekiqAdhocJob::WorkerClassesLoader.load(@_config.module_names)
28
24
 
29
25
  Sidekiq::Web.register(SidekiqAdhocJob::Web)
@@ -38,8 +34,8 @@ module SidekiqAdhocJob
38
34
  @module_names = []
39
35
  end
40
36
 
41
- def configured?
42
- !@module_names.empty?
37
+ def module_names
38
+ Array(@module_names).map(&:to_s)
43
39
  end
44
40
  end
45
41
 
@@ -1,3 +1,3 @@
1
1
  module SidekiqAdhocJob
2
- VERSION = '0.1.5'.freeze
2
+ VERSION = '0.1.6'.freeze
3
3
  end
@@ -1,15 +1,11 @@
1
1
  module SidekiqAdhocJob
2
2
  class WorkerClassesLoader
3
-
4
- StringUtil ||= Utils::String
5
-
6
3
  @_worker_klasses = {}
7
4
 
8
5
  def self.load(module_names)
9
- module_consts = module_names.map { |name| StringUtil.constantize(name.to_s) }
10
- module_consts.each do |module_const|
11
- module_const.constants.each do |sub_module_const_sym|
12
- load_workers(module_const, sub_module_const_sym, @_worker_klasses)
6
+ ObjectSpace.each_object(Class).each do |klass|
7
+ if worker_class?(klass) && allowed_namespace?(klass.name, allowlist: module_names)
8
+ @_worker_klasses[worker_path_name(klass.name)] = klass
13
9
  end
14
10
  end
15
11
  end
@@ -22,27 +18,21 @@ module SidekiqAdhocJob
22
18
  @_worker_klasses[path_name]
23
19
  end
24
20
 
25
- def self.load_workers(parent_module_const, module_sym, workers)
26
- qualified_name = module_sym.to_s
21
+ def self.worker_class?(klass)
22
+ klass.included_modules.include?(Sidekiq::Worker)
23
+ end
24
+ private_class_method :worker_class?
27
25
 
28
- module_const = begin
29
- StringUtil.constantize(qualified_name)
30
- rescue NameError => _e
31
- qualified_name = [parent_module_const, module_sym].compact.join('::')
32
- begin
33
- StringUtil.constantize(qualified_name)
34
- rescue NameError => _e
35
- nil
36
- end
37
- end
38
- return unless module_const && module_const.is_a?(Class)
26
+ def self.allowed_namespace?(class_name, allowlist:)
27
+ return true if allowlist.empty? || allowlist.include?('Module') # allow any namespace
39
28
 
40
- if module_const.include?(Sidekiq::Worker)
41
- path_name = StringUtil.underscore(qualified_name).gsub('/', '_')
42
- workers[path_name] = module_const
43
- return
44
- end
29
+ allowlist.any? { |prefix| class_name.start_with?(prefix) }
45
30
  end
31
+ private_class_method :allowed_namespace?
46
32
 
33
+ def self.worker_path_name(worker_name)
34
+ Utils::String.underscore(worker_name).gsub('/', '_')
35
+ end
36
+ private_class_method :worker_path_name
47
37
  end
48
38
  end
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.5
4
+ version: 0.1.6
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-07-08 00:00:00.000000000 Z
11
+ date: 2020-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 2.0.1
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 2.0.1
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -150,7 +150,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
150
  - !ruby/object:Gem::Version
151
151
  version: '0'
152
152
  requirements: []
153
- rubygems_version: 3.0.4
153
+ rubyforge_project:
154
+ rubygems_version: 2.7.7
154
155
  signing_key:
155
156
  specification_version: 4
156
157
  summary: Trigger jobs adhoc from Sidekiq web admin