sidekiq 6.1.0

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 (127) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +71 -0
  3. data/.github/contributing.md +32 -0
  4. data/.github/issue_template.md +11 -0
  5. data/.gitignore +13 -0
  6. data/.standard.yml +20 -0
  7. data/3.0-Upgrade.md +70 -0
  8. data/4.0-Upgrade.md +53 -0
  9. data/5.0-Upgrade.md +56 -0
  10. data/6.0-Upgrade.md +72 -0
  11. data/COMM-LICENSE +97 -0
  12. data/Changes.md +1718 -0
  13. data/Ent-2.0-Upgrade.md +37 -0
  14. data/Ent-Changes.md +269 -0
  15. data/Gemfile +24 -0
  16. data/Gemfile.lock +208 -0
  17. data/LICENSE +9 -0
  18. data/Pro-2.0-Upgrade.md +138 -0
  19. data/Pro-3.0-Upgrade.md +44 -0
  20. data/Pro-4.0-Upgrade.md +35 -0
  21. data/Pro-5.0-Upgrade.md +25 -0
  22. data/Pro-Changes.md +790 -0
  23. data/README.md +94 -0
  24. data/Rakefile +10 -0
  25. data/bin/sidekiq +42 -0
  26. data/bin/sidekiqload +157 -0
  27. data/bin/sidekiqmon +8 -0
  28. data/code_of_conduct.md +50 -0
  29. data/lib/generators/sidekiq/templates/worker.rb.erb +9 -0
  30. data/lib/generators/sidekiq/templates/worker_spec.rb.erb +6 -0
  31. data/lib/generators/sidekiq/templates/worker_test.rb.erb +8 -0
  32. data/lib/generators/sidekiq/worker_generator.rb +57 -0
  33. data/lib/sidekiq.rb +262 -0
  34. data/lib/sidekiq/api.rb +960 -0
  35. data/lib/sidekiq/cli.rb +401 -0
  36. data/lib/sidekiq/client.rb +263 -0
  37. data/lib/sidekiq/delay.rb +41 -0
  38. data/lib/sidekiq/exception_handler.rb +27 -0
  39. data/lib/sidekiq/extensions/action_mailer.rb +47 -0
  40. data/lib/sidekiq/extensions/active_record.rb +43 -0
  41. data/lib/sidekiq/extensions/class_methods.rb +43 -0
  42. data/lib/sidekiq/extensions/generic_proxy.rb +31 -0
  43. data/lib/sidekiq/fetch.rb +82 -0
  44. data/lib/sidekiq/job_logger.rb +63 -0
  45. data/lib/sidekiq/job_retry.rb +262 -0
  46. data/lib/sidekiq/launcher.rb +206 -0
  47. data/lib/sidekiq/logger.rb +165 -0
  48. data/lib/sidekiq/manager.rb +135 -0
  49. data/lib/sidekiq/middleware/chain.rb +160 -0
  50. data/lib/sidekiq/middleware/i18n.rb +40 -0
  51. data/lib/sidekiq/monitor.rb +133 -0
  52. data/lib/sidekiq/paginator.rb +47 -0
  53. data/lib/sidekiq/processor.rb +280 -0
  54. data/lib/sidekiq/rails.rb +50 -0
  55. data/lib/sidekiq/redis_connection.rb +146 -0
  56. data/lib/sidekiq/scheduled.rb +173 -0
  57. data/lib/sidekiq/sd_notify.rb +149 -0
  58. data/lib/sidekiq/systemd.rb +24 -0
  59. data/lib/sidekiq/testing.rb +344 -0
  60. data/lib/sidekiq/testing/inline.rb +30 -0
  61. data/lib/sidekiq/util.rb +67 -0
  62. data/lib/sidekiq/version.rb +5 -0
  63. data/lib/sidekiq/web.rb +213 -0
  64. data/lib/sidekiq/web/action.rb +93 -0
  65. data/lib/sidekiq/web/application.rb +357 -0
  66. data/lib/sidekiq/web/csrf_protection.rb +153 -0
  67. data/lib/sidekiq/web/helpers.rb +333 -0
  68. data/lib/sidekiq/web/router.rb +101 -0
  69. data/lib/sidekiq/worker.rb +244 -0
  70. data/sidekiq.gemspec +20 -0
  71. data/web/assets/images/favicon.ico +0 -0
  72. data/web/assets/images/logo.png +0 -0
  73. data/web/assets/images/status.png +0 -0
  74. data/web/assets/javascripts/application.js +95 -0
  75. data/web/assets/javascripts/dashboard.js +296 -0
  76. data/web/assets/stylesheets/application-dark.css +133 -0
  77. data/web/assets/stylesheets/application-rtl.css +246 -0
  78. data/web/assets/stylesheets/application.css +1158 -0
  79. data/web/assets/stylesheets/bootstrap-rtl.min.css +9 -0
  80. data/web/assets/stylesheets/bootstrap.css +5 -0
  81. data/web/locales/ar.yml +81 -0
  82. data/web/locales/cs.yml +78 -0
  83. data/web/locales/da.yml +68 -0
  84. data/web/locales/de.yml +81 -0
  85. data/web/locales/el.yml +68 -0
  86. data/web/locales/en.yml +83 -0
  87. data/web/locales/es.yml +70 -0
  88. data/web/locales/fa.yml +80 -0
  89. data/web/locales/fr.yml +78 -0
  90. data/web/locales/he.yml +79 -0
  91. data/web/locales/hi.yml +75 -0
  92. data/web/locales/it.yml +69 -0
  93. data/web/locales/ja.yml +83 -0
  94. data/web/locales/ko.yml +68 -0
  95. data/web/locales/lt.yml +83 -0
  96. data/web/locales/nb.yml +77 -0
  97. data/web/locales/nl.yml +68 -0
  98. data/web/locales/pl.yml +59 -0
  99. data/web/locales/pt-br.yml +68 -0
  100. data/web/locales/pt.yml +67 -0
  101. data/web/locales/ru.yml +78 -0
  102. data/web/locales/sv.yml +68 -0
  103. data/web/locales/ta.yml +75 -0
  104. data/web/locales/uk.yml +76 -0
  105. data/web/locales/ur.yml +80 -0
  106. data/web/locales/vi.yml +83 -0
  107. data/web/locales/zh-cn.yml +68 -0
  108. data/web/locales/zh-tw.yml +68 -0
  109. data/web/views/_footer.erb +20 -0
  110. data/web/views/_job_info.erb +89 -0
  111. data/web/views/_nav.erb +52 -0
  112. data/web/views/_paging.erb +23 -0
  113. data/web/views/_poll_link.erb +7 -0
  114. data/web/views/_status.erb +4 -0
  115. data/web/views/_summary.erb +40 -0
  116. data/web/views/busy.erb +101 -0
  117. data/web/views/dashboard.erb +75 -0
  118. data/web/views/dead.erb +34 -0
  119. data/web/views/layout.erb +41 -0
  120. data/web/views/morgue.erb +78 -0
  121. data/web/views/queue.erb +55 -0
  122. data/web/views/queues.erb +38 -0
  123. data/web/views/retries.erb +83 -0
  124. data/web/views/retry.erb +34 -0
  125. data/web/views/scheduled.erb +57 -0
  126. data/web/views/scheduled_job_info.erb +8 -0
  127. metadata +212 -0
@@ -0,0 +1,83 @@
1
+ # elements like %{queue} are variables and should not be translated
2
+ vi: # <---- change this to your locale code
3
+ Dashboard: Bảng điều khiển
4
+ Status: Trạng thái
5
+ Time: Thời gian
6
+ Namespace: Không gian tên
7
+ Realtime: Thời gian thực
8
+ History: Lịch sử
9
+ Busy: Bận rộn
10
+ Processed: Đã xử lí
11
+ Failed: Đã thất bại
12
+ Scheduled: Đã lên lịch
13
+ Retries: Số lần thử
14
+ Enqueued: Đã xếp hàng đợi
15
+ Worker: Máy xử lí
16
+ LivePoll: Thăm dò trực tiếp
17
+ StopPolling: Ngừng thăm dò
18
+ Queue: Hàng đợi
19
+ Class: Lớp
20
+ Job: Tác vụ
21
+ Arguments: Tham số
22
+ Extras: Thêm
23
+ Started: Đã bắt đầu
24
+ ShowAll: Hiện tất cả
25
+ CurrentMessagesInQueue: Số lượng công việc trong <span class='title'>%{queue}</span>
26
+ Delete: Xóa
27
+ AddToQueue: Thêm vào hàng đợi
28
+ AreYouSureDeleteJob: Bạn có chắc là muốn xóa tác vụ này?
29
+ AreYouSureDeleteQueue: Bạn có chắc là muốn xóa %{queue} này?
30
+ Queues: Các hàng đợi
31
+ Size: Kích thước
32
+ Actions: Những hành động
33
+ NextRetry: Lần thử lại tiếp theo
34
+ RetryCount: Số lần thử lại
35
+ RetryNow: Thử lại ngay bây giờ
36
+ Kill: Giết
37
+ LastRetry: Lần thử cuối
38
+ OriginallyFailed: Đã thất bại từ đầu
39
+ AreYouSure: Bạn chắc chứ?
40
+ DeleteAll: Xóa hết
41
+ RetryAll: Thử lại tất cả
42
+ KillAll: Giết hết
43
+ NoRetriesFound: Không có lần thử nào được tìm thấy
44
+ Error: Lỗi
45
+ ErrorClass: Lớp lỗi
46
+ ErrorMessage: Tin nhắn lỗi
47
+ ErrorBacktrace: Dấu vết của lỗi
48
+ GoBack: ← Trở lại
49
+ NoScheduledFound: Không có tác vụ đã lên lịch nào được tìm thấy
50
+ When: Khi nào
51
+ ScheduledJobs: Những Tác Vụ Được Hẹn
52
+ idle: Đang chờ
53
+ active: Đang hoạt động
54
+ Version: Phiên bản
55
+ Connections: Các kết nối
56
+ MemoryUsage: Lượng bộ nhớ sử dụng
57
+ PeakMemoryUsage: Lượng bộ nhớ sử dụng đỉnh điểm
58
+ Uptime: Thời gian hệ thống đã online (days)
59
+ OneWeek: 1 tuần
60
+ OneMonth: 1 tháng
61
+ ThreeMonths: 3 tháng
62
+ SixMonths: 6 tháng
63
+ Failures: Các thất bại
64
+ DeadJobs: Những tác vụ đã chết
65
+ NoDeadJobsFound: Không có tác vụ đã chết nào được tìm thấy
66
+ Dead: Chết
67
+ Processes: Tiến trình xử lí
68
+ Thread: Luồng xử lí
69
+ Threads: Những luồng xử lí
70
+ Jobs: Các tác vụ
71
+ Paused: Đã tạm dừng
72
+ Stop: Dừng Lại
73
+ Quiet: Im lặng
74
+ StopAll: Dừng lại tất cả
75
+ QuietAll: Làm cho tất cả im lặng
76
+ PollingInterval: Khoảng thời gian giữa các lần thăm dò
77
+ Plugins: Hệ thống đính kèm
78
+ NotYetEnqueued: Chưa được bỏ vào hàng đợi
79
+ CreatedAt: Được tạo vào lúc
80
+ BackToApp: Trở về ứng dụng
81
+ Latency: Độ trễ
82
+ Pause: Tạm dừng
83
+ Unpause: Hủy tạm dừng
@@ -0,0 +1,68 @@
1
+ # elements like %{queue} are variables and should not be translated
2
+ zh-cn: # <---- change this to your locale code
3
+ Dashboard: 信息板
4
+ Status: 状态
5
+ Time: 时间
6
+ Namespace: 命名空间
7
+ Realtime: 实时
8
+ History: 历史记录
9
+ Busy: 执行中
10
+ Processed: 已处理
11
+ Failed: 已失败
12
+ Scheduled: 已计划
13
+ Retries: 重试
14
+ Enqueued: 已进入队列
15
+ Worker: 工人
16
+ LivePoll: 实时轮询
17
+ StopPolling: 停止轮询
18
+ Queue: 队列
19
+ Class: 类别
20
+ Job: 作业
21
+ Arguments: 参数
22
+ Extras: 额外的
23
+ Started: 已开始
24
+ ShowAll: 显示全部
25
+ CurrentMessagesInQueue: 目前在<span class='title'>%{queue}</span>的作业
26
+ Delete: 删除
27
+ AddToQueue: 添加至队列
28
+ AreYouSureDeleteJob: 你确定要删除这个作业么?
29
+ AreYouSureDeleteQueue: 你确定要删除%{queue}这个队列?
30
+ Queues: 队列
31
+ Size: 容量
32
+ Actions: 动作
33
+ NextRetry: 下次重试
34
+ RetryCount: 重试次數
35
+ RetryNow: 现在重试
36
+ LastRetry: 最后一次重试
37
+ OriginallyFailed: 原本已失败
38
+ AreYouSure: 你确定?
39
+ DeleteAll: 删除全部
40
+ RetryAll: 重试全部
41
+ NoRetriesFound: 沒有发现可重试
42
+ Error: 错误
43
+ ErrorClass: 错误类别
44
+ ErrorMessage: 错误消息
45
+ ErrorBacktrace: 错误的回调追踪
46
+ GoBack: ← 返回
47
+ NoScheduledFound: 沒有发现计划作业
48
+ When: 当
49
+ ScheduledJobs: 计划作业
50
+ idle: 闲置
51
+ active: 活动中
52
+ Version: 版本
53
+ Connections: 连接
54
+ MemoryUsage: 内存占用
55
+ PeakMemoryUsage: 内存占用峰值
56
+ Uptime: 上线时间 (天数)
57
+ OneWeek: 一周
58
+ OneMonth: 一个月
59
+ ThreeMonths: 三个月
60
+ SixMonths: 六个月
61
+ Failures: 失败
62
+ DeadJobs: 已停滞作业
63
+ NoDeadJobsFound: 沒有发现任何已停滞的作业
64
+ Dead: 已停滞
65
+ Processes: 处理中
66
+ Thread: 线程
67
+ Threads: 线程
68
+ Jobs: 作业
@@ -0,0 +1,68 @@
1
+ # elements like %{queue} are variables and should not be translated
2
+ zh-tw: # <---- change this to your locale code
3
+ Dashboard: 資訊主頁
4
+ Status: 狀態
5
+ Time: 時間
6
+ Namespace: 命名空間
7
+ Realtime: 即時
8
+ History: 歷史資料
9
+ Busy: 忙碌
10
+ Processed: 已處理
11
+ Failed: 已失敗
12
+ Scheduled: 已排程
13
+ Retries: 重試
14
+ Enqueued: 已佇列
15
+ Worker: 工人
16
+ LivePoll: 即時輪詢
17
+ StopPolling: 停止輪詢
18
+ Queue: 佇列
19
+ Class: 類別
20
+ Job: 工作
21
+ Arguments: 參數
22
+ Extras: 額外的
23
+ Started: 已開始
24
+ ShowAll: 顯示全部
25
+ CurrentMessagesInQueue: 目前在<span class='title'>%{queue}</span>的工作
26
+ Delete: 刪除
27
+ AddToQueue: 增加至佇列
28
+ AreYouSureDeleteJob: 你確定要刪除這個工作嗎?
29
+ AreYouSureDeleteQueue: 你確定要刪除%{queue}這個佇列?
30
+ Queues: 佇列
31
+ Size: 容量
32
+ Actions: 動作
33
+ NextRetry: 下次重試
34
+ RetryCount: 重試次數
35
+ RetryNow: 馬上重試
36
+ LastRetry: 最後一次重試
37
+ OriginallyFailed: 原本已失敗
38
+ AreYouSure: 你確定?
39
+ DeleteAll: 刪除全部
40
+ RetryAll: 重試全部
41
+ NoRetriesFound: 沒有發現可重試
42
+ Error: 錯誤
43
+ ErrorClass: 錯誤類別
44
+ ErrorMessage: 錯誤訊息
45
+ ErrorBacktrace: 錯誤的回調追踨
46
+ GoBack: ← 返回
47
+ NoScheduledFound: 沒有發現已排程的工作
48
+ When: 當
49
+ ScheduledJobs: 已排程的工作
50
+ idle: 閒置
51
+ active: 活動中
52
+ Version: 版本
53
+ Connections: 連線
54
+ MemoryUsage: 記憶體使用量
55
+ PeakMemoryUsage: 尖峰記憶體使用量
56
+ Uptime: 上線時間 (天數)
57
+ OneWeek: 一週
58
+ OneMonth: 一個月
59
+ ThreeMonths: 三個月
60
+ SixMonths: 六個月
61
+ Failures: 失敗
62
+ DeadJobs: 停滯工作
63
+ NoDeadJobsFound: 沒有發現任何停滯的工作
64
+ Dead: 停滯
65
+ Processes: 處理中
66
+ Thread: 執行緒
67
+ Threads: 執行緒
68
+ Jobs: 工作
@@ -0,0 +1,20 @@
1
+ <div class="navbar navbar-fixed-bottom navbar-inverse ltr">
2
+ <div class="navbar-inner">
3
+ <div class="container text-center">
4
+ <ul class="nav">
5
+ <li>
6
+ <p class="navbar-text product-version"><%= product_version %></p>
7
+ </li>
8
+ <li>
9
+ <p class="navbar-text redis-url" title="<%= redis_connection_and_namespace %>"><%= redis_connection_and_namespace %></p>
10
+ </li>
11
+ <li>
12
+ <p class="navbar-text server-utc-time"><%= server_utc_time %></p>
13
+ </li>
14
+ <li>
15
+ <p class="navbar-text"><a style="color: gray;" href="https://github.com/mperham/sidekiq/wiki">docs</a></p>
16
+ </li>
17
+ </ul>
18
+ </div>
19
+ </div>
20
+ </div>
@@ -0,0 +1,89 @@
1
+ <header>
2
+ <h3><%= t('Job') %></h3>
3
+ </header>
4
+
5
+ <div class="table_container">
6
+ <table class="table table-bordered table-striped">
7
+ <tbody>
8
+ <tr>
9
+ <th><%= t('Queue') %></th>
10
+ <td>
11
+ <a href="<%= root_path %>queues/<%= job.queue %>"><%= job.queue %></a>
12
+ </td>
13
+ </tr>
14
+ <tr>
15
+ <th><%= t('Job') %></th>
16
+ <td>
17
+ <%= job.display_class %>
18
+ <%= display_tags(job) %>
19
+ </td>
20
+ </tr>
21
+ <tr>
22
+ <th><%= t('Arguments') %></th>
23
+ <td>
24
+ <code class="code-wrap">
25
+ <!-- We don't want to truncate any job arguments when viewing a single job's status page -->
26
+ <div class="args-extended"><%= display_args(job.display_args, nil) %></div>
27
+ </code>
28
+ </td>
29
+ </tr>
30
+ <tr>
31
+ <th>JID</th>
32
+ <td>
33
+ <code><%= job.jid %></code>
34
+ </td>
35
+ </tr>
36
+ <tr>
37
+ <th><%= t('CreatedAt') %></th>
38
+ <td><%= relative_time(job.created_at) %></td>
39
+ </tr>
40
+ <tr>
41
+ <th><%= t('Enqueued') %></th>
42
+ <td><%= (enqueued_at = job.enqueued_at) ? relative_time(enqueued_at) : t('NotYetEnqueued') %></td>
43
+ </tr>
44
+ <% unless retry_extra_items(job).empty? %>
45
+ <tr>
46
+ <th><%= t('Extras') %></th>
47
+ <td>
48
+ <code>
49
+ <%= retry_extra_items(job).inspect %>
50
+ </code>
51
+ </td>
52
+ </tr>
53
+ <% end %>
54
+ <% if type == :retry %>
55
+ <% if job['retry_count'] && job['retry_count'] > 0 %>
56
+ <tr>
57
+ <th><%= t('RetryCount') %></th>
58
+ <td><%= job['retry_count'] %></td>
59
+ </tr>
60
+ <tr>
61
+ <th><%= t('LastRetry') %></th>
62
+ <td><%= relative_time(Time.at(job['retried_at'])) %></td>
63
+ </tr>
64
+ <% else %>
65
+ <tr>
66
+ <th><%= t('OriginallyFailed') %></th>
67
+ <td><%= relative_time(Time.at(job['failed_at'])) %></td>
68
+ </tr>
69
+ <% end %>
70
+ <tr>
71
+ <th><%= t('NextRetry') %></th>
72
+ <td><%= relative_time(job.at) %></td>
73
+ </tr>
74
+ <% end %>
75
+ <% if type == :scheduled %>
76
+ <tr>
77
+ <th><%= t('Scheduled') %></th>
78
+ <td><%= relative_time(job.at) %></td>
79
+ </tr>
80
+ <% end %>
81
+ <% if type == :dead %>
82
+ <tr>
83
+ <th><%= t('LastRetry') %></th>
84
+ <td><%= relative_time(job.at) if job['retry_count'] %></td>
85
+ </tr>
86
+ <% end %>
87
+ </tbody>
88
+ </table>
89
+ </div>
@@ -0,0 +1,52 @@
1
+ <div class="navbar navbar-default navbar-fixed-top">
2
+ <div class="container-fluid">
3
+ <div class="navbar-header" data-navbar="static">
4
+ <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-menu">
5
+ <span class="icon-bar"></span>
6
+ <span class="icon-bar"></span>
7
+ <span class="icon-bar"></span>
8
+ </button>
9
+ <div class="navbar-toggle collapsed navbar-livereload">
10
+ <%= erb :_poll_link %>
11
+ <% if Sidekiq::Web.app_url %>
12
+ <a class="btn btn-inverse" href="<%= Sidekiq::Web.app_url %>"><%= t('BackToApp') %></a>
13
+ <% end %>
14
+ </div>
15
+ <a class="navbar-brand" href="<%= root_path %>">
16
+ <%= Sidekiq::NAME %>
17
+ <%= erb :_status %>
18
+ </a>
19
+ </div>
20
+
21
+ <div class="collapse navbar-collapse" id="navbar-menu">
22
+ <ul class="nav navbar-nav" data-navbar="static">
23
+ <% Sidekiq::Web.default_tabs.each do |title, url| %>
24
+ <% if url == '' %>
25
+ <li class="<%= current_path == url ? 'active' : '' %>">
26
+ <a href="<%= root_path %><%= url %>"><%= t(title) %></a>
27
+ </li>
28
+ <% else %>
29
+ <li class="<%= current_path.start_with?(url) ? 'active' : '' %>">
30
+ <a href="<%= root_path %><%= url %>"><%= t(title) %></a>
31
+ </li>
32
+ <% end %>
33
+ <% end %>
34
+
35
+ <% Sidekiq::Web.custom_tabs.each do |title, url| %>
36
+ <li class="<%= current_path.start_with?(url) ? 'active' : '' %>" data-navbar="custom-tab">
37
+ <a href="<%= root_path %><%= url %>"><%= t(title) %></a>
38
+ </li>
39
+ <% end %>
40
+
41
+ <li class="navbar-livereload">
42
+ <div class="poll-wrapper">
43
+ <%= erb :_poll_link %>
44
+ <% if Sidekiq::Web.app_url %>
45
+ <a class="btn btn-inverse" href="<%= Sidekiq::Web.app_url %>"><%= t('BackToApp') %></a>
46
+ <% end %>
47
+ </div>
48
+ </li>
49
+ </ul>
50
+ </div>
51
+ </div>
52
+ </div>
@@ -0,0 +1,23 @@
1
+ <% if @total_size > @count %>
2
+ <ul class="pagination pull-right flip">
3
+ <li class="<%= 'disabled' if @current_page == 1 %>">
4
+ <a href="<%= url %>?page=1">&laquo;</a>
5
+ </li>
6
+ <% if @current_page > 1 %>
7
+ <li>
8
+ <a href="<%= url %>?<%= qparams(page: @current_page - 1) %>"><%= @current_page - 1 %></a>
9
+ </li>
10
+ <% end %>
11
+ <li class="disabled">
12
+ <a href="<%= url %>?<%= qparams(page: @current_page) %>"><%= @current_page %></a>
13
+ </li>
14
+ <% if @total_size > @current_page * @count %>
15
+ <li>
16
+ <a href="<%= url %>?<%= qparams(page: @current_page + 1) %>"><%= @current_page + 1 %></a>
17
+ </li>
18
+ <% end %>
19
+ <li class="<%= 'disabled' if @total_size <= @current_page * @count %>">
20
+ <a href="<%= url %>?<%= qparams(page: (@total_size.to_f / @count).ceil) %>">&raquo;</a>
21
+ </li>
22
+ </ul>
23
+ <% end %>
@@ -0,0 +1,7 @@
1
+ <% if current_path != '' %>
2
+ <% if params[:poll] %>
3
+ <a id="live-poll" class="btn btn-primary active" href="<%= root_path + current_path %>"><%= t('StopPolling') %></a>
4
+ <% else %>
5
+ <a id="live-poll" class="btn btn-primary" href="<%= root_path + current_path %>?<%= qparams(poll: true) %>"><%= t('LivePoll') %></a>
6
+ <% end %>
7
+ <% end %>
@@ -0,0 +1,4 @@
1
+ <span class="status">
2
+ <i class="status-sprite status-<%= current_status %>"></i>
3
+ <%= t(current_status) %>
4
+ </span>
@@ -0,0 +1,40 @@
1
+ <ul class="list-unstyled summary row">
2
+ <li class="processed col-sm-1">
3
+ <span class="count"><%= number_with_delimiter(stats.processed) %></span>
4
+ <span class="desc"><%= t('Processed') %></span>
5
+ </li>
6
+ <li class="failed col-sm-1">
7
+ <span class="count"><%= number_with_delimiter(stats.failed) %></span>
8
+ <span class="desc"><%= t('Failed') %></span>
9
+ </li>
10
+ <li class="busy col-sm-1">
11
+ <a href="<%= root_path %>busy">
12
+ <span class="count"><%= number_with_delimiter(workers.size) %></span>
13
+ <span class="desc"><%= t('Busy') %></span>
14
+ </a>
15
+ </li>
16
+ <li class="enqueued col-sm-1">
17
+ <a href="<%= root_path %>queues">
18
+ <span class="count"><%= number_with_delimiter(stats.enqueued) %></span>
19
+ <span class="desc"><%= t('Enqueued') %></span>
20
+ </a>
21
+ </li>
22
+ <li class="retries col-sm-1">
23
+ <a href="<%= root_path %>retries">
24
+ <span class="count"><%= number_with_delimiter(stats.retry_size) %></span>
25
+ <span class="desc"><%= t('Retries') %></span>
26
+ </a>
27
+ </li>
28
+ <li class="scheduled col-sm-1">
29
+ <a href="<%= root_path %>scheduled">
30
+ <span class="count"><%= number_with_delimiter(stats.scheduled_size) %></span>
31
+ <span class="desc"><%= t('Scheduled') %></span>
32
+ </a>
33
+ </li>
34
+ <li class="dead col-sm-1">
35
+ <a href="<%= root_path %>morgue">
36
+ <span class="count"><%= number_with_delimiter(stats.dead_size) %></span>
37
+ <span class="desc"><%= t('Dead') %></span>
38
+ </a>
39
+ </li>
40
+ </ul>