sidekiq-enqueuer 1.0.0 → 1.0.1

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: 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: []