sidekiq 8.1.5 → 8.1.7
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 +4 -4
- data/Changes.md +16 -0
- data/README.md +2 -0
- data/bin/sidekiqload +2 -0
- data/lib/active_job/queue_adapters/sidekiq_adapter.rb +1 -1
- data/lib/sidekiq/api.rb +4 -3
- data/lib/sidekiq/client.rb +3 -3
- data/lib/sidekiq/config.rb +3 -7
- data/lib/sidekiq/job.rb +1 -1
- data/lib/sidekiq/job_retry.rb +7 -7
- data/lib/sidekiq/launcher.rb +1 -1
- data/lib/sidekiq/manager.rb +1 -0
- data/lib/sidekiq/metrics/query.rb +6 -1
- data/lib/sidekiq/paginator.rb +3 -0
- data/lib/sidekiq/processor.rb +5 -4
- data/lib/sidekiq/redis_client_adapter.rb +2 -2
- data/lib/sidekiq/testing.rb +1 -0
- data/lib/sidekiq/tui/tabs/base_tab.rb +41 -15
- data/lib/sidekiq/tui/tabs/busy.rb +2 -16
- data/lib/sidekiq/tui/tabs/dead.rb +0 -5
- data/lib/sidekiq/tui/tabs/home.rb +11 -40
- data/lib/sidekiq/tui/tabs/metrics.rb +2 -19
- data/lib/sidekiq/tui/tabs/queues.rb +2 -14
- data/lib/sidekiq/tui/tabs/retries.rb +0 -5
- data/lib/sidekiq/tui/tabs/scheduled.rb +0 -5
- data/lib/sidekiq/tui/tabs/set_tab.rb +15 -20
- data/lib/sidekiq/tui.rb +78 -70
- data/lib/sidekiq/version.rb +1 -1
- data/lib/sidekiq/web/action.rb +2 -2
- data/lib/sidekiq/web/application.rb +11 -2
- data/lib/sidekiq/web/helpers.rb +9 -14
- data/lib/sidekiq/web/router.rb +2 -2
- data/sidekiq.gemspec +2 -1
- data/web/locales/en.yml +1 -0
- data/web/locales/hi.yml +34 -0
- data/web/locales/ta.yml +81 -47
- data/web/views/_footer.html.erb +1 -1
- data/web/views/_job_info.html.erb +1 -1
- data/web/views/busy.html.erb +50 -46
- data/web/views/metrics.html.erb +1 -1
- data/web/views/metrics_for_job.html.erb +1 -1
- data/web/views/morgue.html.erb +1 -1
- data/web/views/profiles.html.erb +1 -1
- data/web/views/retries.html.erb +1 -1
- data/web/views/scheduled.html.erb +1 -1
- metadata +3 -2
data/lib/sidekiq/tui.rb
CHANGED
|
@@ -105,63 +105,46 @@ module Sidekiq
|
|
|
105
105
|
@tui.constraint_length(4)
|
|
106
106
|
]
|
|
107
107
|
)
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
]),
|
|
141
|
-
@tui.text_line(spans: [
|
|
142
|
-
@tui.text_span(content: "A", style: @hotkey_style),
|
|
143
|
-
@tui.text_span(content: ": Select/deselect All rows in current page")
|
|
144
|
-
]),
|
|
145
|
-
@tui.text_line(spans: [
|
|
146
|
-
@tui.text_span(content: "q", style: @hotkey_style),
|
|
147
|
-
@tui.text_span(content: ": Quit")
|
|
148
|
-
])
|
|
149
|
-
]
|
|
150
|
-
)
|
|
151
|
-
]
|
|
108
|
+
|
|
109
|
+
help_data = [
|
|
110
|
+
["Esc", "Close this window"],
|
|
111
|
+
["←/→", "Move between tabs"],
|
|
112
|
+
["h/l", "Move to prev/next page of data"],
|
|
113
|
+
["j/k", "Move to prev/next row in current page"],
|
|
114
|
+
["x", "Select/deselect current row"],
|
|
115
|
+
["A", "Select/deselect All rows in current page"],
|
|
116
|
+
["q", "Quit"]
|
|
117
|
+
]
|
|
118
|
+
|
|
119
|
+
# striped styling like other tables in the app
|
|
120
|
+
help_rows = help_data.map.with_index { |cells, idx|
|
|
121
|
+
@tui.table_row(
|
|
122
|
+
cells: cells,
|
|
123
|
+
style: idx.even? ? nil : @tui.style(bg: :dark_gray)
|
|
124
|
+
)
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
table = @tui.table(
|
|
128
|
+
block: @tui.block(
|
|
129
|
+
title: " #{Sidekiq::NAME} - Welcome to the Sidekiq Terminal UI ",
|
|
130
|
+
borders: [:all],
|
|
131
|
+
title_style: @tui.style(fg: :light_red, modifiers: [:bold])
|
|
132
|
+
),
|
|
133
|
+
header: ["Key", "Action"],
|
|
134
|
+
rows: help_rows,
|
|
135
|
+
widths: [
|
|
136
|
+
@tui.constraint_length(15),
|
|
137
|
+
@tui.constraint_fill(1)
|
|
138
|
+
],
|
|
139
|
+
column_spacing: 1
|
|
152
140
|
)
|
|
153
|
-
frame.render_widget(
|
|
141
|
+
frame.render_widget(table, main_area)
|
|
154
142
|
controls = @tui.block(
|
|
155
143
|
title: t("Controls"),
|
|
156
144
|
borders: [:all],
|
|
157
145
|
children: [
|
|
158
146
|
@tui.paragraph(
|
|
159
|
-
text: [
|
|
160
|
-
@tui.text_line(spans: [
|
|
161
|
-
@tui.text_span(content: "Esc", style: @hotkey_style),
|
|
162
|
-
@tui.text_span(content: ": Close ")
|
|
163
|
-
])
|
|
164
|
-
]
|
|
147
|
+
text: [hotkey_line("Esc", "Close ")]
|
|
165
148
|
)
|
|
166
149
|
]
|
|
167
150
|
)
|
|
@@ -180,27 +163,36 @@ module Sidekiq
|
|
|
180
163
|
def render_controls(frame, area)
|
|
181
164
|
active_keys = current_tab.controls.filter { |hash| hash[:description] }
|
|
182
165
|
|
|
183
|
-
#
|
|
184
|
-
#
|
|
185
|
-
|
|
166
|
+
# Dynamically split controls based on terminal width
|
|
167
|
+
# Estimate space needed: each control needs ~key_length + description_length + 4 chars for ": " and spacing
|
|
168
|
+
available_width = area.width - 4 # Account for borders
|
|
169
|
+
|
|
186
170
|
lines = []
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
171
|
+
current_line = []
|
|
172
|
+
current_width = 0
|
|
173
|
+
|
|
174
|
+
active_keys.each do |hash|
|
|
175
|
+
# Estimate control width: key + ": " + description + " " (spacing)
|
|
176
|
+
key_text = hash[:display] || hash[:code]
|
|
177
|
+
control_width = key_text.length + 2 + t(hash[:description]).length + 2
|
|
178
|
+
|
|
179
|
+
if current_width + control_width > available_width && !current_line.empty?
|
|
180
|
+
# Start a new line
|
|
181
|
+
lines << controls_line(current_line)
|
|
182
|
+
current_line = [hash]
|
|
183
|
+
current_width = control_width
|
|
184
|
+
else
|
|
185
|
+
current_line << hash
|
|
186
|
+
current_width += control_width
|
|
187
|
+
end
|
|
188
|
+
end
|
|
193
189
|
|
|
194
|
-
last
|
|
195
|
-
lines <<
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
]
|
|
201
|
-
}.flatten)
|
|
202
|
-
else
|
|
203
|
-
@tui.text_line(spans: [])
|
|
190
|
+
# Add the last line
|
|
191
|
+
lines << controls_line(current_line) unless current_line.empty?
|
|
192
|
+
|
|
193
|
+
# Ensure we have at least 2 lines for layout consistency
|
|
194
|
+
while lines.length < 2
|
|
195
|
+
lines << @tui.text_line(spans: [])
|
|
204
196
|
end
|
|
205
197
|
|
|
206
198
|
footer = [
|
|
@@ -225,6 +217,22 @@ module Sidekiq
|
|
|
225
217
|
frame.render_widget(controls, area)
|
|
226
218
|
end
|
|
227
219
|
|
|
220
|
+
def hotkey_line(key, description)
|
|
221
|
+
@tui.text_line(spans: [
|
|
222
|
+
@tui.text_span(content: key, style: @hotkey_style),
|
|
223
|
+
@tui.text_span(content: ": #{description}")
|
|
224
|
+
])
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
def controls_line(keys)
|
|
228
|
+
@tui.text_line(spans: keys.map { |hash|
|
|
229
|
+
[
|
|
230
|
+
@tui.text_span(content: hash[:display] || hash[:code], style: @hotkey_style),
|
|
231
|
+
@tui.text_span(content: ": #{t(hash[:description])} ")
|
|
232
|
+
]
|
|
233
|
+
}.flatten)
|
|
234
|
+
end
|
|
235
|
+
|
|
228
236
|
def handle_input
|
|
229
237
|
# We shouldn't need more than 10 FPS for a data-oriented app.
|
|
230
238
|
# This throttles down our CPU usage. Default is 60 FPS.
|
data/lib/sidekiq/version.rb
CHANGED
data/lib/sidekiq/web/action.rb
CHANGED
|
@@ -24,8 +24,8 @@ module Sidekiq
|
|
|
24
24
|
@request ||= ::Rack::Request.new(env)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
def halt(res)
|
|
28
|
-
throw :halt, [res, {"content-type" => "text/plain"}, [res.to_s]]
|
|
27
|
+
def halt(res, msg = nil)
|
|
28
|
+
throw :halt, [res, {"content-type" => "text/plain"}, [msg || res.to_s]]
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
# external redirect
|
|
@@ -90,9 +90,18 @@ module Sidekiq
|
|
|
90
90
|
|
|
91
91
|
get "/busy" do
|
|
92
92
|
@count = (url_params("count") || 100).to_i
|
|
93
|
-
(@current_page, @total_size, @workset) = page_items(workset, url_params("page"), @count)
|
|
94
93
|
|
|
95
|
-
|
|
94
|
+
# Use /busy?only=(jobs|processes) to limit page data
|
|
95
|
+
only = url_params("only")
|
|
96
|
+
halt 401, "Invalid value for only" unless only.nil? || only == "jobs" || only == "processes"
|
|
97
|
+
|
|
98
|
+
@show_jobs = (only != "processes")
|
|
99
|
+
@show_processes = (only != "jobs")
|
|
100
|
+
|
|
101
|
+
if @show_jobs
|
|
102
|
+
(@current_page, @total_size, @workset) = page_items(workset, url_params("page"), @count)
|
|
103
|
+
@iterable_states = Sidekiq::IterableJobQuery.new(workset.map { |_, _, work| work.job.jid })
|
|
104
|
+
end
|
|
96
105
|
|
|
97
106
|
erb(:busy)
|
|
98
107
|
end
|
data/lib/sidekiq/web/helpers.rb
CHANGED
|
@@ -72,19 +72,13 @@ module Sidekiq
|
|
|
72
72
|
# so extensions can be localized
|
|
73
73
|
@@strings[lang] ||= config.locales.each_with_object({}) do |path, global|
|
|
74
74
|
find_locale_files(lang).each do |file|
|
|
75
|
-
strs =
|
|
75
|
+
strs = parse_yaml(file)
|
|
76
76
|
global.merge!(strs[lang])
|
|
77
77
|
end
|
|
78
78
|
end
|
|
79
79
|
end
|
|
80
80
|
|
|
81
|
-
|
|
82
|
-
def parse_yaml_old(path)
|
|
83
|
-
require "yaml"
|
|
84
|
-
YAML.safe_load_file(path)
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
def parse_yaml_new(path)
|
|
81
|
+
def parse_yaml(path)
|
|
88
82
|
locale = nil
|
|
89
83
|
map = {}
|
|
90
84
|
IO.readlines(path, chomp: true).each do |line|
|
|
@@ -156,17 +150,18 @@ module Sidekiq
|
|
|
156
150
|
erb(:filtering, locals: {which:, placeholder_key:, label_key:})
|
|
157
151
|
end
|
|
158
152
|
|
|
159
|
-
def filter_link(
|
|
153
|
+
def filter_link(str, within = "retries")
|
|
154
|
+
hstr = h(str)
|
|
160
155
|
if within.nil?
|
|
161
|
-
|
|
156
|
+
hstr
|
|
162
157
|
else
|
|
163
|
-
"<a href='#{root_path}#{within}?substr=#{
|
|
158
|
+
"<a href='#{root_path}#{within}?substr=#{hstr}'>#{hstr}</a>"
|
|
164
159
|
end
|
|
165
160
|
end
|
|
166
161
|
|
|
167
162
|
def display_tags(job, within = "retries")
|
|
168
163
|
job.tags.map { |tag|
|
|
169
|
-
"<span class='label label-info jobtag jobtag-#{
|
|
164
|
+
"<span class='label label-info jobtag jobtag-#{h(tag)}'>#{filter_link(tag, within)}</span>"
|
|
170
165
|
}.join(" ")
|
|
171
166
|
end
|
|
172
167
|
|
|
@@ -337,7 +332,7 @@ module Sidekiq
|
|
|
337
332
|
[score.to_f, jid]
|
|
338
333
|
end
|
|
339
334
|
|
|
340
|
-
SAFE_QPARAMS = %w[page direction]
|
|
335
|
+
SAFE_QPARAMS = %w[page direction only]
|
|
341
336
|
|
|
342
337
|
# Merge options with current params, filter safe params, and stringify to query string
|
|
343
338
|
def qparams(options)
|
|
@@ -420,7 +415,7 @@ module Sidekiq
|
|
|
420
415
|
end
|
|
421
416
|
|
|
422
417
|
def h(text)
|
|
423
|
-
::
|
|
418
|
+
::CGI.escapeHTML(text.to_s)
|
|
424
419
|
rescue ArgumentError => e
|
|
425
420
|
raise unless e.message.eql?("invalid byte sequence in UTF-8")
|
|
426
421
|
text.encode!("UTF-16", "UTF-8", invalid: :replace, replace: "").encode!("UTF-8", "UTF-16")
|
data/lib/sidekiq/web/router.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require "
|
|
3
|
+
require "uri"
|
|
4
4
|
|
|
5
5
|
module Sidekiq
|
|
6
6
|
class Web
|
|
@@ -28,7 +28,7 @@ module Sidekiq
|
|
|
28
28
|
|
|
29
29
|
def match(env)
|
|
30
30
|
request_method = env["REQUEST_METHOD"].downcase.to_sym
|
|
31
|
-
path_info = ::
|
|
31
|
+
path_info = ::URI::RFC2396_PARSER.unescape env["PATH_INFO"]
|
|
32
32
|
|
|
33
33
|
# There are servers which send an empty string when requesting the root.
|
|
34
34
|
# These servers should be ashamed of themselves.
|
data/sidekiq.gemspec
CHANGED
|
@@ -20,7 +20,8 @@ Gem::Specification.new do |gem|
|
|
|
20
20
|
"documentation_uri" => "https://github.com/sidekiq/sidekiq/wiki",
|
|
21
21
|
"changelog_uri" => "https://github.com/sidekiq/sidekiq/blob/main/Changes.md",
|
|
22
22
|
"source_code_uri" => "https://github.com/sidekiq/sidekiq",
|
|
23
|
-
"rubygems_mfa_required" => "true"
|
|
23
|
+
"rubygems_mfa_required" => "true",
|
|
24
|
+
"mailing_list_uri" => "https://www.rubyforum.org/tag/sidekiq"
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
gem.add_dependency "redis-client", ">= 0.29.0"
|
data/web/locales/en.yml
CHANGED
data/web/locales/hi.yml
CHANGED
|
@@ -8,42 +8,57 @@ hi:
|
|
|
8
8
|
AreYouSureDeleteJob: क्या आप इस कार्य को हटाना चाहते है?
|
|
9
9
|
AreYouSureDeleteQueue: क्या आप %{queue} कतार को हटाना चाहते है?
|
|
10
10
|
Arguments: अर्गुमेन्ट्स्
|
|
11
|
+
BackToApp: ऐप पर वापस जाएँ
|
|
11
12
|
Busy: व्यस्थ
|
|
12
13
|
Class: क्लास
|
|
13
14
|
Connections: कनेक्श्न
|
|
15
|
+
CreatedAt: बनाया गया
|
|
14
16
|
CurrentMessagesInQueue: <span class='title'>%{queue}</span> कतार मे वर्तमान कार्य
|
|
15
17
|
Dashboard: डैशबोर्ड
|
|
16
18
|
Dead: निष्प्राण
|
|
17
19
|
DeadJobs: निष्प्राण कार्य
|
|
18
20
|
Delete: हटाओ
|
|
19
21
|
DeleteAll: सब हटाओ
|
|
22
|
+
Deploy: परिनियोजन
|
|
20
23
|
Enqueued: कतारबद्ध
|
|
21
24
|
Error: एरर
|
|
22
25
|
ErrorBacktrace: एरर बैकट्रेस
|
|
23
26
|
ErrorClass: एरर क्लास
|
|
24
27
|
ErrorMessage: एरर संदेश
|
|
28
|
+
ExecutionTime: निष्पादन समय
|
|
25
29
|
Extras: अतिरिक्त
|
|
26
30
|
Failed: असफल
|
|
27
31
|
Failures: असफलता
|
|
32
|
+
Failure: असफलता
|
|
28
33
|
GoBack: ← पीछे
|
|
29
34
|
History: वृत्तान्त
|
|
30
35
|
Job: कार्य
|
|
31
36
|
Jobs: कार्य
|
|
32
37
|
Kill: नष्ट करे
|
|
38
|
+
KillAll: सभी को समाप्त करें
|
|
39
|
+
Language: भाषा
|
|
40
|
+
LastDashboardUpdateTemplateLiteral: "नवीनतम पोल: संसाधित: PROCESSED_COUNT. असफल: FAILED_COUNT."
|
|
33
41
|
LastRetry: अंतिम पुन:प्रयास
|
|
42
|
+
Latency: विलंब
|
|
34
43
|
LivePoll: लाईव सर्वेक्षण
|
|
35
44
|
MemoryUsage: मेमरी उपयोग
|
|
45
|
+
Name: नाम
|
|
36
46
|
Namespace: नामस्थान
|
|
37
47
|
NextRetry: अगला पुन:प्रयास
|
|
38
48
|
NoDeadJobsFound: कोई निष्प्राण कार्य नही पाए गए
|
|
39
49
|
NoRetriesFound: कोई पुनर्प्रयास नही पाए गए
|
|
40
50
|
NoScheduledFound: कोई परिगणित कार्य नही पाए गए
|
|
51
|
+
NotYetEnqueued: अभी तक कतार में नहीं जोड़ा गया
|
|
41
52
|
OneMonth: १ महीना
|
|
42
53
|
OneWeek: १ सप्ताह
|
|
43
54
|
OriginallyFailed: पहिले से विफल
|
|
55
|
+
Pause: रोकें
|
|
44
56
|
Paused: थमे हुए
|
|
45
57
|
PeakMemoryUsage: अधिकतम मेमरी उपयोग
|
|
58
|
+
Plugins: प्लगइन्स
|
|
46
59
|
PollingInterval: सर्वेक्षण अंतराल
|
|
60
|
+
PollingIntervalMilliseconds: सर्वेक्षण अंतराल (मिलीसेकंड)
|
|
61
|
+
Process: प्रक्रिया
|
|
47
62
|
Processed: कार्रवाई कृत
|
|
48
63
|
Processes: प्रोसेसेस्
|
|
49
64
|
Queue: कतार
|
|
@@ -57,6 +72,7 @@ hi:
|
|
|
57
72
|
RetryNow: पुन:प्रयास करे
|
|
58
73
|
Scheduled: परिगणित
|
|
59
74
|
ScheduledJobs: परिगणित कार्य
|
|
75
|
+
Seconds: सेकंड
|
|
60
76
|
ShowAll: सब दिखाएं
|
|
61
77
|
SixMonths: ६ महीने
|
|
62
78
|
Size: आकार
|
|
@@ -65,13 +81,31 @@ hi:
|
|
|
65
81
|
Stop: रोको
|
|
66
82
|
StopAll: सब रोको
|
|
67
83
|
StopPolling: सर्वेक्षण रोको
|
|
84
|
+
Success: सफल
|
|
85
|
+
Summary: सारांश
|
|
68
86
|
Thread: थ्रेड
|
|
69
87
|
Threads: थ्रेड्स्
|
|
70
88
|
ThreeMonths: ३ महीने
|
|
71
89
|
Time: समय
|
|
90
|
+
Unpause: पुनः प्रारंभ करें
|
|
72
91
|
Uptime: उपरिकाल (दिवस)
|
|
92
|
+
Utilization: उपयोग
|
|
73
93
|
Version: वर्जन
|
|
74
94
|
When: कब
|
|
75
95
|
Worker: वर्कर
|
|
76
96
|
active: सक्रिय
|
|
77
97
|
idle: निष्क्रिय
|
|
98
|
+
Metrics: मेट्रिक्स
|
|
99
|
+
NoDataFound: कोई डेटा नहीं मिला
|
|
100
|
+
TotalExecutionTime: कुल निष्पादन समय
|
|
101
|
+
AvgExecutionTime: औसत निष्पादन समय
|
|
102
|
+
Context: संदर्भ
|
|
103
|
+
NoJobMetricsFound: हाल के कार्यों के लिए कोई मेट्रिक्स नहीं मिले
|
|
104
|
+
Filter: फ़िल्टर
|
|
105
|
+
AnyJobContent: कोई भी कार्य सामग्री
|
|
106
|
+
Profiles: प्रोफ़ाइल
|
|
107
|
+
Data: डेटा
|
|
108
|
+
View: देखें
|
|
109
|
+
Token: टोकन
|
|
110
|
+
ElapsedTime: बीता हुआ समय
|
|
111
|
+
ClickToLearnMore: अधिक जानने के लिए क्लिक करें
|
data/web/locales/ta.yml
CHANGED
|
@@ -5,73 +5,107 @@ ta:
|
|
|
5
5
|
AddToQueue: வரிசையில் சேர்
|
|
6
6
|
AddAllToQueue: அனைத்தையும் வரிசையில் சேர்
|
|
7
7
|
AreYouSure: நீங்கள் உறுதியாக இருக்கிறீர்களா?
|
|
8
|
-
AreYouSureDeleteJob:
|
|
9
|
-
AreYouSureDeleteQueue:
|
|
10
|
-
Arguments:
|
|
11
|
-
|
|
8
|
+
AreYouSureDeleteJob: இந்த பணியை நீக்க விரும்புகிறீர்களா?
|
|
9
|
+
AreYouSureDeleteQueue: "%{queue} வரிசையை நீக்க விரும்புகிறீர்களா? இது வரிசையிலுள்ள அனைத்து பணிகளையும் நீக்கிவிடும், எதிர்காலத்தில் மேலும் பணிகளை அனுப்பினால் இது மீண்டும் தோன்றும்."
|
|
10
|
+
Arguments: அளவுருக்கள்
|
|
11
|
+
BackToApp: பயன்பாட்டிற்குத் திரும்பு
|
|
12
|
+
Busy: செயலில்
|
|
12
13
|
Class: வகுப்பு
|
|
13
14
|
Connections: இணைப்புகள்
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
CreatedAt: உருவாக்கப்பட்ட நேரம்
|
|
16
|
+
CurrentMessagesInQueue: <span class='title'>%{queue}</span> இல் உள்ள தற்போதைய பணிகள்
|
|
17
|
+
Dashboard: தகவற்பலகை
|
|
18
|
+
Dead: முடிந்தது
|
|
19
|
+
DeadJobs: முடிந்த பணிகள்
|
|
18
20
|
Delete: நீக்கு
|
|
19
|
-
DeleteAll:
|
|
20
|
-
|
|
21
|
+
DeleteAll: அனைத்தையும் நீக்கு
|
|
22
|
+
Deploy: வரிசைப்படுத்து
|
|
23
|
+
Enqueued: வரிசையிடப்பட்டது
|
|
21
24
|
Error: பிழை
|
|
22
|
-
ErrorBacktrace: பிழை
|
|
25
|
+
ErrorBacktrace: பிழை பின்தடம்
|
|
23
26
|
ErrorClass: பிழை வகுப்பு
|
|
24
27
|
ErrorMessage: பிழை செய்தி
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
ExecutionTime: செயல்படுத்தும் நேரம்
|
|
29
|
+
Extras: கூடுதல்
|
|
30
|
+
Failed: தோல்வியடைந்தது
|
|
31
|
+
Failures: தோல்விகள்
|
|
32
|
+
Failure: தோல்வி
|
|
33
|
+
GoBack: ← பின் செல்
|
|
29
34
|
History: வரலாறு
|
|
30
|
-
Job:
|
|
31
|
-
Jobs:
|
|
32
|
-
Kill:
|
|
33
|
-
|
|
34
|
-
|
|
35
|
+
Job: பணி
|
|
36
|
+
Jobs: பணிகள்
|
|
37
|
+
Kill: நிறுத்து
|
|
38
|
+
KillAll: அனைத்தையும் நிறுத்து
|
|
39
|
+
Language: மொழி
|
|
40
|
+
LastDashboardUpdateTemplateLiteral: "கடைசி சோதனை: செயலாக்கப்பட்டவை: PROCESSED_COUNT. தோல்வியடைந்தவை: FAILED_COUNT."
|
|
41
|
+
LastRetry: கடைசி மறுமுயற்சி
|
|
42
|
+
Latency: தாமதம்
|
|
43
|
+
LivePoll: நேரடி சோதனை
|
|
35
44
|
MemoryUsage: நினைவக பயன்பாடு
|
|
45
|
+
Name: பெயர்
|
|
36
46
|
Namespace: பெயர்வெளி
|
|
37
|
-
NextRetry:
|
|
38
|
-
NoDeadJobsFound:
|
|
39
|
-
NoRetriesFound:
|
|
40
|
-
NoScheduledFound:
|
|
47
|
+
NextRetry: அடுத்த மறுமுயற்சி
|
|
48
|
+
NoDeadJobsFound: முடிந்த பணிகள் எதுவும் கிடைக்கவில்லை
|
|
49
|
+
NoRetriesFound: மறுமுயற்சிகள் எதுவும் கிடைக்கவில்லை
|
|
50
|
+
NoScheduledFound: திட்டமிடப்பட்ட பணிகள் எதுவும் கிடைக்கவில்லை
|
|
51
|
+
NotYetEnqueued: இன்னும் வரிசையிடப்படவில்லை
|
|
41
52
|
OneMonth: 1 மாதம்
|
|
42
53
|
OneWeek: 1 வாரம்
|
|
43
|
-
OriginallyFailed: முதலில்
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
54
|
+
OriginallyFailed: முதலில் தோல்வியடைந்தது
|
|
55
|
+
Pause: இடைநிறுத்து
|
|
56
|
+
Paused: இடைநிறுத்தப்பட்டது
|
|
57
|
+
PeakMemoryUsage: அதிகபட்ச நினைவக பயன்பாடு
|
|
58
|
+
Plugins: செருகுநிரல்கள்
|
|
59
|
+
PollingInterval: சோதனை இடைவெளி
|
|
60
|
+
PollingIntervalMilliseconds: சோதனை இடைவெளி மில்லிவினாடிகள்
|
|
61
|
+
Process: செயல்முறை
|
|
62
|
+
Processed: செயலாக்கப்பட்டது
|
|
48
63
|
Processes: செயல்முறைகள்
|
|
49
64
|
Queue: வரிசை
|
|
50
|
-
Queues:
|
|
51
|
-
Quiet:
|
|
52
|
-
QuietAll:
|
|
53
|
-
Realtime:
|
|
54
|
-
Retries:
|
|
55
|
-
RetryAll:
|
|
56
|
-
RetryCount:
|
|
57
|
-
RetryNow:
|
|
58
|
-
Scheduled:
|
|
59
|
-
ScheduledJobs:
|
|
60
|
-
|
|
65
|
+
Queues: வரிசைகள்
|
|
66
|
+
Quiet: அமைதி
|
|
67
|
+
QuietAll: அனைத்தையும் அமைதிப்படுத்து
|
|
68
|
+
Realtime: நிகழ்நேரம்
|
|
69
|
+
Retries: மறுமுயற்சிகள்
|
|
70
|
+
RetryAll: அனைத்தையும் மறுமுயற்சி செய்
|
|
71
|
+
RetryCount: மறுமுயற்சி எண்ணிக்கை
|
|
72
|
+
RetryNow: இப்போது மறுமுயற்சி செய்
|
|
73
|
+
Scheduled: திட்டமிடப்பட்டது
|
|
74
|
+
ScheduledJobs: திட்டமிடப்பட்ட பணிகள்
|
|
75
|
+
Seconds: வினாடிகள்
|
|
76
|
+
ShowAll: அனைத்தையும் காட்டு
|
|
61
77
|
SixMonths: 6 மாதங்கள்
|
|
62
78
|
Size: அளவு
|
|
63
|
-
Started:
|
|
64
|
-
Status:
|
|
79
|
+
Started: தொடங்கப்பட்டது
|
|
80
|
+
Status: நிலை
|
|
65
81
|
Stop: நிறுத்து
|
|
66
|
-
StopAll: நிறுத்து
|
|
67
|
-
StopPolling: நிறுத்து
|
|
82
|
+
StopAll: அனைத்தையும் நிறுத்து
|
|
83
|
+
StopPolling: சோதனையை நிறுத்து
|
|
84
|
+
Success: வெற்றி
|
|
85
|
+
Summary: சுருக்கம்
|
|
68
86
|
Thread: நூல்
|
|
69
87
|
Threads: நூல்கள்
|
|
70
88
|
ThreeMonths: 3 மாதங்கள்
|
|
71
89
|
Time: நேரம்
|
|
72
|
-
|
|
90
|
+
Unpause: இடைநிறுத்தத்தை நீக்கு
|
|
91
|
+
Uptime: இயங்கிய நேரம் (நாட்கள்)
|
|
92
|
+
Utilization: பயன்பாட்டு விகிதம்
|
|
73
93
|
Version: பதிப்பு
|
|
74
|
-
When:
|
|
94
|
+
When: எப்போது
|
|
75
95
|
Worker: பணியாளர்
|
|
76
96
|
active: செயலில்
|
|
77
|
-
idle:
|
|
97
|
+
idle: செயலற்று
|
|
98
|
+
Metrics: அளவீடுகள்
|
|
99
|
+
NoDataFound: தரவு எதுவும் கிடைக்கவில்லை
|
|
100
|
+
TotalExecutionTime: மொத்த செயல்படுத்தும் நேரம்
|
|
101
|
+
AvgExecutionTime: சராசரி செயல்படுத்தும் நேரம்
|
|
102
|
+
Context: சூழல்
|
|
103
|
+
NoJobMetricsFound: சமீபத்திய பணி அளவீடுகள் எதுவும் கிடைக்கவில்லை
|
|
104
|
+
Filter: வடிகட்டி
|
|
105
|
+
AnyJobContent: எந்த பணி உள்ளடக்கமும்
|
|
106
|
+
Profiles: சுயவிவரங்கள்
|
|
107
|
+
Data: தரவு
|
|
108
|
+
View: பார்வை
|
|
109
|
+
Token: டோக்கன்
|
|
110
|
+
ElapsedTime: கடந்த நேரம்
|
|
111
|
+
ClickToLearnMore: மேலும் அறிய கிளிக் செய்யவும்
|
data/web/views/_footer.html.erb
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<p id="serverUtcTime"><%= server_utc_time %></p>
|
|
12
12
|
</li>
|
|
13
13
|
<li>
|
|
14
|
-
<p><a rel="help" href="https://
|
|
14
|
+
<p><a rel="help" href="https://sidekiq.org/wiki">docs</a></p>
|
|
15
15
|
</li>
|
|
16
16
|
<li>
|
|
17
17
|
<form id="locale-form" action="<%= root_path %>change_locale" method="post">
|