good_job 4.12.0 → 4.13.0
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/CHANGELOG.md +42 -0
- data/README.md +25 -3
- data/app/helpers/good_job/icons_helper.rb +2 -3
- data/app/models/good_job/discrete_execution.rb +1 -0
- data/app/views/good_job/_custom_head.html.erb +7 -0
- data/app/views/good_job/batches/_jobs.erb +4 -4
- data/app/views/good_job/cron_entries/index.html.erb +1 -1
- data/app/views/good_job/jobs/_executions.erb +1 -1
- data/app/views/good_job/jobs/_table.erb +5 -5
- data/app/views/good_job/jobs/show.html.erb +1 -1
- data/app/views/good_job/shared/_filter.erb +1 -1
- data/app/views/good_job/shared/_navbar.erb +6 -6
- data/app/views/layouts/good_job/application.html.erb +2 -0
- data/config/locales/de.yml +21 -21
- data/config/locales/zh-CN.yml +295 -0
- data/lib/good_job/active_job_extensions/labels.rb +1 -0
- data/lib/good_job/active_job_extensions/notify_options.rb +1 -0
- data/lib/good_job/notifier.rb +1 -0
- data/lib/good_job/version.rb +1 -1
- metadata +9 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 58105c96940dfa3fd32635f82347a87571d94828417977937f181795a87cbc9f
|
|
4
|
+
data.tar.gz: 8ef6a8cf16b8365674debd40cb29c16a02fc7e9863ce34b0dfada3eba8215724
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ff39513833a272a1078c0fbdbfac38a7b303a78adc761007dedd0c365cc77b95d1a395e04ba1d57676dff090d4ebdaf0f4564cb80efce6c98554a5b780ce5cd9
|
|
7
|
+
data.tar.gz: 072d4b2d4d27f4f262e2e13c1171cd64a88937662b8e64daf4db1e592f5f5e30472345e25d58976c66ce617a08ddc500ecab976269c1622c51bd8604194a781a
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,47 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [v4.13.0](https://github.com/bensheldon/good_job/tree/v4.13.0) (2025-12-02)
|
|
4
|
+
|
|
5
|
+
[Full Changelog](https://github.com/bensheldon/good_job/compare/v4.12.1...v4.13.0)
|
|
6
|
+
|
|
7
|
+
**Implemented enhancements:**
|
|
8
|
+
|
|
9
|
+
- Add custom partial for adding to the head tag [\#1682](https://github.com/bensheldon/good_job/pull/1682) ([RDIL](https://github.com/RDIL))
|
|
10
|
+
|
|
11
|
+
**Closed issues:**
|
|
12
|
+
|
|
13
|
+
- Losing advisory lock during job execution with transaction isolation level :serializable [\#989](https://github.com/bensheldon/good_job/issues/989)
|
|
14
|
+
|
|
15
|
+
**Merged pull requests:**
|
|
16
|
+
|
|
17
|
+
- Detangle lockfile platforms again [\#1696](https://github.com/bensheldon/good_job/pull/1696) ([bensheldon](https://github.com/bensheldon))
|
|
18
|
+
- Update development gems and ruby version [\#1695](https://github.com/bensheldon/good_job/pull/1695) ([bensheldon](https://github.com/bensheldon))
|
|
19
|
+
- Bump actions/checkout from 5 to 6 [\#1694](https://github.com/bensheldon/good_job/pull/1694) ([dependabot[bot]](https://github.com/apps/dependabot))
|
|
20
|
+
- Update German translations in locales/de.yml [\#1692](https://github.com/bensheldon/good_job/pull/1692) ([dup2](https://github.com/dup2))
|
|
21
|
+
- Fix german translation [\#1691](https://github.com/bensheldon/good_job/pull/1691) ([nhasselmeyer](https://github.com/nhasselmeyer))
|
|
22
|
+
- Bump github/codeql-action from 3 to 4 [\#1690](https://github.com/bensheldon/good_job/pull/1690) ([dependabot[bot]](https://github.com/apps/dependabot))
|
|
23
|
+
- Bump actions/upload-artifact from 4 to 5 [\#1689](https://github.com/bensheldon/good_job/pull/1689) ([dependabot[bot]](https://github.com/apps/dependabot))
|
|
24
|
+
- Add Simplified Chinese locale [\#1687](https://github.com/bensheldon/good_job/pull/1687) ([icyleaf](https://github.com/icyleaf))
|
|
25
|
+
- Replace Selenium with Cuprite [\#1659](https://github.com/bensheldon/good_job/pull/1659) ([bensheldon](https://github.com/bensheldon))
|
|
26
|
+
|
|
27
|
+
## [v4.12.1](https://github.com/bensheldon/good_job/tree/v4.12.1) (2025-10-16)
|
|
28
|
+
|
|
29
|
+
[Full Changelog](https://github.com/bensheldon/good_job/compare/v4.12.0...v4.12.1)
|
|
30
|
+
|
|
31
|
+
**Fixed bugs:**
|
|
32
|
+
|
|
33
|
+
- Improve warning color contrast [\#1679](https://github.com/bensheldon/good_job/pull/1679) ([RDIL](https://github.com/RDIL))
|
|
34
|
+
|
|
35
|
+
**Closed issues:**
|
|
36
|
+
|
|
37
|
+
- batch not showing jobs it enqueued [\#1685](https://github.com/bensheldon/good_job/issues/1685)
|
|
38
|
+
- Recommended method to set up job execution timeout [\#1090](https://github.com/bensheldon/good_job/issues/1090)
|
|
39
|
+
|
|
40
|
+
**Merged pull requests:**
|
|
41
|
+
|
|
42
|
+
- Add CI for Rails 8.1 \(rc\) and use postgres 18 [\#1686](https://github.com/bensheldon/good_job/pull/1686) ([Earlopain](https://github.com/Earlopain))
|
|
43
|
+
- Add warning and alternative to Ruby Timeout example [\#1684](https://github.com/bensheldon/good_job/pull/1684) ([seanpdoyle](https://github.com/seanpdoyle))
|
|
44
|
+
|
|
3
45
|
## [v4.12.0](https://github.com/bensheldon/good_job/tree/v4.12.0) (2025-09-22)
|
|
4
46
|
|
|
5
47
|
[Full Changelog](https://github.com/bensheldon/good_job/compare/v4.11.2...v4.12.0)
|
data/README.md
CHANGED
|
@@ -468,8 +468,9 @@ The Dashboard can be set to automatically refresh by checking "Live Poll" in the
|
|
|
468
468
|
|
|
469
469
|
#### Extending dashboard views
|
|
470
470
|
|
|
471
|
-
GoodJob exposes some views that are intended to be
|
|
471
|
+
GoodJob exposes some views that are intended to be overridden by placing views in your application:
|
|
472
472
|
|
|
473
|
+
- [`app/views/good_job/_custom_head.html.erb`](app/views/good_job/_custom_head.html.erb): content added to this partial will be added at the end of the `<head>` tag in all GoodJob views. This is ideal for injecting custom scripts or styles.
|
|
473
474
|
- [`app/views/good_job/_custom_job_details.html.erb`](app/views/good_job/_custom_job_details.html.erb): content added to this partial will be displayed above the argument list on the good_job/jobs#show page.
|
|
474
475
|
- [`app/views/good_job/_custom_execution_details.html.erb`](app/views/good_job/_custom_execution_details.html.erb): content added to this partial will be displayed above each execution on the good_job/jobs#show page.
|
|
475
476
|
|
|
@@ -1057,7 +1058,28 @@ end
|
|
|
1057
1058
|
|
|
1058
1059
|
### Timeouts
|
|
1059
1060
|
|
|
1060
|
-
|
|
1061
|
+
Avoid using Ruby's built-in [Timeout](https://github.com/ruby/timeout) mechanism
|
|
1062
|
+
([1](https://www.mikeperham.com/2015/05/08/timeout-rubys-most-dangerous-api/),
|
|
1063
|
+
[2](https://blog.headius.com/2008/02/rubys-threadraise-threadkill-timeoutrb.html)).
|
|
1064
|
+
Instead, declare either of Active Job's [discard_on](https://api.rubyonrails.org/classes/ActiveJob/Exceptions/ClassMethods.html#method-i-discard_on) or [retry_on](https://api.rubyonrails.org/classes/ActiveJob/Exceptions/ClassMethods.html#method-i-retry_on) to handle
|
|
1065
|
+
the underlying mechanism's timeout exceptions (when available).
|
|
1066
|
+
|
|
1067
|
+
For example, rescue from `Net::OpenTimeout` or `Net::ReadTimeout` and discard
|
|
1068
|
+
the job:
|
|
1069
|
+
|
|
1070
|
+
```ruby
|
|
1071
|
+
class MyJob < ApplicationJob
|
|
1072
|
+
discard_on Net::OpenTimeout, Net::ReadTimeout
|
|
1073
|
+
|
|
1074
|
+
def perform(uri)
|
|
1075
|
+
Net::HTTP.start(uri.host, uri.port, open_timeout: 3, read_timeout: 3) do |http|
|
|
1076
|
+
http.request(...)
|
|
1077
|
+
end
|
|
1078
|
+
end
|
|
1079
|
+
end
|
|
1080
|
+
```
|
|
1081
|
+
|
|
1082
|
+
If you have no other choice but to use a Ruby Timeout, it can be configured with an `around_perform`:
|
|
1061
1083
|
|
|
1062
1084
|
```ruby
|
|
1063
1085
|
class ApplicationJob < ActiveJob::Base
|
|
@@ -1742,7 +1764,7 @@ bin/rspec
|
|
|
1742
1764
|
Environment variables that may help with debugging:
|
|
1743
1765
|
|
|
1744
1766
|
- `LOUD=1`: display all stdout/stderr output from all sources. This is helpful because GoodJob wraps some tests with `quiet { }` for cleaner test output, but it can hinder debugging.
|
|
1745
|
-
- `SHOW_BROWSER=1`: Run system tests headfully with Chrome/
|
|
1767
|
+
- `SHOW_BROWSER=1`: Run system tests headfully with Chrome/Cuprite. Use `binding.irb` in the system tests to pause.
|
|
1746
1768
|
|
|
1747
1769
|
The gemfiles in `gemfiles/` can be used to run tests against different rails versions:
|
|
1748
1770
|
|
|
@@ -21,12 +21,11 @@ module GoodJob
|
|
|
21
21
|
}.freeze
|
|
22
22
|
|
|
23
23
|
def status_badge(status)
|
|
24
|
-
content_tag :span, status_icon(status
|
|
25
|
-
class: "badge rounded-pill bg-#{STATUS_COLOR.fetch(status)} d-inline-flex gap-2 ps-1 pe-3 align-items-center"
|
|
24
|
+
content_tag :span, status_icon(status) + t(status, scope: 'good_job.status', count: 1),
|
|
25
|
+
class: "badge rounded-pill text-bg-#{STATUS_COLOR.fetch(status)} d-inline-flex gap-2 ps-1 pe-3 align-items-center"
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
def status_icon(status, **options)
|
|
29
|
-
options[:class] ||= "text-#{STATUS_COLOR.fetch(status)}"
|
|
30
29
|
icon = render_icon STATUS_ICONS.fetch(status)
|
|
31
30
|
content_tag :span, icon, **options
|
|
32
31
|
end
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
</div>
|
|
29
29
|
<div class="col-4 col-lg-1 text-lg-center">
|
|
30
30
|
<div class="d-lg-none small text-muted mt-1"><%= t "good_job.models.job.queue" %></div>
|
|
31
|
-
<span class="badge bg-primary
|
|
31
|
+
<span class="badge text-bg-primary font-monospace"><%= job.queue_name %></span>
|
|
32
32
|
</div>
|
|
33
33
|
<div class="col-4 col-lg-1 text-lg-end">
|
|
34
34
|
<div class="d-lg-none small text-muted mt-1"><%= t "good_job.models.job.priority" %></div>
|
|
@@ -37,13 +37,13 @@
|
|
|
37
37
|
<div class="col-4 col-lg-1 text-lg-end">
|
|
38
38
|
<div class="d-lg-none small text-muted mt-1"><%= t "good_job.models.job.labels" %></div>
|
|
39
39
|
<% job.labels&.each do |label| %>
|
|
40
|
-
<span class="badge rounded-pill bg-secondary font-monospace"><%= label %></span>
|
|
40
|
+
<span class="badge rounded-pill text-bg-secondary font-monospace"><%= label %></span>
|
|
41
41
|
<% end %>
|
|
42
42
|
</div>
|
|
43
43
|
<div class="col-4 col-lg-1 text-lg-end">
|
|
44
44
|
<div class="d-lg-none small text-muted mt-1"><%= t "good_job.models.job.attempts" %></div>
|
|
45
45
|
<% if job.error %>
|
|
46
|
-
<%= tag.span job.executions_count, class: "badge rounded-pill bg-danger",
|
|
46
|
+
<%= tag.span job.executions_count, class: "badge rounded-pill text-bg-danger",
|
|
47
47
|
data: {
|
|
48
48
|
bs_toggle: "popover",
|
|
49
49
|
bs_trigger: "hover focus click",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
}
|
|
53
53
|
%>
|
|
54
54
|
<% else %>
|
|
55
|
-
<% executions_badge_color = job.executions_count > 1 ? "bg-warning" : "bg-secondary" %>
|
|
55
|
+
<% executions_badge_color = job.executions_count > 1 ? "text-bg-warning" : "text-bg-secondary" %>
|
|
56
56
|
<span class="badge rounded-pill <%= executions_badge_color %>"><%= job.executions_count %></span>
|
|
57
57
|
<% end %>
|
|
58
58
|
</div>
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
<div class="card my-3">
|
|
6
6
|
<div class="list-group list-group-flush text-nowrap" role="table">
|
|
7
|
-
<header class="list-group-item body-
|
|
7
|
+
<header class="list-group-item bg-body-tertiary">
|
|
8
8
|
<div class="row small text-muted text-uppercase align-items-center">
|
|
9
9
|
<div class="col-lg-2"></div>
|
|
10
10
|
<div class="col-lg-2 d-none d-lg-block"><%= t "good_job.models.cron.class" %></div>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<%= tag.div id: dom_id(execution), class: "list-group-item py-3" do %>
|
|
6
6
|
<div class="row align-items-center text-nowrap">
|
|
7
7
|
<div class="col-md-5 d-flex gap-2">
|
|
8
|
-
<%= tag.span execution.number, class: "badge bg-secondary rounded-pill" %>
|
|
8
|
+
<%= tag.span execution.number, class: "badge text-bg-secondary rounded-pill" %>
|
|
9
9
|
<%= tag.code link_to(execution.id, "##{dom_id(execution)}", class: "text-muted text-decoration-none small") %>
|
|
10
10
|
</div>
|
|
11
11
|
<div class="col-md-2 small">
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
</div>
|
|
78
78
|
<div class="col-4 col-lg-1 text-lg-center">
|
|
79
79
|
<div class="d-lg-none small text-muted mt-1"><%= t "good_job.models.job.queue" %></div>
|
|
80
|
-
<span class="badge bg-primary font-monospace"><%= job.queue_name %></span>
|
|
80
|
+
<span class="badge text-bg-primary font-monospace"><%= job.queue_name %></span>
|
|
81
81
|
</div>
|
|
82
82
|
<div class="col-4 col-lg-1 text-lg-end">
|
|
83
83
|
<div class="d-lg-none small text-muted mt-1"><%= t "good_job.models.job.priority" %></div>
|
|
@@ -86,13 +86,13 @@
|
|
|
86
86
|
<div class="col-4 col-lg-1 text-wrap text-lg-end">
|
|
87
87
|
<div class="d-lg-none small text-muted mt-1"><%= t "good_job.models.job.labels" %></div>
|
|
88
88
|
<% job.labels&.each do |label| %>
|
|
89
|
-
<span class="badge rounded-pill bg-secondary font-monospace"><%= label %></span>
|
|
89
|
+
<span class="badge rounded-pill text-bg-secondary font-monospace"><%= label %></span>
|
|
90
90
|
<% end %>
|
|
91
91
|
</div>
|
|
92
92
|
<div class="col-4 col-lg-1 text-lg-end">
|
|
93
93
|
<div class="d-lg-none small text-muted mt-1"><%= t "good_job.models.job.attempts" %></div>
|
|
94
94
|
<% if job.error %>
|
|
95
|
-
<%= tag.span job.executions_count, class: "badge rounded-pill bg-danger",
|
|
95
|
+
<%= tag.span job.executions_count, class: "badge rounded-pill text-bg-danger",
|
|
96
96
|
data: {
|
|
97
97
|
bs_toggle: "popover",
|
|
98
98
|
bs_trigger: "hover focus click",
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
}
|
|
102
102
|
%>
|
|
103
103
|
<% else %>
|
|
104
|
-
<% executions_badge_color = job.executions_count > 1 ? "bg-warning" : "bg-secondary" %>
|
|
104
|
+
<% executions_badge_color = job.executions_count > 1 ? "text-bg-warning" : "text-bg-secondary" %>
|
|
105
105
|
<span class="badge rounded-pill <%= executions_badge_color %>"><%= job.executions_count %></span>
|
|
106
106
|
<% end %>
|
|
107
107
|
</div>
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
<div>
|
|
112
112
|
<%= status_badge job.status %>
|
|
113
113
|
<% if job.status == :discarded && job.error_event %>
|
|
114
|
-
<div class="text-
|
|
114
|
+
<div class="text-center">
|
|
115
115
|
<small><%= t(job.error_event, scope: 'good_job.error_event') %></small>
|
|
116
116
|
</div>
|
|
117
117
|
<% end %>
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
</div>
|
|
15
15
|
<div class="col-6 col-md-2">
|
|
16
16
|
<div class="small text-muted text-uppercase"><%= t "good_job.models.job.queue" %></div>
|
|
17
|
-
<div class="badge bg-primary font-monospace my-2">
|
|
17
|
+
<div class="badge text-bg-primary font-monospace my-2">
|
|
18
18
|
<%= tag.strong @job.queue_name %>
|
|
19
19
|
</div>
|
|
20
20
|
</div>
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
<li class="nav-item">
|
|
57
57
|
<%= link_to filter.to_params(state: name), class: "nav-link #{'active' if params[:state] == name}" do %>
|
|
58
58
|
<%= t(name, scope: 'good_job.status') %>
|
|
59
|
-
<span data-async-values-target="value" data-async-values-key="<%= name %>" data-async-values-zero-class="bg-secondary" class="badge bg-primary rounded-pill d-none"></span>
|
|
59
|
+
<span data-async-values-target="value" data-async-values-key="<%= name %>" data-async-values-zero-class="text-bg-secondary" class="badge text-bg-primary rounded-pill d-none"></span>
|
|
60
60
|
<% end %>
|
|
61
61
|
</li>
|
|
62
62
|
<% end %>
|
|
@@ -18,25 +18,25 @@
|
|
|
18
18
|
<li class="nav-item">
|
|
19
19
|
<%= link_to jobs_path, class: ["nav-link", ("active" if controller_name == 'jobs')] do %>
|
|
20
20
|
<%= t(".jobs") %>
|
|
21
|
-
<span data-async-values-target="value" data-async-values-key="jobs_count" class="badge bg-secondary rounded-pill d-none"></span>
|
|
21
|
+
<span data-async-values-target="value" data-async-values-key="jobs_count" class="badge text-bg-secondary rounded-pill d-none"></span>
|
|
22
22
|
<% end %>
|
|
23
23
|
</li>
|
|
24
24
|
<li class="nav-item">
|
|
25
25
|
<%= link_to batches_path, class: ["nav-link", ("active" if controller_name == 'batches')] do %>
|
|
26
26
|
<%= t ".batches" %>
|
|
27
|
-
<span data-async-values-target="value" data-async-values-key="batches_count" class="badge bg-secondary rounded-pill d-none"></span>
|
|
27
|
+
<span data-async-values-target="value" data-async-values-key="batches_count" class="badge text-bg-secondary rounded-pill d-none"></span>
|
|
28
28
|
<% end %>
|
|
29
29
|
</li>
|
|
30
30
|
<li class="nav-item">
|
|
31
31
|
<%= link_to cron_entries_path, class: ["nav-link", ("active" if controller_name == 'cron_entries')] do %>
|
|
32
32
|
<%= t(".cron_schedules") %>
|
|
33
|
-
<span data-async-values-target="value" data-async-values-key="cron_entries_count" class="badge bg-secondary rounded-pill d-none"></span>
|
|
33
|
+
<span data-async-values-target="value" data-async-values-key="cron_entries_count" class="badge text-bg-secondary rounded-pill d-none"></span>
|
|
34
34
|
<% end %>
|
|
35
35
|
</li>
|
|
36
36
|
<li class="nav-item">
|
|
37
37
|
<%= link_to processes_path, class: ["nav-link", ("active" if controller_name == 'processes')] do %>
|
|
38
38
|
<%= t(".processes") %>
|
|
39
|
-
<span data-async-values-target="value" data-async-values-key="processes_count" data-async-values-zero-class="bg-danger" class="badge bg-secondary rounded-pill d-none"></span>
|
|
39
|
+
<span data-async-values-target="value" data-async-values-key="processes_count" data-async-values-zero-class="text-bg-danger" class="badge text-bg-secondary rounded-pill d-none"></span>
|
|
40
40
|
<% end %>
|
|
41
41
|
</li>
|
|
42
42
|
<li class="nav-item">
|
|
@@ -47,13 +47,13 @@
|
|
|
47
47
|
<li class="nav-item">
|
|
48
48
|
<%= link_to pauses_path, class: ["nav-link", ("active" if controller_name == 'pauses')] do %>
|
|
49
49
|
<%= t(".pauses") %>
|
|
50
|
-
<span data-async-values-target="value" data-async-values-key="pauses_count" data-async-values-zero-class="d-none" class="badge bg-warning rounded-pill d-none"></span>
|
|
50
|
+
<span data-async-values-target="value" data-async-values-key="pauses_count" data-async-values-zero-class="d-none" class="badge text-bg-warning rounded-pill d-none"></span>
|
|
51
51
|
<% end %>
|
|
52
52
|
</li>
|
|
53
53
|
<li class="nav-item">
|
|
54
54
|
<%= link_to cleaner_index_path, class: ["nav-link", ("active" if controller_name == 'cleaner')] do %>
|
|
55
55
|
<%= t(".cleaner") %>
|
|
56
|
-
<span data-async-values-target="value" data-async-values-key="discarded_count" class="badge bg-secondary rounded-pill d-none"></span>
|
|
56
|
+
<span data-async-values-target="value" data-async-values-key="discarded_count" class="badge text-bg-secondary rounded-pill d-none"></span>
|
|
57
57
|
<% end %>
|
|
58
58
|
</li>
|
|
59
59
|
</ul>
|
|
@@ -32,6 +32,8 @@
|
|
|
32
32
|
<%= tag.link rel: "icon", href: 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="10 0 100 100"><text y=".90em" font-size="90">👍</text></svg>' %>
|
|
33
33
|
<%= csrf_meta_tags %>
|
|
34
34
|
<%= csp_meta_tag %>
|
|
35
|
+
|
|
36
|
+
<%= render "good_job/custom_head" %>
|
|
35
37
|
</head>
|
|
36
38
|
<body>
|
|
37
39
|
<div class="d-flex flex-column min-vh-100">
|
data/config/locales/de.yml
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
de:
|
|
3
3
|
good_job:
|
|
4
4
|
actions:
|
|
5
|
-
destroy:
|
|
5
|
+
destroy: Löschen
|
|
6
6
|
discard: Verwerfen
|
|
7
7
|
force_discard: Verwerfen erzwingen
|
|
8
8
|
inspect: Prüfen
|
|
@@ -17,11 +17,11 @@ de:
|
|
|
17
17
|
title: Batches
|
|
18
18
|
jobs:
|
|
19
19
|
actions:
|
|
20
|
-
confirm_destroy: Bist du sicher, dass du diesen Job
|
|
20
|
+
confirm_destroy: Bist du sicher, dass du diesen Job löschen wilst?
|
|
21
21
|
confirm_discard: Bist du sicher, dass du diesen Job verwerfen willst?
|
|
22
22
|
confirm_reschedule: Bist du sicher, dass du diesen Job verschieben willst?
|
|
23
23
|
confirm_retry: Bist du sicher, dass du diesen Job erneut versuchen willst?
|
|
24
|
-
destroy: Job
|
|
24
|
+
destroy: Job löschen
|
|
25
25
|
discard: Job verwerfen
|
|
26
26
|
reschedule: Job neu planen
|
|
27
27
|
retry: Job wiederholen
|
|
@@ -38,15 +38,15 @@ de:
|
|
|
38
38
|
cleaner:
|
|
39
39
|
index:
|
|
40
40
|
all: All
|
|
41
|
-
class:
|
|
41
|
+
class: Klasse
|
|
42
42
|
exception: Exception
|
|
43
|
-
grouped_by_class: Discards
|
|
44
|
-
grouped_by_exception: Discards
|
|
45
|
-
last_1_hour:
|
|
46
|
-
last_24_hours:
|
|
47
|
-
last_3_days:
|
|
48
|
-
last_3_hours:
|
|
49
|
-
last_7_days:
|
|
43
|
+
grouped_by_class: Discards groupiert nach Klasse
|
|
44
|
+
grouped_by_exception: Discards groupiert nach Exception
|
|
45
|
+
last_1_hour: Letzte Stunde
|
|
46
|
+
last_24_hours: Letzte 24 Stunden
|
|
47
|
+
last_3_days: Letzte 3 Tage
|
|
48
|
+
last_3_hours: Letzte 3 Stunden
|
|
49
|
+
last_7_days: Letzte 7 Tage
|
|
50
50
|
title: Discard Cleaner
|
|
51
51
|
total: Total
|
|
52
52
|
cron_entries:
|
|
@@ -126,18 +126,18 @@ de:
|
|
|
126
126
|
past: Vor %{time}
|
|
127
127
|
jobs:
|
|
128
128
|
actions:
|
|
129
|
-
confirm_destroy: Bist du sicher, dass du diesen Job
|
|
129
|
+
confirm_destroy: Bist du sicher, dass du diesen Job löschen willst?
|
|
130
130
|
confirm_discard: Bist du sicher, dass du diesen Job verwerfen willst?
|
|
131
131
|
confirm_force_discard: Bist du sicher, dass du das Verwerfen dieses Jobs erzwingen möchten? Der Job wird als verworfen markiert, aber der laufende Job wird nicht gestoppt – er wird jedoch bei Fehlern nicht erneut versucht.
|
|
132
132
|
confirm_reschedule: Bist du sicher, dass du diesen Job verschieben willst?
|
|
133
133
|
confirm_retry: Bist du sicher, dass du diesen Job wiederholen willst?
|
|
134
|
-
destroy: Job
|
|
134
|
+
destroy: Job löschen
|
|
135
135
|
discard: Job verwerfen
|
|
136
136
|
force_discard: Job verwerfen erzwingen
|
|
137
137
|
reschedule: Job neu planen
|
|
138
138
|
retry: Job wiederholen
|
|
139
139
|
destroy:
|
|
140
|
-
notice:
|
|
140
|
+
notice: Job wurde gelöscht
|
|
141
141
|
discard:
|
|
142
142
|
notice: Job wurde verworfen
|
|
143
143
|
executions:
|
|
@@ -145,14 +145,14 @@ de:
|
|
|
145
145
|
full_trace: Full Trace
|
|
146
146
|
in_queue: in der Warteschlange
|
|
147
147
|
runtime: Laufzeit
|
|
148
|
-
title:
|
|
148
|
+
title: Ausführungen
|
|
149
149
|
force_discard:
|
|
150
150
|
notice: Der Job wurde zwangsweise verworfen. Die Ausführung wird fortgesetzt, bei Fehlern wird der Vorgang jedoch nicht wiederholt
|
|
151
151
|
index:
|
|
152
152
|
job_pagination: Job-Paginierung
|
|
153
153
|
older_jobs: Ältere Jobs
|
|
154
154
|
reschedule:
|
|
155
|
-
notice: Job wurde neu
|
|
155
|
+
notice: Job wurde neu geplant
|
|
156
156
|
retry:
|
|
157
157
|
notice: Job wurde wiederholt
|
|
158
158
|
show:
|
|
@@ -166,7 +166,7 @@ de:
|
|
|
166
166
|
confirm_discard_all: Bist du sicher, dass du die ausgewählten Jobs verferfen willst?
|
|
167
167
|
confirm_reschedule_all: Bist du sicher, dass du die ausgewählten Jobs neu planen willst?
|
|
168
168
|
confirm_retry_all: Bist du sicher, dass du die ausgewählten Jobs wiederholen willst?
|
|
169
|
-
destroy_all: Alle
|
|
169
|
+
destroy_all: Alle löschen
|
|
170
170
|
discard_all: Alle verwerfen
|
|
171
171
|
reschedule_all: Alle neu planen
|
|
172
172
|
retry_all: Alle wiederholen
|
|
@@ -220,11 +220,11 @@ de:
|
|
|
220
220
|
unit: ''
|
|
221
221
|
pauses:
|
|
222
222
|
index:
|
|
223
|
-
confirm_pause:
|
|
224
|
-
confirm_unpause:
|
|
225
|
-
disabled: Die experimentelle Pausenfunktion von GoodJob ist standardmäßig deaktiviert, da sie die Leistung beeinträchtigen kann.
|
|
223
|
+
confirm_pause: Bist du sicher, dass du %{value} pausieren möchten?
|
|
224
|
+
confirm_unpause: Bist du sicher, dass du %{value} fortsetzen möchten?
|
|
225
|
+
disabled: Die experimentelle Pausenfunktion von GoodJob ist standardmäßig deaktiviert, da sie die Leistung beeinträchtigen kann. Konfiguriere sie zur Aktivierung.
|
|
226
226
|
job_class: Job-Klasse
|
|
227
|
-
label:
|
|
227
|
+
label: Etikette
|
|
228
228
|
pause: Pausieren
|
|
229
229
|
queue: Warteschlange
|
|
230
230
|
title: Pausen
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
---
|
|
2
|
+
zh-CN:
|
|
3
|
+
good_job:
|
|
4
|
+
actions:
|
|
5
|
+
destroy: 删除
|
|
6
|
+
discard: 丢弃
|
|
7
|
+
force_discard: 强制丢弃
|
|
8
|
+
inspect: 检查
|
|
9
|
+
reschedule: 重新调度
|
|
10
|
+
retry: 重试
|
|
11
|
+
batches:
|
|
12
|
+
actions:
|
|
13
|
+
confirm_retry: 您确定要重试此批处理吗?
|
|
14
|
+
retry: 重试
|
|
15
|
+
index:
|
|
16
|
+
older_batches: 更早的批处理
|
|
17
|
+
title: 批处理
|
|
18
|
+
jobs:
|
|
19
|
+
actions:
|
|
20
|
+
confirm_destroy: 您确定要删除此任务吗?
|
|
21
|
+
confirm_discard: 您确定要丢弃此任务吗?
|
|
22
|
+
confirm_reschedule: 您确定要重新调度此任务吗?
|
|
23
|
+
confirm_retry: 您确定要重试此任务吗?
|
|
24
|
+
destroy: 删除任务
|
|
25
|
+
discard: 丢弃任务
|
|
26
|
+
reschedule: 重新调度任务
|
|
27
|
+
retry: 重试任务
|
|
28
|
+
title: 操作
|
|
29
|
+
no_jobs_found: 未找到任务
|
|
30
|
+
retry:
|
|
31
|
+
notice: 批处理已重试
|
|
32
|
+
show:
|
|
33
|
+
attributes: 属性
|
|
34
|
+
batched_jobs: 批量任务
|
|
35
|
+
callback_jobs: 回调任务
|
|
36
|
+
table:
|
|
37
|
+
no_batches_found: 未找到批处理
|
|
38
|
+
cleaner:
|
|
39
|
+
index:
|
|
40
|
+
all: 全部
|
|
41
|
+
class: Class
|
|
42
|
+
exception: 异常
|
|
43
|
+
grouped_by_class: 按 Class 分组的丢弃任务
|
|
44
|
+
grouped_by_exception: 按异常分组的丢弃任务
|
|
45
|
+
last_1_hour: 最近 1 小时
|
|
46
|
+
last_24_hours: 最近 24 小时
|
|
47
|
+
last_3_days: 最近 3 天
|
|
48
|
+
last_3_hours: 最近 3 小时
|
|
49
|
+
last_7_days: 最近 7 天
|
|
50
|
+
title: 丢弃任务清理器
|
|
51
|
+
total: 总计
|
|
52
|
+
cron_entries:
|
|
53
|
+
actions:
|
|
54
|
+
confirm_disable: 您确定要禁用此定时任务吗?
|
|
55
|
+
confirm_enable: 您确定要启用此定时任务吗?
|
|
56
|
+
confirm_enqueue: 您确定要立即入队此定时任务吗?
|
|
57
|
+
disable: 禁用定时任务
|
|
58
|
+
enable: 启用定时任务
|
|
59
|
+
enqueue: 立即入队定时任务
|
|
60
|
+
disable:
|
|
61
|
+
notice: 定时任务已禁用
|
|
62
|
+
enable:
|
|
63
|
+
notice: 定时任务已启用
|
|
64
|
+
enqueue:
|
|
65
|
+
notice: 定时任务已入队
|
|
66
|
+
index:
|
|
67
|
+
no_cron_schedules_found: 未找到定时任务
|
|
68
|
+
title: 定时任务
|
|
69
|
+
show:
|
|
70
|
+
cron_entry_key: 定时任务 Key
|
|
71
|
+
datetime:
|
|
72
|
+
distance_in_words:
|
|
73
|
+
about_x_hours:
|
|
74
|
+
one: 大约 1 小时
|
|
75
|
+
other: 大约 %{count} 小时
|
|
76
|
+
about_x_months:
|
|
77
|
+
one: 大约 1 个月
|
|
78
|
+
other: 大约 %{count} 个月
|
|
79
|
+
about_x_years:
|
|
80
|
+
one: 大约 1 年
|
|
81
|
+
other: 大约 %{count} 年
|
|
82
|
+
almost_x_years:
|
|
83
|
+
one: 接近 1 年
|
|
84
|
+
other: 接近 %{count} 年
|
|
85
|
+
half_a_minute: 半分钟
|
|
86
|
+
less_than_x_minutes:
|
|
87
|
+
one: 少于 1 分钟
|
|
88
|
+
other: 少于 %{count} 分钟
|
|
89
|
+
less_than_x_seconds:
|
|
90
|
+
one: 少于 1 秒
|
|
91
|
+
other: 少于 %{count} 秒
|
|
92
|
+
over_x_years:
|
|
93
|
+
one: 超过 1 年
|
|
94
|
+
other: 超过 %{count} 年
|
|
95
|
+
x_days:
|
|
96
|
+
one: 1 天
|
|
97
|
+
other: "%{count} 天"
|
|
98
|
+
x_minutes:
|
|
99
|
+
one: 1 分钟
|
|
100
|
+
other: "%{count} 分钟"
|
|
101
|
+
x_months:
|
|
102
|
+
one: 1 个月
|
|
103
|
+
other: "%{count} 个月"
|
|
104
|
+
x_seconds:
|
|
105
|
+
one: 1 秒
|
|
106
|
+
other: "%{count} 秒"
|
|
107
|
+
x_years:
|
|
108
|
+
one: 1 年
|
|
109
|
+
other: "%{count} 年"
|
|
110
|
+
duration:
|
|
111
|
+
hours: "%{hour} 小时 %{min} 分"
|
|
112
|
+
less_than_10_seconds: "%{sec} 秒"
|
|
113
|
+
milliseconds: "%{ms} 毫秒"
|
|
114
|
+
minutes: "%{min} 分 %{sec} 秒"
|
|
115
|
+
seconds: "%{sec} 秒"
|
|
116
|
+
error_event:
|
|
117
|
+
discarded: 已丢弃
|
|
118
|
+
handled: 已处理
|
|
119
|
+
interrupted: 已中断
|
|
120
|
+
retried: 已重试
|
|
121
|
+
retry_stopped: 停止重试
|
|
122
|
+
unhandled: 未处理
|
|
123
|
+
helpers:
|
|
124
|
+
relative_time:
|
|
125
|
+
future: "%{time} 后"
|
|
126
|
+
past: "%{time} 前"
|
|
127
|
+
jobs:
|
|
128
|
+
actions:
|
|
129
|
+
confirm_destroy: 您确定要删除此任务吗?
|
|
130
|
+
confirm_discard: 您确定要丢弃此任务吗?
|
|
131
|
+
confirm_force_discard: 您确定要强制丢弃此任务吗?任务将被标记为丢弃,但正在运行的任务不会被停止 - 不过,失败时不会重试。
|
|
132
|
+
confirm_reschedule: 您确定要重新调度此任务吗?
|
|
133
|
+
confirm_retry: 您确定要重试此任务吗?
|
|
134
|
+
destroy: 删除任务
|
|
135
|
+
discard: 丢弃任务
|
|
136
|
+
force_discard: 强制丢弃任务
|
|
137
|
+
reschedule: 重新调度任务
|
|
138
|
+
retry: 重试任务
|
|
139
|
+
destroy:
|
|
140
|
+
notice: 任务已删除
|
|
141
|
+
discard:
|
|
142
|
+
notice: 任务已丢弃
|
|
143
|
+
executions:
|
|
144
|
+
application_trace: 应用跟踪
|
|
145
|
+
full_trace: 完整跟踪
|
|
146
|
+
in_queue: 队列中
|
|
147
|
+
runtime: 运行时间
|
|
148
|
+
title: 执行情况
|
|
149
|
+
force_discard:
|
|
150
|
+
notice: 任务已强制丢弃。它将继续运行但失败时不会重试
|
|
151
|
+
index:
|
|
152
|
+
job_pagination: 任务分页
|
|
153
|
+
older_jobs: 更早的任务
|
|
154
|
+
reschedule:
|
|
155
|
+
notice: 任务已重新调度
|
|
156
|
+
retry:
|
|
157
|
+
notice: 任务已重试
|
|
158
|
+
show:
|
|
159
|
+
jobs: 任务
|
|
160
|
+
table:
|
|
161
|
+
actions:
|
|
162
|
+
apply_to_all:
|
|
163
|
+
one: 应用于所有 1 个任务。
|
|
164
|
+
other: 应用于所有 %{count} 个任务。
|
|
165
|
+
confirm_destroy_all: 您确定要删除所选任务吗?
|
|
166
|
+
confirm_discard_all: 您确定要丢弃所选任务吗?
|
|
167
|
+
confirm_reschedule_all: 您确定要重新调度所选任务吗?
|
|
168
|
+
confirm_retry_all: 您确定要重试所选任务吗?
|
|
169
|
+
destroy_all: 全部删除
|
|
170
|
+
discard_all: 全部丢弃
|
|
171
|
+
reschedule_all: 全部重新调度
|
|
172
|
+
retry_all: 全部重试
|
|
173
|
+
title: 操作
|
|
174
|
+
no_jobs_found: 未找到任务
|
|
175
|
+
toggle_actions: 切换操作
|
|
176
|
+
toggle_all_jobs: 切换所有任务
|
|
177
|
+
models:
|
|
178
|
+
batch:
|
|
179
|
+
created: 已创建
|
|
180
|
+
created_at: 创建时间
|
|
181
|
+
discarded: 已丢弃
|
|
182
|
+
discarded_at: 丢弃时间
|
|
183
|
+
enqueued: 已入队
|
|
184
|
+
enqueued_at: 入队时间
|
|
185
|
+
finished: 已完成
|
|
186
|
+
finished_at: 完成时间
|
|
187
|
+
jobs: 任务
|
|
188
|
+
name: 名称
|
|
189
|
+
cron:
|
|
190
|
+
class: Class
|
|
191
|
+
last_run: 上次运行
|
|
192
|
+
next_scheduled: 下次计划
|
|
193
|
+
schedule: 计划
|
|
194
|
+
states:
|
|
195
|
+
active: 活跃
|
|
196
|
+
paused: 暂停
|
|
197
|
+
status: 状态
|
|
198
|
+
job:
|
|
199
|
+
arguments: 参数
|
|
200
|
+
attempts: 尝试次数
|
|
201
|
+
labels: 标签
|
|
202
|
+
priority: 优先级
|
|
203
|
+
queue: 队列
|
|
204
|
+
number:
|
|
205
|
+
format:
|
|
206
|
+
delimiter: ","
|
|
207
|
+
separator: "."
|
|
208
|
+
human:
|
|
209
|
+
decimal_units:
|
|
210
|
+
delimiter: ","
|
|
211
|
+
format: "%n%u"
|
|
212
|
+
precision: 3
|
|
213
|
+
separator: "."
|
|
214
|
+
units:
|
|
215
|
+
billion: 十亿
|
|
216
|
+
million: 百万
|
|
217
|
+
quadrillion: 千万亿
|
|
218
|
+
thousand: 千
|
|
219
|
+
trillion: 万亿
|
|
220
|
+
unit: ''
|
|
221
|
+
pauses:
|
|
222
|
+
index:
|
|
223
|
+
confirm_pause: 您确定要暂停%{value}吗?
|
|
224
|
+
confirm_unpause: 您确定要恢复%{value}吗?
|
|
225
|
+
disabled: 因会降低性能的可能性 GoodJob 实验性的暂停功能默认禁用,启用需要配置
|
|
226
|
+
job_class: 任务 Class
|
|
227
|
+
label: 标签
|
|
228
|
+
pause: 暂停
|
|
229
|
+
queue: 队列
|
|
230
|
+
title: 暂停
|
|
231
|
+
type: 暂停类型
|
|
232
|
+
unpause: 恢复
|
|
233
|
+
value: 值
|
|
234
|
+
performance:
|
|
235
|
+
index:
|
|
236
|
+
average_duration: 平均时长
|
|
237
|
+
chart_title: 任务总执行时间(秒)
|
|
238
|
+
executions: 执行次数
|
|
239
|
+
job_class: 任务 Class
|
|
240
|
+
maximum_duration: 最大时长
|
|
241
|
+
minimum_duration: 最小时长
|
|
242
|
+
queue_name: 队列名称
|
|
243
|
+
title: 性能
|
|
244
|
+
show:
|
|
245
|
+
slow: 慢
|
|
246
|
+
title: 性能
|
|
247
|
+
processes:
|
|
248
|
+
index:
|
|
249
|
+
cron_enabled: 定时任务已启用
|
|
250
|
+
no_good_job_processes_found: 未找到 GoodJob 进程
|
|
251
|
+
process: 进程
|
|
252
|
+
schedulers: 调度器
|
|
253
|
+
started: 已启动
|
|
254
|
+
title: 进程
|
|
255
|
+
updated: 已更新
|
|
256
|
+
shared:
|
|
257
|
+
boolean:
|
|
258
|
+
'false': 否
|
|
259
|
+
'true': 是
|
|
260
|
+
error: 错误
|
|
261
|
+
filter:
|
|
262
|
+
all: 全部
|
|
263
|
+
all_jobs: 所有任务
|
|
264
|
+
all_queues: 所有队列
|
|
265
|
+
clear: 清除
|
|
266
|
+
job_name: 任务名称
|
|
267
|
+
placeholder: 按类、任务 ID、任务参数和错误文本搜索。
|
|
268
|
+
queue_name: 队列名称
|
|
269
|
+
search: 搜索
|
|
270
|
+
navbar:
|
|
271
|
+
batches: 批处理
|
|
272
|
+
cleaner: 丢弃清理器
|
|
273
|
+
cron_schedules: 定时任务
|
|
274
|
+
jobs: 任务
|
|
275
|
+
live_poll: 实时轮询
|
|
276
|
+
name: "GoodJob 👍"
|
|
277
|
+
pauses: 暂停
|
|
278
|
+
performance: 性能
|
|
279
|
+
processes: 进程
|
|
280
|
+
theme:
|
|
281
|
+
auto: 自动
|
|
282
|
+
dark: 深色
|
|
283
|
+
light: 浅色
|
|
284
|
+
theme: 主题
|
|
285
|
+
pending_migrations: GoodJob 有待处理的数据库迁移
|
|
286
|
+
secondary_navbar:
|
|
287
|
+
inspiration: 记住,你也在做一份 Good Job!
|
|
288
|
+
last_updated: 最后更新
|
|
289
|
+
status:
|
|
290
|
+
discarded: 已丢弃
|
|
291
|
+
queued: 已入队
|
|
292
|
+
retried: 已重试
|
|
293
|
+
running: 运行中
|
|
294
|
+
scheduled: 已计划
|
|
295
|
+
succeeded: 已成功
|
data/lib/good_job/notifier.rb
CHANGED
data/lib/good_job/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: good_job
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.
|
|
4
|
+
version: 4.13.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ben Sheldon
|
|
@@ -108,7 +108,7 @@ dependencies:
|
|
|
108
108
|
- !ruby/object:Gem::Version
|
|
109
109
|
version: '0'
|
|
110
110
|
- !ruby/object:Gem::Dependency
|
|
111
|
-
name:
|
|
111
|
+
name: cuprite
|
|
112
112
|
requirement: !ruby/object:Gem::Requirement
|
|
113
113
|
requirements:
|
|
114
114
|
- - ">="
|
|
@@ -122,7 +122,7 @@ dependencies:
|
|
|
122
122
|
- !ruby/object:Gem::Version
|
|
123
123
|
version: '0'
|
|
124
124
|
- !ruby/object:Gem::Dependency
|
|
125
|
-
name: kramdown
|
|
125
|
+
name: kramdown
|
|
126
126
|
requirement: !ruby/object:Gem::Requirement
|
|
127
127
|
requirements:
|
|
128
128
|
- - ">="
|
|
@@ -136,7 +136,7 @@ dependencies:
|
|
|
136
136
|
- !ruby/object:Gem::Version
|
|
137
137
|
version: '0'
|
|
138
138
|
- !ruby/object:Gem::Dependency
|
|
139
|
-
name:
|
|
139
|
+
name: kramdown-parser-gfm
|
|
140
140
|
requirement: !ruby/object:Gem::Requirement
|
|
141
141
|
requirements:
|
|
142
142
|
- - ">="
|
|
@@ -150,7 +150,7 @@ dependencies:
|
|
|
150
150
|
- !ruby/object:Gem::Version
|
|
151
151
|
version: '0'
|
|
152
152
|
- !ruby/object:Gem::Dependency
|
|
153
|
-
name:
|
|
153
|
+
name: puma
|
|
154
154
|
requirement: !ruby/object:Gem::Requirement
|
|
155
155
|
requirements:
|
|
156
156
|
- - ">="
|
|
@@ -164,7 +164,7 @@ dependencies:
|
|
|
164
164
|
- !ruby/object:Gem::Version
|
|
165
165
|
version: '0'
|
|
166
166
|
- !ruby/object:Gem::Dependency
|
|
167
|
-
name:
|
|
167
|
+
name: rspec-rails
|
|
168
168
|
requirement: !ruby/object:Gem::Requirement
|
|
169
169
|
requirements:
|
|
170
170
|
- - ">="
|
|
@@ -301,6 +301,7 @@ files:
|
|
|
301
301
|
- app/models/good_job/process.rb
|
|
302
302
|
- app/models/good_job/setting.rb
|
|
303
303
|
- app/views/good_job/_custom_execution_details.html.erb
|
|
304
|
+
- app/views/good_job/_custom_head.html.erb
|
|
304
305
|
- app/views/good_job/_custom_job_details.html.erb
|
|
305
306
|
- app/views/good_job/batches/_jobs.erb
|
|
306
307
|
- app/views/good_job/batches/_table.erb
|
|
@@ -341,6 +342,7 @@ files:
|
|
|
341
342
|
- config/locales/ru.yml
|
|
342
343
|
- config/locales/tr.yml
|
|
343
344
|
- config/locales/uk.yml
|
|
345
|
+
- config/locales/zh-CN.yml
|
|
344
346
|
- config/routes.rb
|
|
345
347
|
- exe/good_job
|
|
346
348
|
- lib/active_job/queue_adapters/good_job_adapter.rb
|
|
@@ -422,7 +424,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
422
424
|
- !ruby/object:Gem::Version
|
|
423
425
|
version: '0'
|
|
424
426
|
requirements: []
|
|
425
|
-
rubygems_version: 3.
|
|
427
|
+
rubygems_version: 3.6.9
|
|
426
428
|
specification_version: 4
|
|
427
429
|
summary: A multithreaded, Postgres-based ActiveJob backend for Ruby on Rails
|
|
428
430
|
test_files: []
|