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
         |