sidekiq-enqueuer 1.0.0 → 1.0.1

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: d5dbc2cdcd956e6126c1299c490e61057bc1dc61
4
- data.tar.gz: 16526ef109984855d5a85018fc2767663d5d3018
3
+ metadata.gz: db4c4b0c1816251c65a6e03abf0163c6eb640a3f
4
+ data.tar.gz: ca07096636cc304c81ae844787d4e80e52db874b
5
5
  SHA512:
6
- metadata.gz: 92c9046d2dd0200b36147283a34d91aaa093168a1646325154e81d81c933ad3c341b080e4b404ec9f6ad9c470042ec028c79da1932c4a0cde871779a2384a1d6
7
- data.tar.gz: c8deb9bc67eb0f46d325564d3d0191a39ea26b7a3dc42f79924df4db830a80980637bc349d82e5d1372045a35ee96f734738eb8534aa58fcc3917187b8451eb5
6
+ metadata.gz: 57bc674fb3fc33cd790368596d13c16f86cecbe708e579a5de965f3db645d4fb7ff0cfbf8dc697fce7730b49c27bbe33901bfcda7ba7fe723cd994eb6a959492
7
+ data.tar.gz: 9a69db182e806570b852aa90699da544d4e21a45b29347547327d86c6134cc11a110279a519e529eb11e33827f550d00381e8bf077a89f5517b83acd9a72f34a
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ *.gem
data/README.md CHANGED
@@ -20,7 +20,20 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- Visit the Sidekiq Web, click the Enqueuer tab.
23
+ * Open Sidekiq Web, click the Enqueuer tab.
24
+
25
+ * You can see a list of job classes/modules and params. Click Enqueue Form.
26
+
27
+ ![list](https://cloud.githubusercontent.com/assets/830633/14494297/c9b01b10-01bc-11e6-8ef5-a4d29ff45fb3.png)
28
+
29
+ * Fill the form, click Enqueue or Schedule.
30
+ ![form](https://cloud.githubusercontent.com/assets/830633/14494314/ddd9f8ae-01bc-11e6-86ce-0641a9c4d3e4.png)
31
+
32
+ * That is it!
33
+
34
+ ## Form filling
35
+ * Support string value and hash value.
36
+ * Hash value should start with {, hash value will be parsed by YAML, eg: {k1: v1, k2: v2} to {'k1'=> 'v1', 'k2'=> 'v2'}.
24
37
 
25
38
 
26
39
  ## Contributing
@@ -5,11 +5,9 @@ require 'sidekiq/enqueuer/railtie' if defined? ::Rails::Railtie
5
5
 
6
6
  module Sidekiq
7
7
  module Enqueuer
8
- def self.eager_load
9
- has_eager_loaded = false
10
- if defined?(::Rails) && ::Rails.env != 'production' && has_eager_loaded == false
8
+ def self.rails_eager_load
9
+ if defined?(::Rails) && ::Rails.env != 'production'
11
10
  ::Rails.application.eager_load!
12
- has_eager_loaded = true
13
11
  end
14
12
  end
15
13
 
@@ -24,12 +22,16 @@ module Sidekiq
24
22
  end
25
23
 
26
24
  def self.get_jobs
27
- eager_load
25
+ return @jobs if @jobs
26
+
27
+ rails_eager_load
28
28
  jobs = get_job_modules + get_job_classes
29
- jobs.map(&:to_s).uniq.map(&:constantize)
29
+ @jobs = jobs.map(&:to_s).uniq.map(&:constantize)
30
30
  end
31
31
 
32
32
  def self.is_job_class?(klass)
33
+ return false if !defined?(::ActiveJob)
34
+
33
35
  klass < ::ActiveJob::Base
34
36
  end
35
37
 
@@ -38,20 +40,36 @@ module Sidekiq
38
40
  end
39
41
 
40
42
  def self.perform_async(klass, values)
43
+ parsed_values = values_parser(values)
41
44
  if is_job_class?(klass)
42
- klass.perform_later(*values)
45
+ klass.perform_later(*parsed_values)
43
46
  elsif has_worker_module?(klass)
44
- klass.perform_async(*values)
47
+ klass.perform_async(*parsed_values)
45
48
  end
46
49
  end
47
50
 
48
51
  def self.perform_in(klass, seconds_str, values)
52
+ parsed_values = values_parser(values)
49
53
  seconds = seconds_str.to_i.seconds
50
54
  if is_job_class?(klass)
51
- klass.set(wait: seconds).perform_later(*values)
55
+ klass.set(wait: seconds).perform_later(*parsed_values)
52
56
  elsif has_worker_module?(klass)
53
- klass.perform_in(seconds, *values)
57
+ klass.perform_in(seconds, *parsed_values)
58
+ end
59
+ end
60
+
61
+ def self.values_parser(values)
62
+ parsed_values = []
63
+ errors = []
64
+ for value in values.map(&:strip)
65
+ if value =~ /^{/
66
+ parsed_values << YAML.load(value) rescue errors << value
67
+ else
68
+ parsed_values << value
69
+ end
54
70
  end
71
+ raise errors if errors.size > 0
72
+ parsed_values
55
73
  end
56
74
 
57
75
  end
@@ -1,5 +1,5 @@
1
1
  module Sidekiq
2
2
  module Enqueuer
3
- VERSION = "1.0.0"
3
+ VERSION = "1.0.1"
4
4
  end
5
5
  end
@@ -11,9 +11,9 @@
11
11
  <tbody>
12
12
  <% for job in @jobs %>
13
13
  <tr>
14
- <td><%= job %></td>
15
- <td><%= get_job_perform_params(job).join(', ') %></td>
16
- <td><a href="<%= root_path %>enqueuer/<%= job %>" class="btn btn-danger btn-xs" style="color: white;">Enqueue Form</a></td>
14
+ <td width="40%"><%= job %></td>
15
+ <td width="40%"><%= get_job_perform_params(job).join(', ') %></td>
16
+ <td width="20%"><a href="<%= root_path %>enqueuer/<%= job %>" class="btn btn-danger btn-xs" style="color: white;">Enqueue Form</a></td>
17
17
  </tr>
18
18
  <% end %>
19
19
  </tbody>
@@ -1,5 +1,10 @@
1
1
  <h3>Enqueuer</h3>
2
2
 
3
+ <div class="well">
4
+ <p>Support string value and hash value.</p>
5
+ <p>Hash value should start with {, hash value will be parsed by YAML, eg: {k1: v1, k2: v2} to {'k1'=> 'v1', 'k2'=> 'v2'} </p>
6
+ </div>
7
+
3
8
  <form method="post" action="<%= root_path %>enqueuer">
4
9
  <%= csrf_tag if respond_to?(:csrf_tag) %>
5
10
 
@@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["richfisher"]
10
10
  spec.email = ["richfisher.pan@gmail.com"]
11
11
 
12
- spec.summary = %q{A Sidekiq Web extension to enqueue/schedule job in Web UI.}
13
- spec.description = %q{A Sidekiq Web extension to enqueue/schedule job in Web UI. Support both Sidekiq::Worker and ActiveJob.}
12
+ spec.summary = %q{A Sidekiq Web extension to enqueue/schedule jobs with custom perform params in Web UI.}
13
+ spec.description = %q{A Sidekiq Web extension to enqueue/schedule jobs with custom perform params in Web UI. Support both Sidekiq::Worker and ActiveJob.}
14
14
  spec.homepage = "https://github.com/richfisher/sidekiq-enqueuer"
15
15
 
16
16
  # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
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: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - richfisher
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-04-13 00:00:00.000000000 Z
11
+ date: 2016-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -94,8 +94,8 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
- description: A Sidekiq Web extension to enqueue/schedule job in Web UI. Support both
98
- Sidekiq::Worker and ActiveJob.
97
+ description: A Sidekiq Web extension to enqueue/schedule jobs with custom perform
98
+ params in Web UI. Support both Sidekiq::Worker and ActiveJob.
99
99
  email:
100
100
  - richfisher.pan@gmail.com
101
101
  executables: []
@@ -139,5 +139,6 @@ rubyforge_project:
139
139
  rubygems_version: 2.4.8
140
140
  signing_key:
141
141
  specification_version: 4
142
- summary: A Sidekiq Web extension to enqueue/schedule job in Web UI.
142
+ summary: A Sidekiq Web extension to enqueue/schedule jobs with custom perform params
143
+ in Web UI.
143
144
  test_files: []