sidekiq 7.2.3 → 7.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/Changes.md +41 -0
  3. data/README.md +1 -1
  4. data/lib/sidekiq/api.rb +1 -1
  5. data/lib/sidekiq/capsule.rb +3 -0
  6. data/lib/sidekiq/cli.rb +1 -0
  7. data/lib/sidekiq/client.rb +2 -2
  8. data/lib/sidekiq/config.rb +5 -1
  9. data/lib/sidekiq/fetch.rb +1 -1
  10. data/lib/sidekiq/iterable_job.rb +53 -0
  11. data/lib/sidekiq/job/interrupt_handler.rb +22 -0
  12. data/lib/sidekiq/job/iterable/active_record_enumerator.rb +53 -0
  13. data/lib/sidekiq/job/iterable/csv_enumerator.rb +47 -0
  14. data/lib/sidekiq/job/iterable/enumerators.rb +135 -0
  15. data/lib/sidekiq/job/iterable.rb +231 -0
  16. data/lib/sidekiq/job.rb +13 -2
  17. data/lib/sidekiq/job_logger.rb +23 -10
  18. data/lib/sidekiq/job_retry.rb +6 -1
  19. data/lib/sidekiq/middleware/current_attributes.rb +27 -11
  20. data/lib/sidekiq/processor.rb +11 -1
  21. data/lib/sidekiq/redis_client_adapter.rb +8 -5
  22. data/lib/sidekiq/redis_connection.rb +25 -1
  23. data/lib/sidekiq/version.rb +1 -1
  24. data/lib/sidekiq/web/action.rb +2 -1
  25. data/lib/sidekiq/web/application.rb +8 -4
  26. data/lib/sidekiq/web/helpers.rb +53 -7
  27. data/lib/sidekiq/web.rb +46 -1
  28. data/lib/sidekiq.rb +2 -1
  29. data/sidekiq.gemspec +2 -1
  30. data/web/assets/javascripts/application.js +6 -1
  31. data/web/assets/javascripts/dashboard-charts.js +22 -12
  32. data/web/assets/javascripts/dashboard.js +1 -1
  33. data/web/assets/stylesheets/application.css +13 -1
  34. data/web/locales/tr.yml +101 -0
  35. data/web/views/dashboard.erb +6 -6
  36. data/web/views/layout.erb +6 -6
  37. data/web/views/metrics.erb +5 -5
  38. data/web/views/metrics_for_job.erb +4 -4
  39. metadata +26 -5
@@ -0,0 +1,101 @@
1
+ # elements like %{queue} are variables and should not be translated
2
+ tr:
3
+ Actions: Eylemler
4
+ AddToQueue: Kuyruğa ekle
5
+ AreYouSure: Emin misiniz?
6
+ AreYouSureDeleteJob: Bu işi silmek istediğinizden emin misiniz?
7
+ AreYouSureDeleteQueue: %{queue} kuyruğunu silmek istediğinizden emin misiniz?
8
+ Arguments: Argümanlar
9
+ BackToApp: Uygulamaya geri dön
10
+ Busy: Meşgul
11
+ Class: Sınıf
12
+ Connections: Bağlantılar
13
+ CreatedAt: Oluşturulma Tarihi
14
+ CurrentMessagesInQueue: Şu anki işler <span class='title'>%{queue}</span>
15
+ Dashboard: Gösterge Paneli
16
+ Dead: Ölü
17
+ DeadJobs: Ölü İşler
18
+ Delete: Sil
19
+ DeleteAll: Hepsini Sil
20
+ Deploy: Dağıt
21
+ Enqueued: Kuyruğa Alındı
22
+ Error: Hata
23
+ ErrorBacktrace: Hata Geri İzleme
24
+ ErrorClass: Hata Sınıfı
25
+ ErrorMessage: Hata Mesajı
26
+ ExecutionTime: Yürütme Süresi
27
+ Extras: Ekstralar
28
+ Failed: Başarısız
29
+ Failures: Başarısızlıklar
30
+ Failure: Başarısızlık
31
+ GoBack: ← Geri Dön
32
+ History: Geçmiş
33
+ Job: İş
34
+ Jobs: İşler
35
+ Kill: Sonlandır
36
+ KillAll: Hepsini Sonlandır
37
+ LastRetry: Son Yeniden Deneme
38
+ Latency: Gecikme
39
+ LivePoll: Canlı Anket
40
+ MemoryUsage: Bellek Kullanımı
41
+ Name: İsim
42
+ Namespace: Ad Alanı
43
+ NextRetry: Bir Sonraki Yeniden Deneme
44
+ NoDeadJobsFound: Ölü iş bulunamadı
45
+ NoRetriesFound: Yeniden deneme bulunamadı
46
+ NoScheduledFound: Zamanlanmış iş bulunamadı
47
+ NotYetEnqueued: Henüz kuyruğa alınmadı
48
+ OneMonth: 1 ay
49
+ OneWeek: 1 hafta
50
+ OriginallyFailed: İlk Başarısızlık
51
+ Pause: Duraklat
52
+ Paused: Duraklatıldı
53
+ PeakMemoryUsage: Maksimum Bellek Kullanımı
54
+ Plugins: Eklentiler
55
+ PollingInterval: Anket Aralığı
56
+ Process: Süreç
57
+ Processed: İşlendi
58
+ Processes: Süreçler
59
+ Queue: Kuyruk
60
+ Queues: Kuyruklar
61
+ Quiet: Sessiz
62
+ QuietAll: Hepsini Sessiz Yap
63
+ Realtime: Gerçek Zamanlı
64
+ Retries: Yeniden Denemeler
65
+ RetryAll: Hepsini Yeniden Dene
66
+ RetryCount: Yeniden Deneme Sayısı
67
+ RetryNow: Şimdi Yeniden Dene
68
+ Scheduled: Zamanlanmış
69
+ ScheduledJobs: Zamanlanmış İşler
70
+ Seconds: Saniye
71
+ ShowAll: Hepsini Göster
72
+ SixMonths: 6 ay
73
+ Size: Boyut
74
+ Started: Başlatıldı
75
+ Status: Durum
76
+ Stop: Durdur
77
+ StopAll: Hepsini Durdur
78
+ StopPolling: Anketi Durdur
79
+ Success: Başarı
80
+ Summary: Özet
81
+ Thread: İplik
82
+ Threads: İplikler
83
+ ThreeMonths: 3 ay
84
+ Time: Zaman
85
+ Unpause: Duraklatmayı Kaldır
86
+ Uptime: Çalışma Süresi (gün)
87
+ Utilization: Kullanım
88
+ Version: Sürüm
89
+ When: Ne Zaman
90
+ Worker: İşçi
91
+ active: aktif
92
+ idle: boşta
93
+ Metrics: Metrikler
94
+ NoDataFound: Veri bulunamadı
95
+ TotalExecutionTime: Toplam Yürütme Süresi
96
+ AvgExecutionTime: Ortalama Yürütme Süresi
97
+ Context: Bağlam
98
+ Bucket: Kova
99
+ NoJobMetricsFound: Son iş metrikleri bulunamadı
100
+ Filter: Filtre
101
+ AnyJobContent: Herhangi bir iş içeriği
@@ -1,4 +1,4 @@
1
- <script type="text/javascript" src="<%= root_path %>javascripts/dashboard.js"></script>
1
+ <script type="text/javascript" src="<%= root_path %>javascripts/dashboard.js" nonce="<%= csp_nonce %>"></script>
2
2
  <div class= "dashboard clearfix">
3
3
  <h3 >
4
4
  <%= t('Dashboard') %>
@@ -9,7 +9,7 @@
9
9
  </h3>
10
10
  <div class="interval-slider ltr">
11
11
  <span class="interval-slider-label"><%= t('PollingInterval') %>:</span>
12
- <span id="sldr-text" class="current-interval">5 sec</span>
12
+ <span id="sldr-text" class="current-interval">5 s</span>
13
13
  <br/>
14
14
  <input id="sldr" type="range" min="2000" max="20000" step="1000" value="5000"/>
15
15
  </div>
@@ -99,7 +99,7 @@
99
99
  </div>
100
100
  </div>
101
101
 
102
- <script type="text/javascript" src="<%= root_path %>javascripts/chart.min.js"></script>
103
- <script type="text/javascript" src="<%= root_path %>javascripts/chartjs-plugin-annotation.min.js"></script>
104
- <script type="text/javascript" src="<%= root_path %>javascripts/base-charts.js"></script>
105
- <script type="text/javascript" src="<%= root_path %>javascripts/dashboard-charts.js"></script>
102
+ <script type="text/javascript" src="<%= root_path %>javascripts/chart.min.js" nonce="<%= csp_nonce %>"></script>
103
+ <script type="text/javascript" src="<%= root_path %>javascripts/chartjs-plugin-annotation.min.js" nonce="<%= csp_nonce %>"></script>
104
+ <script type="text/javascript" src="<%= root_path %>javascripts/base-charts.js" nonce="<%= csp_nonce %>"></script>
105
+ <script type="text/javascript" src="<%= root_path %>javascripts/dashboard-charts.js" nonce="<%= csp_nonce %>"></script>
data/web/views/layout.erb CHANGED
@@ -5,20 +5,20 @@
5
5
  <meta charset="utf-8" />
6
6
  <meta name="viewport" content="width=device-width,initial-scale=1.0" />
7
7
 
8
- <link href="<%= root_path %>stylesheets/bootstrap.css" media="screen" rel="stylesheet" type="text/css" />
8
+ <link href="<%= root_path %>stylesheets/bootstrap.css" media="screen" rel="stylesheet" type="text/css" nonce="<%= csp_nonce %>" />
9
9
  <% if rtl? %>
10
- <link href="<%= root_path %>stylesheets/bootstrap-rtl.min.css" media="screen" rel="stylesheet" type="text/css"/>
10
+ <link href="<%= root_path %>stylesheets/bootstrap-rtl.min.css" media="screen" rel="stylesheet" type="text/css" nonce="<%= csp_nonce %>"/>
11
11
  <% end %>
12
12
 
13
- <link href="<%= root_path %>stylesheets/application.css" media="screen" rel="stylesheet" type="text/css" />
14
- <link href="<%= root_path %>stylesheets/application-dark.css" media="screen and (prefers-color-scheme: dark)" rel="stylesheet" type="text/css" />
13
+ <link href="<%= root_path %>stylesheets/application.css" media="screen" rel="stylesheet" type="text/css" nonce="<%= csp_nonce %>" />
14
+ <link href="<%= root_path %>stylesheets/application-dark.css" media="screen and (prefers-color-scheme: dark)" rel="stylesheet" type="text/css" nonce="<%= csp_nonce %>" />
15
15
  <% if rtl? %>
16
- <link href="<%= root_path %>stylesheets/application-rtl.css" media="screen" rel="stylesheet" type="text/css" />
16
+ <link href="<%= root_path %>stylesheets/application-rtl.css" media="screen" rel="stylesheet" type="text/css" nonce="<%= csp_nonce %>" />
17
17
  <% end %>
18
18
 
19
19
  <link rel="apple-touch-icon" href="<%= root_path %>images/apple-touch-icon.png">
20
20
  <link rel="shortcut icon" type="image/ico" href="<%= root_path %>images/favicon.ico" />
21
- <script type="text/javascript" src="<%= root_path %>javascripts/application.js"></script>
21
+ <script type="text/javascript" src="<%= root_path %>javascripts/application.js" nonce="<%= csp_nonce %>"></script>
22
22
  <meta name="google" content="notranslate" />
23
23
  <%= display_custom_head %>
24
24
  </head>
@@ -1,6 +1,6 @@
1
- <script type="text/javascript" src="<%= root_path %>javascripts/chart.min.js"></script>
2
- <script type="text/javascript" src="<%= root_path %>javascripts/chartjs-plugin-annotation.min.js"></script>
3
- <script type="text/javascript" src="<%= root_path %>javascripts/base-charts.js"></script>
1
+ <script type="text/javascript" src="<%= root_path %>javascripts/chart.min.js" nonce="<%= csp_nonce %>"></script>
2
+ <script type="text/javascript" src="<%= root_path %>javascripts/chartjs-plugin-annotation.min.js" nonce="<%= csp_nonce %>"></script>
3
+ <script type="text/javascript" src="<%= root_path %>javascripts/base-charts.js" nonce="<%= csp_nonce %>"></script>
4
4
 
5
5
  <div class="header-container">
6
6
  <div class="page-title-container">
@@ -12,7 +12,7 @@
12
12
  <form id="metrics-form" class="form-inline" action="<%= root_path %>filter/metrics" method="post">
13
13
  <%= csrf_tag %>
14
14
  <label for="substr"><%= t('Filter') %></label>
15
- <input id="class-filter" class="form-control" type="text" name="substr" placeholder="<%= t('Name') %>" value="<%= params[:substr] %>">
15
+ <input id="class-filter" class="form-control" type="text" name="substr" placeholder="<%= t('Name') %>" value="<%= h params[:substr] %>">
16
16
  <select id="period-selector" class="form-control" name="period">
17
17
  <% @periods.each_key do |code| %>
18
18
  <% if code == @period %>
@@ -88,4 +88,4 @@
88
88
 
89
89
  <!--p><small>Data from <%= @query_result.starts_at %> to <%= @query_result.ends_at %></small></p-->
90
90
 
91
- <script type="text/javascript" src="<%= root_path %>javascripts/metrics.js"></script>
91
+ <script type="text/javascript" src="<%= root_path %>javascripts/metrics.js" nonce="<%= csp_nonce %>"></script>
@@ -1,6 +1,6 @@
1
- <script type="text/javascript" src="<%= root_path %>javascripts/chart.min.js"></script>
2
- <script type="text/javascript" src="<%= root_path %>javascripts/chartjs-plugin-annotation.min.js"></script>
3
- <script type="text/javascript" src="<%= root_path %>javascripts/base-charts.js"></script>
1
+ <script type="text/javascript" src="<%= root_path %>javascripts/chart.min.js" nonce="<%= csp_nonce %>"></script>
2
+ <script type="text/javascript" src="<%= root_path %>javascripts/chartjs-plugin-annotation.min.js" nonce="<%= csp_nonce %>"></script>
3
+ <script type="text/javascript" src="<%= root_path %>javascripts/base-charts.js" nonce="<%= csp_nonce %>"></script>
4
4
 
5
5
  <%
6
6
  job_result = @query_result.job_results[@name]
@@ -56,4 +56,4 @@
56
56
  <div class="alert alert-success"><%= t('NoJobMetricsFound') %></div>
57
57
  <% end %>
58
58
 
59
- <script type="text/javascript" src="<%= root_path %>javascripts/metrics.js"></script>
59
+ <script type="text/javascript" src="<%= root_path %>javascripts/metrics.js" nonce="<%= csp_nonce %>"></script>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.2.3
4
+ version: 7.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Perham
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-25 00:00:00.000000000 Z
11
+ date: 2024-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis-client
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.19.0
19
+ version: 0.22.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.19.0
26
+ version: 0.22.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: connection_pool
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "<"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: logger
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  description: Simple, efficient background processing for Ruby.
70
84
  email:
71
85
  - info@contribsys.com
@@ -96,7 +110,13 @@ files:
96
110
  - lib/sidekiq/deploy.rb
97
111
  - lib/sidekiq/embedded.rb
98
112
  - lib/sidekiq/fetch.rb
113
+ - lib/sidekiq/iterable_job.rb
99
114
  - lib/sidekiq/job.rb
115
+ - lib/sidekiq/job/interrupt_handler.rb
116
+ - lib/sidekiq/job/iterable.rb
117
+ - lib/sidekiq/job/iterable/active_record_enumerator.rb
118
+ - lib/sidekiq/job/iterable/csv_enumerator.rb
119
+ - lib/sidekiq/job/iterable/enumerators.rb
100
120
  - lib/sidekiq/job_logger.rb
101
121
  - lib/sidekiq/job_retry.rb
102
122
  - lib/sidekiq/job_util.rb
@@ -172,6 +192,7 @@ files:
172
192
  - web/locales/ru.yml
173
193
  - web/locales/sv.yml
174
194
  - web/locales/ta.yml
195
+ - web/locales/tr.yml
175
196
  - web/locales/uk.yml
176
197
  - web/locales/ur.yml
177
198
  - web/locales/vi.yml
@@ -224,7 +245,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
224
245
  - !ruby/object:Gem::Version
225
246
  version: '0'
226
247
  requirements: []
227
- rubygems_version: 3.4.20
248
+ rubygems_version: 3.5.11
228
249
  signing_key:
229
250
  specification_version: 4
230
251
  summary: Simple, efficient background processing for Ruby