sidekiq 2.15.1 → 4.2.10

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sidekiq might be problematic. Click here for more details.

Files changed (187) hide show
  1. checksums.yaml +7 -0
  2. data/.github/contributing.md +32 -0
  3. data/.github/issue_template.md +9 -0
  4. data/.gitignore +1 -0
  5. data/.travis.yml +16 -17
  6. data/3.0-Upgrade.md +70 -0
  7. data/4.0-Upgrade.md +53 -0
  8. data/COMM-LICENSE +56 -44
  9. data/Changes.md +644 -1
  10. data/Ent-Changes.md +173 -0
  11. data/Gemfile +27 -0
  12. data/LICENSE +1 -1
  13. data/Pro-2.0-Upgrade.md +138 -0
  14. data/Pro-3.0-Upgrade.md +44 -0
  15. data/Pro-Changes.md +457 -3
  16. data/README.md +46 -29
  17. data/Rakefile +6 -3
  18. data/bin/sidekiq +4 -0
  19. data/bin/sidekiqctl +41 -20
  20. data/bin/sidekiqload +154 -0
  21. data/code_of_conduct.md +50 -0
  22. data/lib/generators/sidekiq/templates/worker.rb.erb +9 -0
  23. data/lib/generators/sidekiq/templates/worker_spec.rb.erb +6 -0
  24. data/lib/generators/sidekiq/templates/worker_test.rb.erb +8 -0
  25. data/lib/generators/sidekiq/worker_generator.rb +49 -0
  26. data/lib/sidekiq.rb +141 -29
  27. data/lib/sidekiq/api.rb +540 -106
  28. data/lib/sidekiq/cli.rb +131 -71
  29. data/lib/sidekiq/client.rb +168 -96
  30. data/lib/sidekiq/core_ext.rb +36 -8
  31. data/lib/sidekiq/exception_handler.rb +20 -28
  32. data/lib/sidekiq/extensions/action_mailer.rb +25 -5
  33. data/lib/sidekiq/extensions/active_record.rb +8 -4
  34. data/lib/sidekiq/extensions/class_methods.rb +9 -5
  35. data/lib/sidekiq/extensions/generic_proxy.rb +1 -0
  36. data/lib/sidekiq/fetch.rb +45 -101
  37. data/lib/sidekiq/launcher.rb +144 -30
  38. data/lib/sidekiq/logging.rb +69 -12
  39. data/lib/sidekiq/manager.rb +90 -140
  40. data/lib/sidekiq/middleware/chain.rb +18 -5
  41. data/lib/sidekiq/middleware/i18n.rb +9 -2
  42. data/lib/sidekiq/middleware/server/active_record.rb +1 -1
  43. data/lib/sidekiq/middleware/server/logging.rb +11 -11
  44. data/lib/sidekiq/middleware/server/retry_jobs.rb +98 -44
  45. data/lib/sidekiq/paginator.rb +20 -8
  46. data/lib/sidekiq/processor.rb +157 -96
  47. data/lib/sidekiq/rails.rb +109 -5
  48. data/lib/sidekiq/redis_connection.rb +70 -24
  49. data/lib/sidekiq/scheduled.rb +122 -50
  50. data/lib/sidekiq/testing.rb +171 -31
  51. data/lib/sidekiq/testing/inline.rb +1 -0
  52. data/lib/sidekiq/util.rb +31 -5
  53. data/lib/sidekiq/version.rb +2 -1
  54. data/lib/sidekiq/web.rb +136 -263
  55. data/lib/sidekiq/web/action.rb +93 -0
  56. data/lib/sidekiq/web/application.rb +336 -0
  57. data/lib/sidekiq/web/helpers.rb +278 -0
  58. data/lib/sidekiq/web/router.rb +100 -0
  59. data/lib/sidekiq/worker.rb +40 -7
  60. data/sidekiq.gemspec +18 -14
  61. data/web/assets/images/favicon.ico +0 -0
  62. data/web/assets/images/{status-sd8051fd480.png → status.png} +0 -0
  63. data/web/assets/javascripts/application.js +67 -19
  64. data/web/assets/javascripts/dashboard.js +138 -29
  65. data/web/assets/stylesheets/application.css +267 -406
  66. data/web/assets/stylesheets/bootstrap.css +4 -8
  67. data/web/locales/cs.yml +78 -0
  68. data/web/locales/da.yml +9 -1
  69. data/web/locales/de.yml +18 -9
  70. data/web/locales/el.yml +68 -0
  71. data/web/locales/en.yml +19 -4
  72. data/web/locales/es.yml +10 -1
  73. data/web/locales/fa.yml +79 -0
  74. data/web/locales/fr.yml +50 -32
  75. data/web/locales/hi.yml +75 -0
  76. data/web/locales/it.yml +27 -18
  77. data/web/locales/ja.yml +27 -12
  78. data/web/locales/ko.yml +8 -3
  79. data/web/locales/{no.yml → nb.yml} +19 -5
  80. data/web/locales/nl.yml +8 -3
  81. data/web/locales/pl.yml +0 -1
  82. data/web/locales/pt-br.yml +11 -4
  83. data/web/locales/pt.yml +8 -1
  84. data/web/locales/ru.yml +39 -21
  85. data/web/locales/sv.yml +68 -0
  86. data/web/locales/ta.yml +75 -0
  87. data/web/locales/uk.yml +76 -0
  88. data/web/locales/zh-cn.yml +68 -0
  89. data/web/locales/zh-tw.yml +68 -0
  90. data/web/views/_footer.erb +17 -0
  91. data/web/views/_job_info.erb +72 -60
  92. data/web/views/_nav.erb +58 -25
  93. data/web/views/_paging.erb +5 -5
  94. data/web/views/_poll_link.erb +7 -0
  95. data/web/views/_summary.erb +20 -14
  96. data/web/views/busy.erb +94 -0
  97. data/web/views/dashboard.erb +34 -21
  98. data/web/views/dead.erb +34 -0
  99. data/web/views/layout.erb +8 -30
  100. data/web/views/morgue.erb +75 -0
  101. data/web/views/queue.erb +37 -30
  102. data/web/views/queues.erb +26 -20
  103. data/web/views/retries.erb +60 -47
  104. data/web/views/retry.erb +23 -19
  105. data/web/views/scheduled.erb +39 -35
  106. data/web/views/scheduled_job_info.erb +2 -1
  107. metadata +152 -195
  108. data/Contributing.md +0 -29
  109. data/config.ru +0 -18
  110. data/lib/sidekiq/actor.rb +0 -7
  111. data/lib/sidekiq/capistrano.rb +0 -54
  112. data/lib/sidekiq/yaml_patch.rb +0 -21
  113. data/test/config.yml +0 -11
  114. data/test/env_based_config.yml +0 -11
  115. data/test/fake_env.rb +0 -0
  116. data/test/helper.rb +0 -42
  117. data/test/test_api.rb +0 -341
  118. data/test/test_cli.rb +0 -326
  119. data/test/test_client.rb +0 -211
  120. data/test/test_exception_handler.rb +0 -124
  121. data/test/test_extensions.rb +0 -105
  122. data/test/test_fetch.rb +0 -44
  123. data/test/test_manager.rb +0 -83
  124. data/test/test_middleware.rb +0 -135
  125. data/test/test_processor.rb +0 -160
  126. data/test/test_redis_connection.rb +0 -97
  127. data/test/test_retry.rb +0 -306
  128. data/test/test_scheduled.rb +0 -86
  129. data/test/test_scheduling.rb +0 -47
  130. data/test/test_sidekiq.rb +0 -37
  131. data/test/test_testing.rb +0 -82
  132. data/test/test_testing_fake.rb +0 -265
  133. data/test/test_testing_inline.rb +0 -92
  134. data/test/test_util.rb +0 -18
  135. data/test/test_web.rb +0 -372
  136. data/web/assets/images/bootstrap/glyphicons-halflings-white.png +0 -0
  137. data/web/assets/images/bootstrap/glyphicons-halflings.png +0 -0
  138. data/web/assets/images/status/active.png +0 -0
  139. data/web/assets/images/status/idle.png +0 -0
  140. data/web/assets/javascripts/locales/README.md +0 -27
  141. data/web/assets/javascripts/locales/jquery.timeago.ar.js +0 -96
  142. data/web/assets/javascripts/locales/jquery.timeago.bg.js +0 -18
  143. data/web/assets/javascripts/locales/jquery.timeago.bs.js +0 -49
  144. data/web/assets/javascripts/locales/jquery.timeago.ca.js +0 -18
  145. data/web/assets/javascripts/locales/jquery.timeago.cy.js +0 -20
  146. data/web/assets/javascripts/locales/jquery.timeago.cz.js +0 -18
  147. data/web/assets/javascripts/locales/jquery.timeago.da.js +0 -18
  148. data/web/assets/javascripts/locales/jquery.timeago.de.js +0 -18
  149. data/web/assets/javascripts/locales/jquery.timeago.el.js +0 -18
  150. data/web/assets/javascripts/locales/jquery.timeago.en-short.js +0 -20
  151. data/web/assets/javascripts/locales/jquery.timeago.en.js +0 -20
  152. data/web/assets/javascripts/locales/jquery.timeago.es.js +0 -18
  153. data/web/assets/javascripts/locales/jquery.timeago.et.js +0 -18
  154. data/web/assets/javascripts/locales/jquery.timeago.fa.js +0 -22
  155. data/web/assets/javascripts/locales/jquery.timeago.fi.js +0 -28
  156. data/web/assets/javascripts/locales/jquery.timeago.fr-short.js +0 -16
  157. data/web/assets/javascripts/locales/jquery.timeago.fr.js +0 -17
  158. data/web/assets/javascripts/locales/jquery.timeago.he.js +0 -18
  159. data/web/assets/javascripts/locales/jquery.timeago.hr.js +0 -49
  160. data/web/assets/javascripts/locales/jquery.timeago.hu.js +0 -18
  161. data/web/assets/javascripts/locales/jquery.timeago.hy.js +0 -18
  162. data/web/assets/javascripts/locales/jquery.timeago.id.js +0 -18
  163. data/web/assets/javascripts/locales/jquery.timeago.it.js +0 -16
  164. data/web/assets/javascripts/locales/jquery.timeago.ja.js +0 -19
  165. data/web/assets/javascripts/locales/jquery.timeago.ko.js +0 -17
  166. data/web/assets/javascripts/locales/jquery.timeago.lt.js +0 -20
  167. data/web/assets/javascripts/locales/jquery.timeago.mk.js +0 -20
  168. data/web/assets/javascripts/locales/jquery.timeago.nl.js +0 -20
  169. data/web/assets/javascripts/locales/jquery.timeago.no.js +0 -18
  170. data/web/assets/javascripts/locales/jquery.timeago.pl.js +0 -31
  171. data/web/assets/javascripts/locales/jquery.timeago.pt-br.js +0 -16
  172. data/web/assets/javascripts/locales/jquery.timeago.pt.js +0 -16
  173. data/web/assets/javascripts/locales/jquery.timeago.ro.js +0 -18
  174. data/web/assets/javascripts/locales/jquery.timeago.rs.js +0 -49
  175. data/web/assets/javascripts/locales/jquery.timeago.ru.js +0 -34
  176. data/web/assets/javascripts/locales/jquery.timeago.sk.js +0 -18
  177. data/web/assets/javascripts/locales/jquery.timeago.sl.js +0 -44
  178. data/web/assets/javascripts/locales/jquery.timeago.sv.js +0 -18
  179. data/web/assets/javascripts/locales/jquery.timeago.th.js +0 -20
  180. data/web/assets/javascripts/locales/jquery.timeago.tr.js +0 -16
  181. data/web/assets/javascripts/locales/jquery.timeago.uk.js +0 -34
  182. data/web/assets/javascripts/locales/jquery.timeago.uz.js +0 -19
  183. data/web/assets/javascripts/locales/jquery.timeago.zh-CN.js +0 -20
  184. data/web/assets/javascripts/locales/jquery.timeago.zh-TW.js +0 -20
  185. data/web/views/_poll.erb +0 -14
  186. data/web/views/_workers.erb +0 -29
  187. data/web/views/index.erb +0 -16
@@ -1,38 +1,45 @@
1
1
  <header class="row">
2
2
  <div class="col-sm-5">
3
3
  <h3>
4
- <%= t('CurrentMessagesInQueue', :queue => @name) %>
4
+ <%= t('CurrentMessagesInQueue', :queue => h(@name)) %>
5
+ <% if @queue.paused? %>
6
+ <span class="label label-danger"><%= t('Paused') %></span>
7
+ <% end %>
5
8
  </h3>
6
9
  </div>
7
10
  <div class="col-sm-4 pull-right">
8
- <%= erb :_paging, :locals => { :url => "#{root_path}queues/#{@name}" } %>
11
+ <%= erb :_paging, locals: { url: "#{root_path}queues/#{CGI.escape(@name)}" } %>
9
12
  </div>
10
13
  </header>
11
- <table class="queue table table-hover table-bordered table-striped">
12
- <thead>
13
- <th><%= t('Class') %></th>
14
- <th><%= t('Arguments') %></th>
15
- <th></th>
16
- </thead>
17
- <% @messages.each_with_index do |msg, index| %>
18
- <tr>
19
- <td><%= msg['class'] %></td>
20
- <td>
21
- <% if msg['args'] and msg['args'].to_s.size > 100 %>
22
- <%= msg['args'].inspect[0..100] + "... " %>
23
- <button data-toggle="collapse" data-target="#worker_<%= index %>" class="btn btn-default btn-xs"><%= t('ShowAll') %></button>
24
- <div class="toggle" id="worker_<%= index %>" style="display: none;"><%= msg['args'] %></div>
25
- <% else %>
26
- <%= msg['args'] %>
27
- <% end %>
28
- </td>
29
- <td>
30
- <form action="<%= root_path %>queues/<%= @name %>/delete" method="post">
31
- <input name="key_val" value="<%= h Sidekiq.dump_json(msg) %>" type="hidden" />
32
- <input class="btn btn-danger btn-xs" type="submit" name="delete" value="<%= t('Delete') %>" data-confirm="<%= t('AreYouSure') %>" />
33
- </form>
34
- </td>
35
- </tr>
36
- <% end %>
37
- </table>
38
- <%= erb :_paging, :locals => { :url => "#{root_path}queues/#{@name}" } %>
14
+ <div class="table_container">
15
+ <table class="queue table table-hover table-bordered table-striped">
16
+ <thead>
17
+ <th><%= t('Job') %></th>
18
+ <th><%= t('Arguments') %></th>
19
+ <th></th>
20
+ </thead>
21
+ <% @messages.each_with_index do |msg, index| %>
22
+ <tr>
23
+ <td><%= h(msg.display_class) %></td>
24
+ <td>
25
+ <% a = msg.display_args.inspect %>
26
+ <% if a.size > 100 %>
27
+ <span class="worker_<%= index %>"><%= h(msg.display_args.inspect[0..100]) + "... " %></span>
28
+ <button data-toggle="collapse" data-target=".worker_<%= index %>" class="btn btn-default btn-xs"><%= t('ShowAll') %></button>
29
+ <div class="toggle worker_<%= index %>"><%= h(msg.display_args) %></div>
30
+ <% else %>
31
+ <%= h(msg.display_args) %>
32
+ <% end %>
33
+ </td>
34
+ <td>
35
+ <form action="<%= root_path %>queues/<%= CGI.escape(@name) %>/delete" method="post">
36
+ <%= csrf_tag %>
37
+ <input name="key_val" value="<%= h Sidekiq.dump_json(msg.item) %>" type="hidden" />
38
+ <input class="btn btn-danger btn-xs" type="submit" name="delete" value="<%= t('Delete') %>" data-confirm="<%= t('AreYouSure') %>" />
39
+ </form>
40
+ </td>
41
+ </tr>
42
+ <% end %>
43
+ </table>
44
+ </div>
45
+ <%= erb :_paging, locals: { url: "#{root_path}queues/#{@name}" } %>
@@ -1,22 +1,28 @@
1
1
  <h3><%= t('Queues') %></h3>
2
2
 
3
- <table class="queues table table-hover table-bordered table-striped table-white">
4
- <thead>
5
- <th><%= t('Queue') %></th>
6
- <th><%= t('Size') %></th>
7
- <th><%= t('Actions') %></th>
8
- </thead>
9
- <% @queues.each do |queue| %>
10
- <tr>
11
- <td>
12
- <a href="<%= root_path %>queues/<%= queue.name %>"><%= queue.name %></a>
13
- </td>
14
- <td><%= number_with_delimiter(queue.size) %> </td>
15
- <td width="20%">
16
- <form action="<%=root_path %>queues/<%= queue.name %>" method="post">
17
- <input class="btn btn-danger btn-xs" type="submit" name="delete" value="<%= t('Delete') %>" data-confirm="<%= t('AreYouSureDeleteQueue', :queue => queue.name) %>" />
18
- </form>
19
- </td>
20
- </tr>
21
- <% end %>
22
- </table>
3
+ <div class="table_container">
4
+ <table class="queues table table-hover table-bordered table-striped table-white">
5
+ <thead>
6
+ <th><%= t('Queue') %></th>
7
+ <th><%= t('Size') %></th>
8
+ <th><%= t('Actions') %></th>
9
+ </thead>
10
+ <% @queues.each do |queue| %>
11
+ <tr>
12
+ <td>
13
+ <a href="<%= root_path %>queues/<%= CGI.escape(queue.name) %>"><%= h queue.name %></a>
14
+ <% if queue.paused? %>
15
+ <span class="label label-danger"><%= t('Paused') %></span>
16
+ <% end %>
17
+ </td>
18
+ <td><%= number_with_delimiter(queue.size) %> </td>
19
+ <td class="delete-confirm">
20
+ <form action="<%=root_path %>queues/<%= CGI.escape(queue.name) %>" method="post">
21
+ <%= csrf_tag %>
22
+ <input class="btn btn-danger btn-xs" type="submit" name="delete" value="<%= t('Delete') %>" data-confirm="<%= t('AreYouSureDeleteQueue', :queue => h(queue.name)) %>" />
23
+ </form>
24
+ </td>
25
+ </tr>
26
+ <% end %>
27
+ </table>
28
+ </div>
@@ -2,61 +2,74 @@
2
2
  <div class="col-sm-5">
3
3
  <h3><%= t('Retries') %></h3>
4
4
  </div>
5
- <div class="col-sm-4">
6
- <% if @retries.size > 0 %>
7
- <%= erb :_paging, :locals => { :url => "#{root_path}retries" } %>
8
- <% end %>
9
- </div>
5
+ <% if @retries.size > 0 && @total_size > @count %>
6
+ <div class="col-sm-4">
7
+ <%= erb :_paging, locals: { url: "#{root_path}retries" } %>
8
+ </div>
9
+ <% end %>
10
+ <%= filtering('retries') %>
10
11
  </header>
11
12
 
12
13
  <% if @retries.size > 0 %>
13
14
  <form action="<%= root_path %>retries" method="post">
14
- <table class="table table-striped table-bordered table-white">
15
- <thead>
16
- <tr>
17
- <th width="20px">
18
- <input type="checkbox" class="check_all" />
19
- </th>
20
- <th width="25%"><%= t('NextRetry') %></th>
21
- <th width="11%"><%= t('RetryCount') %></th>
22
- <th><%= t('Queue') %></th>
23
- <th><%= t('Worker') %></th>
24
- <th><%= t('Arguments') %></th>
25
- <th><%= t('Error') %></th>
26
- </tr>
27
- </thead>
28
- <% @retries.each do |msg, score| %>
29
- <tr>
30
- <td>
31
- <input type='checkbox' name='key[]' value='<%= job_params(msg, score) %>' />
32
- </td>
33
- <td>
34
- <a href="<%= root_path %>retries/<%= job_params(msg, score) %>"><%= relative_time(Time.at(score)) %></a>
35
- </td>
36
- <td><%= msg['retry_count'] %></td>
37
- <td>
38
- <a href="<%= root_path %>queues/<%= msg['queue'] %>"><%= msg['queue'] %></a>
39
- </td>
40
- <td><%= msg['class'] %></td>
41
- <td>
42
- <div class="args"><%= display_args(msg['args']) %></div>
43
- </td>
44
- <td>
45
- <div><%= truncate("#{msg['error_class']}: #{msg['error_message']}", 200) %></div>
46
- </td>
47
- </tr>
48
- <% end %>
49
- </table>
15
+ <%= csrf_tag %>
16
+ <div class="table_container">
17
+ <table class="table table-striped table-bordered table-white">
18
+ <thead>
19
+ <tr>
20
+ <th class="table-checkbox checkbox-column">
21
+ <label>
22
+ <input type="checkbox" class="check_all" />
23
+ </label>
24
+ </th>
25
+ <th><%= t('NextRetry') %></th>
26
+ <th><%= t('RetryCount') %></th>
27
+ <th><%= t('Queue') %></th>
28
+ <th><%= t('Job') %></th>
29
+ <th><%= t('Arguments') %></th>
30
+ <th><%= t('Error') %></th>
31
+ </tr>
32
+ </thead>
33
+ <% @retries.each do |entry| %>
34
+ <tr>
35
+ <td class="table-checkbox">
36
+ <label>
37
+ <input type='checkbox' name='key[]' value='<%= job_params(entry.item, entry.score) %>' />
38
+ </label>
39
+ </td>
40
+ <td>
41
+ <a href="<%= root_path %>retries/<%= job_params(entry.item, entry.score) %>"><%= relative_time(entry.at) %></a>
42
+ </td>
43
+ <td><%= entry['retry_count'] %></td>
44
+ <td>
45
+ <a href="<%= root_path %>queues/<%= entry.queue %>"><%= entry.queue %></a>
46
+ </td>
47
+ <td><%= entry.display_class %></td>
48
+ <td>
49
+ <div class="args"><%= display_args(entry.display_args) %></div>
50
+ </td>
51
+ <td>
52
+ <div><%= h truncate("#{entry['error_class']}: #{entry['error_message']}", 200) %></div>
53
+ </td>
54
+ </tr>
55
+ <% end %>
56
+ </table>
57
+ </div>
50
58
  <input class="btn btn-primary btn-xs pull-left" type="submit" name="retry" value="<%= t('RetryNow') %>" />
51
59
  <input class="btn btn-danger btn-xs pull-left" type="submit" name="delete" value="<%= t('Delete') %>" />
60
+ <input class="btn btn-danger btn-xs pull-left" type="submit" name="kill" value="<%= t('Kill') %>" />
52
61
  </form>
53
62
 
54
- <form action="<%= root_path %>retries/all/delete" method="post">
55
- <input class="btn btn-danger btn-xs pull-right" type="submit" name="delete" value="<%= t('DeleteAll') %>" data-confirm="<%= t('AreYouSure') %>" />
56
- </form>
57
- <form action="<%= root_path %>retries/all/retry" method="post">
58
- <input class="btn btn-danger btn-xs pull-right" type="submit" name="retry" value="<%= t('RetryAll') %>" data-confirm="<%= t('AreYouSure') %>" />
59
- </form>
63
+ <% unfiltered? do %>
64
+ <form action="<%= root_path %>retries/all/delete" method="post">
65
+ <%= csrf_tag %>
66
+ <input class="btn btn-danger btn-xs pull-right" type="submit" name="delete" value="<%= t('DeleteAll') %>" data-confirm="<%= t('AreYouSure') %>" />
67
+ </form>
68
+ <form action="<%= root_path %>retries/all/retry" method="post">
69
+ <%= csrf_tag %>
70
+ <input class="btn btn-danger btn-xs pull-right" type="submit" name="retry" value="<%= t('RetryAll') %>" data-confirm="<%= t('AreYouSure') %>" />
71
+ </form>
72
+ <% end %>
60
73
 
61
74
  <% else %>
62
75
  <div class="alert alert-success"><%= t('NoRetriesFound') %></div>
@@ -1,29 +1,33 @@
1
- <%= erb :_job_info, :locals => {:job => @retry, :type => :retry} %>
1
+ <%= erb :_job_info, locals: { job: @retry, type: :retry } %>
2
2
 
3
3
  <h3><%= t('Error') %></h3>
4
- <table class="error table table-bordered table-striped">
5
- <tbody>
6
- <tr>
7
- <th><%= t('ErrorClass') %></th>
8
- <td>
9
- <code><%= @retry['error_class'] %></code>
10
- </td>
11
- </tr>
12
- <tr>
13
- <th><%= t('ErrorMessage') %></th>
14
- <td><%= @retry['error_message'] %></td>
15
- </tr>
16
- <% if !@retry['error_backtrace'].nil? %>
4
+ <div class="table_container">
5
+ <table class="error table table-bordered table-striped">
6
+ <tbody>
17
7
  <tr>
18
- <th><%= t('ErrorBacktrace') %></th>
8
+ <th><%= t('ErrorClass') %></th>
19
9
  <td>
20
- <code><%= @retry['error_backtrace'].join("<br/>") %></code>
10
+ <code><%= h @retry['error_class'] %></code>
21
11
  </td>
22
12
  </tr>
23
- <% end %>
24
- </tbody>
25
- </table>
13
+ <tr>
14
+ <th><%= t('ErrorMessage') %></th>
15
+ <td><%= h(@retry['error_message']) %></td>
16
+ </tr>
17
+ <% if !@retry['error_backtrace'].nil? %>
18
+ <tr>
19
+ <th><%= t('ErrorBacktrace') %></th>
20
+ <td>
21
+ <code><%= @retry['error_backtrace'].join("<br/>") %></code>
22
+ </td>
23
+ </tr>
24
+ <% end %>
25
+ </tbody>
26
+ </table>
27
+ </div>
28
+
26
29
  <form class="form-horizontal" action="<%= root_path %>retries/<%= job_params(@retry, @retry.score) %>" method="post">
30
+ <%= csrf_tag %>
27
31
  <a class="btn btn-default" href="<%= root_path %>retries"><%= t('GoBack') %></a>
28
32
  <input class="btn btn-primary" type="submit" name="retry" value="<%= t('RetryNow') %>" />
29
33
  <input class="btn btn-danger" type="submit" name="delete" value="<%= t('Delete') %>" />
@@ -2,46 +2,50 @@
2
2
  <div class="col-sm-5">
3
3
  <h3><%= t('ScheduledJobs') %></h3>
4
4
  </div>
5
- <div class="col-sm-4">
6
- <% if @scheduled.size > 0 %>
7
- <%= erb :_paging, :locals => { :url => "#{root_path}scheduled" } %>
8
- <% end %>
9
- </div>
5
+ <% if @scheduled.size > 0 && @total_size > @count %>
6
+ <div class="col-sm-4">
7
+ <%= erb :_paging, locals: { url: "#{root_path}scheduled" } %>
8
+ </div>
9
+ <% end %>
10
+ <%= filtering('scheduled') %>
10
11
  </header>
11
12
 
12
13
  <% if @scheduled.size > 0 %>
13
14
 
14
15
  <form action="<%= root_path %>scheduled" method="post">
15
- <table class="table table-striped table-bordered table-white">
16
- <thead>
17
- <tr>
18
- <th width="20px">
19
- <input type="checkbox" class="check_all" />
20
- </th>
21
- <th width="25%"><%= t('When') %></th>
22
- <th width="10%"><%= t('Queue') %></th>
23
- <th><%= t('Worker') %></th>
24
- <th><%= t('Arguments') %></th>
25
- </tr>
26
- </thead>
27
- <% @scheduled.each do |msg, score| %>
28
- <tr>
29
- <td>
30
- <input type='checkbox' name='key[]' value='<%= job_params(msg, score) %>' />
31
- </td>
32
- <td>
33
- <a href="<%= root_path %>scheduled/<%= job_params(msg, score) %>"><%= relative_time(Time.at(score)) %></a>
34
- </td>
35
- <td>
36
- <a href="<%= root_path %>queues/<%= msg['queue'] %>"><%= msg['queue'] %></a>
37
- </td>
38
- <td><%= msg['class'] %></td>
39
- <td>
40
- <div class="args"><%= display_args(msg['args']) %></div>
41
- </td>
42
- </tr>
43
- <% end %>
44
- </table>
16
+ <%= csrf_tag %>
17
+ <div class="table_container">
18
+ <table class="table table-striped table-bordered table-white">
19
+ <thead>
20
+ <tr>
21
+ <th class="checkbox-column">
22
+ <input type="checkbox" class="check_all" />
23
+ </th>
24
+ <th><%= t('When') %></th>
25
+ <th><%= t('Queue') %></th>
26
+ <th><%= t('Job') %></th>
27
+ <th><%= t('Arguments') %></th>
28
+ </tr>
29
+ </thead>
30
+ <% @scheduled.each do |entry| %>
31
+ <tr>
32
+ <td>
33
+ <input type='checkbox' name='key[]' value='<%= job_params(entry.item, entry.score) %>' />
34
+ </td>
35
+ <td>
36
+ <a href="<%= root_path %>scheduled/<%= job_params(entry.item, entry.score) %>"><%= relative_time(entry.at) %></a>
37
+ </td>
38
+ <td>
39
+ <a href="<%= root_path %>queues/<%= entry.queue %>"><%= entry.queue %></a>
40
+ </td>
41
+ <td><%= entry.display_class %></td>
42
+ <td>
43
+ <div class="args"><%= display_args(entry.display_args) %></div>
44
+ </td>
45
+ </tr>
46
+ <% end %>
47
+ </table>
48
+ </div>
45
49
  <input class="btn btn-danger pull-right" type="submit" name="delete" value="<%= t('Delete') %>" />
46
50
  <input class="btn btn-danger pull-right" type="submit" name="add_to_queue" value="<%= t('AddToQueue') %>" />
47
51
  </form>
@@ -1,6 +1,7 @@
1
- <%= erb :_job_info, :locals => {:job => @job, :type => :scheduled} %>
1
+ <%= erb :_job_info, locals: { job: @job, type: :scheduled } %>
2
2
 
3
3
  <form class="form-horizontal" action="<%= root_path %>scheduled/<%= job_params(@job, @job.score) %>" method="post">
4
+ <%= csrf_tag %>
4
5
  <a class="btn btn-default" href="<%= root_path %>scheduled"><%= t('GoBack') %></a>
5
6
  <input class="btn btn-primary" type="submit" name="add_to_queue" value="<%= t('AddToQueue') %>" />
6
7
  <input class="btn btn-danger" type="submit" name="delete" value="<%= t('Delete') %>" />
metadata CHANGED
@@ -1,193 +1,222 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.15.1
5
- prerelease:
4
+ version: 4.2.10
6
5
  platform: ruby
7
6
  authors:
8
7
  - Mike Perham
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-10-04 00:00:00.000000000 Z
11
+ date: 2017-03-17 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: redis
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
- version: 3.0.4
19
+ version: '3.2'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 3.2.1
22
23
  type: :runtime
23
24
  prerelease: false
24
25
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
26
  requirements:
27
- - - ! '>='
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '3.2'
30
+ - - ">="
28
31
  - !ruby/object:Gem::Version
29
- version: 3.0.4
32
+ version: 3.2.1
30
33
  - !ruby/object:Gem::Dependency
31
- name: redis-namespace
34
+ name: connection_pool
32
35
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
36
  requirements:
35
- - - ! '>='
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.2'
40
+ - - ">="
36
41
  - !ruby/object:Gem::Version
37
- version: 1.3.1
42
+ version: 2.2.0
38
43
  type: :runtime
39
44
  prerelease: false
40
45
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
46
  requirements:
43
- - - ! '>='
47
+ - - "~>"
44
48
  - !ruby/object:Gem::Version
45
- version: 1.3.1
49
+ version: '2.2'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 2.2.0
46
53
  - !ruby/object:Gem::Dependency
47
- name: connection_pool
54
+ name: concurrent-ruby
48
55
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
56
  requirements:
51
- - - ! '>='
57
+ - - "~>"
52
58
  - !ruby/object:Gem::Version
53
- version: 1.0.0
59
+ version: '1.0'
54
60
  type: :runtime
55
61
  prerelease: false
56
62
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
63
  requirements:
59
- - - ! '>='
64
+ - - "~>"
60
65
  - !ruby/object:Gem::Version
61
- version: 1.0.0
66
+ version: '1.0'
62
67
  - !ruby/object:Gem::Dependency
63
- name: celluloid
68
+ name: rack-protection
64
69
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
70
  requirements:
67
- - - ! '>='
71
+ - - ">="
68
72
  - !ruby/object:Gem::Version
69
- version: 0.15.1
73
+ version: 1.5.0
70
74
  type: :runtime
71
75
  prerelease: false
72
76
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
77
  requirements:
75
- - - ! '>='
78
+ - - ">="
76
79
  - !ruby/object:Gem::Version
77
- version: 0.15.1
80
+ version: 1.5.0
78
81
  - !ruby/object:Gem::Dependency
79
- name: json
82
+ name: redis-namespace
80
83
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
84
  requirements:
83
- - - ! '>='
85
+ - - "~>"
84
86
  - !ruby/object:Gem::Version
85
- version: '0'
86
- type: :runtime
87
+ version: '1.5'
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: 1.5.2
91
+ type: :development
87
92
  prerelease: false
88
93
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
94
  requirements:
91
- - - ! '>='
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '1.5'
98
+ - - ">="
92
99
  - !ruby/object:Gem::Version
93
- version: '0'
100
+ version: 1.5.2
94
101
  - !ruby/object:Gem::Dependency
95
- name: sinatra
102
+ name: minitest
96
103
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
104
  requirements:
99
- - - ! '>='
105
+ - - "~>"
106
+ - !ruby/object:Gem::Version
107
+ version: '5.10'
108
+ - - ">="
100
109
  - !ruby/object:Gem::Version
101
- version: '0'
110
+ version: 5.10.1
102
111
  type: :development
103
112
  prerelease: false
104
113
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
114
  requirements:
107
- - - ! '>='
115
+ - - "~>"
108
116
  - !ruby/object:Gem::Version
109
- version: '0'
117
+ version: '5.10'
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: 5.10.1
110
121
  - !ruby/object:Gem::Dependency
111
- name: minitest
122
+ name: rake
112
123
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
124
  requirements:
115
- - - ~>
125
+ - - "~>"
116
126
  - !ruby/object:Gem::Version
117
- version: '4.2'
127
+ version: '10.0'
118
128
  type: :development
119
129
  prerelease: false
120
130
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
131
  requirements:
123
- - - ~>
132
+ - - "~>"
124
133
  - !ruby/object:Gem::Version
125
- version: '4.2'
134
+ version: '10.0'
126
135
  - !ruby/object:Gem::Dependency
127
- name: rake
136
+ name: rails
137
+ requirement: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: 3.2.0
142
+ type: :development
143
+ prerelease: false
144
+ version_requirements: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ version: 3.2.0
149
+ - !ruby/object:Gem::Dependency
150
+ name: capybara
151
+ requirement: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - "~>"
154
+ - !ruby/object:Gem::Version
155
+ version: '2.11'
156
+ type: :development
157
+ prerelease: false
158
+ version_requirements: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - "~>"
161
+ - !ruby/object:Gem::Version
162
+ version: '2.11'
163
+ - !ruby/object:Gem::Dependency
164
+ name: poltergeist
128
165
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
166
  requirements:
131
- - - ! '>='
167
+ - - "~>"
132
168
  - !ruby/object:Gem::Version
133
- version: '0'
169
+ version: '1.12'
134
170
  type: :development
135
171
  prerelease: false
136
172
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
173
  requirements:
139
- - - ! '>='
174
+ - - "~>"
140
175
  - !ruby/object:Gem::Version
141
- version: '0'
176
+ version: '1.12'
142
177
  - !ruby/object:Gem::Dependency
143
- name: actionmailer
178
+ name: percy-capybara
144
179
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
180
  requirements:
147
- - - ! '>='
181
+ - - "~>"
148
182
  - !ruby/object:Gem::Version
149
- version: 4.0.0
183
+ version: '2.3'
150
184
  type: :development
151
185
  prerelease: false
152
186
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
187
  requirements:
155
- - - ! '>='
188
+ - - "~>"
156
189
  - !ruby/object:Gem::Version
157
- version: 4.0.0
190
+ version: '2.3'
158
191
  - !ruby/object:Gem::Dependency
159
- name: activerecord
192
+ name: timecop
160
193
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
194
  requirements:
163
- - - ! '>='
195
+ - - "~>"
164
196
  - !ruby/object:Gem::Version
165
- version: 4.0.0
197
+ version: '0.8'
166
198
  type: :development
167
199
  prerelease: false
168
200
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
201
  requirements:
171
- - - ! '>='
202
+ - - "~>"
172
203
  - !ruby/object:Gem::Version
173
- version: 4.0.0
204
+ version: '0.8'
174
205
  - !ruby/object:Gem::Dependency
175
- name: coveralls
206
+ name: mocha
176
207
  requirement: !ruby/object:Gem::Requirement
177
- none: false
178
208
  requirements:
179
- - - ! '>='
209
+ - - "~>"
180
210
  - !ruby/object:Gem::Version
181
- version: '0'
211
+ version: '1.1'
182
212
  type: :development
183
213
  prerelease: false
184
214
  version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
215
  requirements:
187
- - - ! '>='
216
+ - - "~>"
188
217
  - !ruby/object:Gem::Version
189
- version: '0'
190
- description: Simple, efficient background processing for Ruby
218
+ version: '1.1'
219
+ description: Simple, efficient background processing for Ruby.
191
220
  email:
192
221
  - mperham@gmail.com
193
222
  executables:
@@ -196,23 +225,32 @@ executables:
196
225
  extensions: []
197
226
  extra_rdoc_files: []
198
227
  files:
199
- - .gitignore
200
- - .travis.yml
228
+ - ".github/contributing.md"
229
+ - ".github/issue_template.md"
230
+ - ".gitignore"
231
+ - ".travis.yml"
232
+ - 3.0-Upgrade.md
233
+ - 4.0-Upgrade.md
201
234
  - COMM-LICENSE
202
235
  - Changes.md
203
- - Contributing.md
236
+ - Ent-Changes.md
204
237
  - Gemfile
205
238
  - LICENSE
239
+ - Pro-2.0-Upgrade.md
240
+ - Pro-3.0-Upgrade.md
206
241
  - Pro-Changes.md
207
242
  - README.md
208
243
  - Rakefile
209
244
  - bin/sidekiq
210
245
  - bin/sidekiqctl
211
- - config.ru
246
+ - bin/sidekiqload
247
+ - code_of_conduct.md
248
+ - lib/generators/sidekiq/templates/worker.rb.erb
249
+ - lib/generators/sidekiq/templates/worker_spec.rb.erb
250
+ - lib/generators/sidekiq/templates/worker_test.rb.erb
251
+ - lib/generators/sidekiq/worker_generator.rb
212
252
  - lib/sidekiq.rb
213
- - lib/sidekiq/actor.rb
214
253
  - lib/sidekiq/api.rb
215
- - lib/sidekiq/capistrano.rb
216
254
  - lib/sidekiq/cli.rb
217
255
  - lib/sidekiq/client.rb
218
256
  - lib/sidekiq/core_ext.rb
@@ -240,111 +278,54 @@ files:
240
278
  - lib/sidekiq/util.rb
241
279
  - lib/sidekiq/version.rb
242
280
  - lib/sidekiq/web.rb
281
+ - lib/sidekiq/web/action.rb
282
+ - lib/sidekiq/web/application.rb
283
+ - lib/sidekiq/web/helpers.rb
284
+ - lib/sidekiq/web/router.rb
243
285
  - lib/sidekiq/worker.rb
244
- - lib/sidekiq/yaml_patch.rb
245
286
  - sidekiq.gemspec
246
- - test/config.yml
247
- - test/env_based_config.yml
248
- - test/fake_env.rb
249
- - test/helper.rb
250
- - test/test_api.rb
251
- - test/test_cli.rb
252
- - test/test_client.rb
253
- - test/test_exception_handler.rb
254
- - test/test_extensions.rb
255
- - test/test_fetch.rb
256
- - test/test_manager.rb
257
- - test/test_middleware.rb
258
- - test/test_processor.rb
259
- - test/test_redis_connection.rb
260
- - test/test_retry.rb
261
- - test/test_scheduled.rb
262
- - test/test_scheduling.rb
263
- - test/test_sidekiq.rb
264
- - test/test_testing.rb
265
- - test/test_testing_fake.rb
266
- - test/test_testing_inline.rb
267
- - test/test_util.rb
268
- - test/test_web.rb
269
- - web/assets/images/bootstrap/glyphicons-halflings-white.png
270
- - web/assets/images/bootstrap/glyphicons-halflings.png
287
+ - web/assets/images/favicon.ico
271
288
  - web/assets/images/logo.png
272
- - web/assets/images/status-sd8051fd480.png
273
- - web/assets/images/status/active.png
274
- - web/assets/images/status/idle.png
289
+ - web/assets/images/status.png
275
290
  - web/assets/javascripts/application.js
276
291
  - web/assets/javascripts/dashboard.js
277
- - web/assets/javascripts/locales/README.md
278
- - web/assets/javascripts/locales/jquery.timeago.ar.js
279
- - web/assets/javascripts/locales/jquery.timeago.bg.js
280
- - web/assets/javascripts/locales/jquery.timeago.bs.js
281
- - web/assets/javascripts/locales/jquery.timeago.ca.js
282
- - web/assets/javascripts/locales/jquery.timeago.cy.js
283
- - web/assets/javascripts/locales/jquery.timeago.cz.js
284
- - web/assets/javascripts/locales/jquery.timeago.da.js
285
- - web/assets/javascripts/locales/jquery.timeago.de.js
286
- - web/assets/javascripts/locales/jquery.timeago.el.js
287
- - web/assets/javascripts/locales/jquery.timeago.en-short.js
288
- - web/assets/javascripts/locales/jquery.timeago.en.js
289
- - web/assets/javascripts/locales/jquery.timeago.es.js
290
- - web/assets/javascripts/locales/jquery.timeago.et.js
291
- - web/assets/javascripts/locales/jquery.timeago.fa.js
292
- - web/assets/javascripts/locales/jquery.timeago.fi.js
293
- - web/assets/javascripts/locales/jquery.timeago.fr-short.js
294
- - web/assets/javascripts/locales/jquery.timeago.fr.js
295
- - web/assets/javascripts/locales/jquery.timeago.he.js
296
- - web/assets/javascripts/locales/jquery.timeago.hr.js
297
- - web/assets/javascripts/locales/jquery.timeago.hu.js
298
- - web/assets/javascripts/locales/jquery.timeago.hy.js
299
- - web/assets/javascripts/locales/jquery.timeago.id.js
300
- - web/assets/javascripts/locales/jquery.timeago.it.js
301
- - web/assets/javascripts/locales/jquery.timeago.ja.js
302
- - web/assets/javascripts/locales/jquery.timeago.ko.js
303
- - web/assets/javascripts/locales/jquery.timeago.lt.js
304
- - web/assets/javascripts/locales/jquery.timeago.mk.js
305
- - web/assets/javascripts/locales/jquery.timeago.nl.js
306
- - web/assets/javascripts/locales/jquery.timeago.no.js
307
- - web/assets/javascripts/locales/jquery.timeago.pl.js
308
- - web/assets/javascripts/locales/jquery.timeago.pt-br.js
309
- - web/assets/javascripts/locales/jquery.timeago.pt.js
310
- - web/assets/javascripts/locales/jquery.timeago.ro.js
311
- - web/assets/javascripts/locales/jquery.timeago.rs.js
312
- - web/assets/javascripts/locales/jquery.timeago.ru.js
313
- - web/assets/javascripts/locales/jquery.timeago.sk.js
314
- - web/assets/javascripts/locales/jquery.timeago.sl.js
315
- - web/assets/javascripts/locales/jquery.timeago.sv.js
316
- - web/assets/javascripts/locales/jquery.timeago.th.js
317
- - web/assets/javascripts/locales/jquery.timeago.tr.js
318
- - web/assets/javascripts/locales/jquery.timeago.uk.js
319
- - web/assets/javascripts/locales/jquery.timeago.uz.js
320
- - web/assets/javascripts/locales/jquery.timeago.zh-CN.js
321
- - web/assets/javascripts/locales/jquery.timeago.zh-TW.js
322
292
  - web/assets/stylesheets/application.css
323
293
  - web/assets/stylesheets/bootstrap.css
294
+ - web/locales/cs.yml
324
295
  - web/locales/da.yml
325
296
  - web/locales/de.yml
297
+ - web/locales/el.yml
326
298
  - web/locales/en.yml
327
299
  - web/locales/es.yml
300
+ - web/locales/fa.yml
328
301
  - web/locales/fr.yml
302
+ - web/locales/hi.yml
329
303
  - web/locales/it.yml
330
304
  - web/locales/ja.yml
331
305
  - web/locales/ko.yml
306
+ - web/locales/nb.yml
332
307
  - web/locales/nl.yml
333
- - web/locales/no.yml
334
308
  - web/locales/pl.yml
335
309
  - web/locales/pt-br.yml
336
310
  - web/locales/pt.yml
337
311
  - web/locales/ru.yml
312
+ - web/locales/sv.yml
313
+ - web/locales/ta.yml
314
+ - web/locales/uk.yml
315
+ - web/locales/zh-cn.yml
316
+ - web/locales/zh-tw.yml
317
+ - web/views/_footer.erb
338
318
  - web/views/_job_info.erb
339
319
  - web/views/_nav.erb
340
320
  - web/views/_paging.erb
341
- - web/views/_poll.erb
321
+ - web/views/_poll_link.erb
342
322
  - web/views/_status.erb
343
323
  - web/views/_summary.erb
344
- - web/views/_workers.erb
324
+ - web/views/busy.erb
345
325
  - web/views/dashboard.erb
346
- - web/views/index.erb
326
+ - web/views/dead.erb
347
327
  - web/views/layout.erb
328
+ - web/views/morgue.erb
348
329
  - web/views/queue.erb
349
330
  - web/views/queues.erb
350
331
  - web/views/retries.erb
@@ -354,49 +335,25 @@ files:
354
335
  homepage: http://sidekiq.org
355
336
  licenses:
356
337
  - LGPL-3.0
338
+ metadata: {}
357
339
  post_install_message:
358
340
  rdoc_options: []
359
341
  require_paths:
360
342
  - lib
361
343
  required_ruby_version: !ruby/object:Gem::Requirement
362
- none: false
363
344
  requirements:
364
- - - ! '>='
345
+ - - ">="
365
346
  - !ruby/object:Gem::Version
366
347
  version: '0'
367
348
  required_rubygems_version: !ruby/object:Gem::Requirement
368
- none: false
369
349
  requirements:
370
- - - ! '>='
350
+ - - ">="
371
351
  - !ruby/object:Gem::Version
372
352
  version: '0'
373
353
  requirements: []
374
354
  rubyforge_project:
375
- rubygems_version: 1.8.23
355
+ rubygems_version: 2.5.2
376
356
  signing_key:
377
- specification_version: 3
357
+ specification_version: 4
378
358
  summary: Simple, efficient background processing for Ruby
379
- test_files:
380
- - test/config.yml
381
- - test/env_based_config.yml
382
- - test/fake_env.rb
383
- - test/helper.rb
384
- - test/test_api.rb
385
- - test/test_cli.rb
386
- - test/test_client.rb
387
- - test/test_exception_handler.rb
388
- - test/test_extensions.rb
389
- - test/test_fetch.rb
390
- - test/test_manager.rb
391
- - test/test_middleware.rb
392
- - test/test_processor.rb
393
- - test/test_redis_connection.rb
394
- - test/test_retry.rb
395
- - test/test_scheduled.rb
396
- - test/test_scheduling.rb
397
- - test/test_sidekiq.rb
398
- - test/test_testing.rb
399
- - test/test_testing_fake.rb
400
- - test/test_testing_inline.rb
401
- - test/test_util.rb
402
- - test/test_web.rb
359
+ test_files: []