sidekiq-enqueuer 2.0.0 → 2.1.0.beta1

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
  SHA1:
3
- metadata.gz: 1632d8218572bd4f7b75fa9fef52850536a315e8
4
- data.tar.gz: 54d3613fe9ae5d02473a144295f357e0a6383922
3
+ metadata.gz: bd0c3ed9a31d9741b5bec6103f7daedfd20a9f1c
4
+ data.tar.gz: 8e31a23c14f03f9b5e65964b7fd1156c0a9d4584
5
5
  SHA512:
6
- metadata.gz: 9767283baceb739624184eb5e262120d128391aea48015b2ab9d3925e32bbe8ab9f2ed7fc2d3076a3f9e026608fadcfd2ff1c73de8320b1fb5ea27d1da8d3cc1
7
- data.tar.gz: ca5923163c6773e7cf190fa557966eb4e1dfcb5ab3cbc7f0a59abc1d20aef5f08d5fa9e5209394df978a794e7a0a09bd0ce1790ef1e26a3bf551be226c66a651
6
+ metadata.gz: 1c9ef2086a55ef281d1372579f13f327597366d2bb1a8972e08b86f43ce3f5676e5c5abcc77c81501d498eb75466308b0c4899c36ce9b3b2630a9ffc05f8722f
7
+ data.tar.gz: 0ef6dffd01f43ba99b619a2899f5dda55fbf1eabad24ec8dfd916b3db86d663c2387e04c4a8e1f7816e97f84a2ad7af15b72ed44f0aef776c31a4f2f7a9ef41b
data/CHANGELOG.md CHANGED
@@ -5,6 +5,13 @@
5
5
  - Version bump to stable after rollout to prod.
6
6
 
7
7
 
8
+ 2.1.0.beta
9
+ -----------
10
+ - Drop support for Yaml-like params
11
+ - Added support for required and optional parameters based on the method definition
12
+ - Fixed issue with nil parameters being send to Jobs as `nil` strings
13
+ - Added New Exception to be raised when Required Param values are not present
14
+
8
15
  2.0.0.beta
9
16
  -----------
10
17
 
data/README.md CHANGED
@@ -75,15 +75,10 @@ For ActiveJob, enqueing is being done calling the very own `perform_later` insta
75
75
  ![list](https://cloud.githubusercontent.com/assets/830633/14494297/c9b01b10-01bc-11e6-8ef5-a4d29ff45fb3.png)
76
76
 
77
77
  * Fill the form, click Enqueue or Schedule.
78
- ![form](https://cloud.githubusercontent.com/assets/830633/14494314/ddd9f8ae-01bc-11e6-86ce-0641a9c4d3e4.png)
78
+ ![form](https://cloud.githubusercontent.com/assets/830633/20659706/e8dde182-b50a-11e6-90e6-022d5c1ae2db.png)
79
79
 
80
80
  * That is it!
81
81
 
82
- ## Form filling
83
- * Support string value and hash value. Value will be stripped.
84
- * Start with { will be parsed by YAML as hash, eg: {k1: v1, k2: v2} to {'k1'=> 'v1', 'k2'=> 'v2'}
85
-
86
-
87
82
  ## Contributing
88
83
 
89
84
  Bug reports and pull requests are welcome on GitHub at https://github.com/richfisher/sidekiq-enqueuer.
@@ -1,5 +1,5 @@
1
1
  module Sidekiq
2
2
  module Enqueuer
3
- VERSION = '2.0.0'.freeze
3
+ VERSION = '2.1.0.beta1'.freeze
4
4
  end
5
5
  end
@@ -1,10 +1,4 @@
1
1
  <h3>Enqueuer</h3>
2
-
3
- <div class="well">
4
- <p>Support string value and hash value. Value will be stripped.</p>
5
- <p>Start with { will be parsed by YAML as hash, eg: {k1: v1, k2: v2} to {'k1'=> 'v1', 'k2'=> 'v2'}. </p>
6
- </div>
7
-
8
2
  <form method="post" action="<%= root_path %>enqueuer">
9
3
  <%= csrf_tag if respond_to?(:csrf_tag) %>
10
4
 
@@ -2,9 +2,9 @@ module Sidekiq
2
2
  module Enqueuer
3
3
  module WebExtension
4
4
  module Helper
5
- def get_params_by_action(name)
5
+ def get_params_by_action(name, job)
6
6
  return [] if params[name].nil?
7
- ParamsParser.new(params[name]).process
7
+ Sidekiq::Enqueuer::WebExtension::ParamsParser.new(params[name], job).process
8
8
  end
9
9
 
10
10
  def find_job_by_class_name(job_class_name)
@@ -12,23 +12,6 @@ module Sidekiq
12
12
  job_klass.job == job_class_name || job_klass.job.to_s == job_class_name || job_klass.name == job_class_name
13
13
  end
14
14
  end
15
-
16
- # TODO: Figure out the need of unlock!
17
- # def does_job_have_unlock_method(klass_or_module)
18
- # klass_or_module.respond_to?(:unlock!)
19
- # false
20
- # end
21
-
22
- # TODO: Figure out the need of unlock!
23
- # def get_job_unlock_params(klass_or_module)
24
- # klass_or_module.method(:unlock!).parameters.map{ |e| e[1]}
25
- # end
26
-
27
- # TODO: Figure out the need of unlock!
28
- # def self.unlock!(klass, values)
29
- # parsed_values = values_parser(values)
30
- # klass.unlock!(*parsed_values)
31
- # end
32
15
  end
33
16
  end
34
17
  end
@@ -18,12 +18,9 @@ module Sidekiq
18
18
 
19
19
  app.post '/enqueuer' do
20
20
  job = find_job_by_class_name(params[:job_class_name])
21
- requested_params = get_params_by_action('perform')
22
- # TODO: Figure out the need of unlock!
23
- # if params['unlock-enable'] && params['unlock-enable'] != ''
24
- # Sidekiq::Enqueuer.unlock!(klass, get_params_by_action('unlock'))
25
- # end
21
+
26
22
  if job
23
+ requested_params = get_params_by_action('perform', job)
27
24
  job.trigger(requested_params) if params['submit'] == 'Enqueue'
28
25
  job.trigger_in(params['enqueue_in'], requested_params) if params['submit'] == 'Schedule'
29
26
  end
@@ -2,45 +2,35 @@ module Sidekiq
2
2
  module Enqueuer
3
3
  module WebExtension
4
4
  class ParamsParser
5
- attr_reader :raw_params
5
+ class NoProvidedValueForRequiredParam < StandardError; end
6
6
 
7
- def initialize(params)
7
+ attr_reader :raw_params, :worker
8
+
9
+ def initialize(params, worker)
8
10
  @raw_params = params
11
+ @worker = worker
9
12
  end
10
13
 
11
14
  def process
12
- all_params = filter_empty(raw_params)
13
- hash_params = yaml_to_params(all_params.values)
14
- all_params = hash_params.merge!(all_params) if hash_params
15
- simple_params = filter_complex(all_params)
16
- simple_params.values.compact.flatten
17
- end
18
-
19
- private
20
-
21
- def yaml_to_params(values)
22
- unique_params = {}
23
- values.each do |str_param|
24
- param_hash = expected_hash?(str_param) ? convert_to_ruby(str_param) : {}
25
- unique_params.merge!(param_hash)
15
+ worker.params.each do |expected_param|
16
+ value = extract_value(expected_param.name.to_s)
17
+ expected_param.value = value
18
+ raise NoProvidedValueForRequiredParam if expected_param.required? && !expected_param.value.present?
26
19
  end
27
- unique_params
20
+ worker.params.map(&:value)
28
21
  end
29
22
 
30
- def filter_empty(given_params)
31
- given_params.delete_if { |_, v| v.to_s.empty? }
32
- end
33
-
34
- def filter_complex(given_params)
35
- given_params.delete_if { |_, v| expected_hash?(v.to_s) }
36
- end
23
+ private
37
24
 
38
- def convert_to_ruby(value)
39
- YAML.parse(value.to_s.strip).to_ruby
25
+ def extract_value(param_name)
26
+ return nil unless raw_params[param_name].present?
27
+ cleanup(raw_params[param_name])
40
28
  end
41
29
 
42
- def expected_hash?(value)
43
- value.to_s.start_with?('{') && value.to_s.end_with?('}')
30
+ def cleanup(value)
31
+ return nil if value.to_s.downcase == 'nil'
32
+ return '' if value.to_s.strip.empty?
33
+ value
44
34
  end
45
35
  end
46
36
  end
@@ -26,7 +26,7 @@ module Sidekiq
26
26
  private
27
27
 
28
28
  def trigger_job(input_params)
29
- Trigger.new(job, input_params)
29
+ Sidekiq::Enqueuer::Worker::Trigger.new(job, input_params)
30
30
  end
31
31
 
32
32
  # TODO: what if two of this methods exist? which one to pick to figure out params?
@@ -38,7 +38,7 @@ module Sidekiq
38
38
  end
39
39
 
40
40
  def deduce_params
41
- worker_params.empty? ? [] : worker_params.map { |e| Param.new(e[1], e[0]) }
41
+ worker_params.empty? ? [] : worker_params.map { |e| Sidekiq::Enqueuer::Worker::Param.new(e[1], e[0]) }
42
42
  end
43
43
 
44
44
  def worker_params
@@ -2,17 +2,22 @@ module Sidekiq
2
2
  module Enqueuer
3
3
  module Worker
4
4
  class Param
5
- attr_reader :name, :condition
5
+ attr_reader :name, :label
6
+ attr_accessor :value
6
7
 
7
8
  VALID_OPTIONS = { req: 'required', opt: 'optional' }.freeze
8
9
 
9
- def initialize(name, condition)
10
+ def initialize(name, label)
10
11
  @name = name
11
- @condition = VALID_OPTIONS[condition]
12
+ @label = VALID_OPTIONS[label]
12
13
  end
13
14
 
14
- def label
15
- condition
15
+ def required?
16
+ label == VALID_OPTIONS[:req]
17
+ end
18
+
19
+ def optional?
20
+ !required?
16
21
  end
17
22
  end
18
23
  end
@@ -12,8 +12,6 @@ require 'sidekiq/enqueuer/railtie' if defined? ::Rails::Railtie
12
12
  module Sidekiq
13
13
  module Enqueuer
14
14
  class << self
15
- attr_accessor :configuration
16
-
17
15
  def configuration
18
16
  @configuration ||= Configuration.new
19
17
  end
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
28
28
 
29
29
  spec.add_development_dependency 'bundler'
30
30
  spec.add_development_dependency 'rake'
31
- spec.add_development_dependency 'rack-test'
31
+ spec.add_development_dependency 'minitest'
32
32
  spec.add_development_dependency 'sidekiq'
33
33
  spec.add_development_dependency 'rails', '> 4.2'
34
34
  spec.add_development_dependency 'sinatra'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-enqueuer
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - richfisher
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-10 00:00:00.000000000 Z
11
+ date: 2016-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rack-test
42
+ name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -140,9 +140,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
140
140
  version: '0'
141
141
  required_rubygems_version: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ">="
143
+ - - ">"
144
144
  - !ruby/object:Gem::Version
145
- version: '0'
145
+ version: 1.3.1
146
146
  requirements: []
147
147
  rubyforge_project:
148
148
  rubygems_version: 2.4.8