sidekiq_adhoc_job 0.1.5 → 0.1.6

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