sidekiq-enqueuer 2.0.0 → 2.1.0.beta1

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