good_job 2.11.3 → 2.12.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 +18 -1
- data/engine/app/controllers/good_job/{base_controller.rb → application_controller.rb} +20 -2
- data/engine/app/controllers/good_job/cron_entries_controller.rb +1 -1
- data/engine/app/controllers/good_job/executions_controller.rb +1 -1
- data/engine/app/controllers/good_job/jobs_controller.rb +1 -1
- data/engine/app/controllers/good_job/processes_controller.rb +1 -1
- data/engine/app/views/good_job/shared/_alert.erb +13 -0
- data/engine/app/views/good_job/shared/_announcement.erb +7 -0
- data/engine/app/views/good_job/shared/_footer.erb +15 -0
- data/engine/app/views/good_job/shared/_navbar.erb +49 -0
- data/engine/app/views/layouts/good_job/application.html.erb +32 -0
- data/engine/config/locales/en.yml +56 -0
- data/engine/config/locales/es.yml +56 -0
- data/lib/good_job/adapter.rb +8 -2
- data/lib/good_job/poller.rb +0 -3
- data/lib/good_job/version.rb +1 -1
- metadata +10 -4
- data/engine/app/views/layouts/good_job/base.html.erb +0 -96
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 398864eebf8f617924967bf2a73679bd0584493299570c20ea6dbc9598d23ff3
|
|
4
|
+
data.tar.gz: d781885d188ec4b3dab51f9609ba7a3935027426edf6cbf8147ae2b11a51ac72
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e9830078953d473bb48ec24cfcd4841029614be85c910b493d670eb1cfbbad287e95ce854a65aec609dd97954d6bb19f3a30c6a95cfd5d18c6913d777bab4d0f
|
|
7
|
+
data.tar.gz: ba0beb2c46d7f7044d1a7f2d5b1cb006ee67433432fb18e7bb04c7d4452df2e10ad45eff884c66bd7c1069ec47fee4fa18d776814dde4adf5b8a5bb4fb722904
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [v2.12.0](https://github.com/bensheldon/good_job/tree/v2.12.0) (2022-04-05)
|
|
4
|
+
|
|
5
|
+
[Full Changelog](https://github.com/bensheldon/good_job/compare/v2.11.3...v2.12.0)
|
|
6
|
+
|
|
7
|
+
**Closed issues:**
|
|
8
|
+
|
|
9
|
+
- TimeTask timeouts are now ignored as these were not able to be implemented correctly [\#555](https://github.com/bensheldon/good_job/issues/555)
|
|
10
|
+
- undefined method `relative\_time' when include\_all\_helpers is false [\#550](https://github.com/bensheldon/good_job/issues/550)
|
|
11
|
+
- ArgumentError: wrong number of arguments \(given 1, expected 0; required keyword: schedule\) - cron [\#546](https://github.com/bensheldon/good_job/issues/546)
|
|
12
|
+
|
|
13
|
+
**Merged pull requests:**
|
|
14
|
+
|
|
15
|
+
- Deprecate Adapter configuration of job execution/cron [\#558](https://github.com/bensheldon/good_job/pull/558) ([bensheldon](https://github.com/bensheldon))
|
|
16
|
+
- Remove usage of Concurrent::TimerTask's timeout\_interval [\#557](https://github.com/bensheldon/good_job/pull/557) ([bensheldon](https://github.com/bensheldon))
|
|
17
|
+
- Include locale in html lang attribute [\#556](https://github.com/bensheldon/good_job/pull/556) ([bensheldon](https://github.com/bensheldon))
|
|
18
|
+
- Rename `GoodJob::BaseController` to `GoodJob::ApplicationController` [\#553](https://github.com/bensheldon/good_job/pull/553) ([shouichi](https://github.com/shouichi))
|
|
19
|
+
- Internationalize/I18n the Dashboard Engine [\#497](https://github.com/bensheldon/good_job/pull/497) ([JuanVqz](https://github.com/JuanVqz))
|
|
20
|
+
|
|
3
21
|
## [v2.11.3](https://github.com/bensheldon/good_job/tree/v2.11.3) (2022-03-30)
|
|
4
22
|
|
|
5
23
|
[Full Changelog](https://github.com/bensheldon/good_job/compare/v2.11.2...v2.11.3)
|
|
@@ -10,7 +28,6 @@
|
|
|
10
28
|
|
|
11
29
|
**Closed issues:**
|
|
12
30
|
|
|
13
|
-
- ArgumentError: wrong number of arguments \(given 1, expected 0; required keyword: schedule\) - cron [\#546](https://github.com/bensheldon/good_job/issues/546)
|
|
14
31
|
- How to run clean up preserved jobs in cron? [\#541](https://github.com/bensheldon/good_job/issues/541)
|
|
15
32
|
- Erroring with "Too many open files" when good\_job tries reconnecting to database [\#530](https://github.com/bensheldon/good_job/issues/530)
|
|
16
33
|
- Can't cast Array [\#529](https://github.com/bensheldon/good_job/issues/529)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
module GoodJob
|
|
3
|
-
class
|
|
3
|
+
class ApplicationController < ActionController::Base
|
|
4
4
|
protect_from_forgery with: :exception
|
|
5
5
|
|
|
6
6
|
around_action :switch_locale
|
|
@@ -24,10 +24,28 @@ module GoodJob
|
|
|
24
24
|
request.content_security_policy_nonce_generator = ->(_request) { SecureRandom.base64(16) }
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
+
def default_url_options(options = {})
|
|
28
|
+
{ locale: I18n.locale }.merge(options)
|
|
29
|
+
end
|
|
30
|
+
|
|
27
31
|
private
|
|
28
32
|
|
|
29
33
|
def switch_locale(&action)
|
|
30
|
-
I18n.with_locale(
|
|
34
|
+
I18n.with_locale(current_locale, &action)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def current_locale
|
|
38
|
+
if params[:locale]
|
|
39
|
+
params[:locale]
|
|
40
|
+
elsif good_job_available_locales.exclude?(I18n.default_locale) && I18n.available_locales.include?(:en)
|
|
41
|
+
:en
|
|
42
|
+
else
|
|
43
|
+
I18n.default_locale
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def good_job_available_locales
|
|
48
|
+
@_good_job_available_locales ||= GoodJob::Engine.root.join("config/locales").glob("*.yml").map { |path| File.basename(path, ".yml").to_sym }.uniq
|
|
31
49
|
end
|
|
32
50
|
end
|
|
33
51
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
module GoodJob
|
|
3
|
-
class JobsController < GoodJob::
|
|
3
|
+
class JobsController < GoodJob::ApplicationController
|
|
4
4
|
rescue_from GoodJob::ActiveJobJob::AdapterNotGoodJobError,
|
|
5
5
|
GoodJob::ActiveJobJob::ActionForStateMismatchError,
|
|
6
6
|
with: :redirect_on_error
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
module GoodJob
|
|
3
|
-
class ProcessesController < GoodJob::
|
|
3
|
+
class ProcessesController < GoodJob::ApplicationController
|
|
4
4
|
def index
|
|
5
5
|
@processes = GoodJob::Process.active.order(created_at: :desc) if GoodJob::Process.migrated?
|
|
6
6
|
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<% if notice %>
|
|
2
|
+
<div class="alert alert-success alert-dismissible fade show d-flex align-items-center offset-md-3 col-6" role="alert">
|
|
3
|
+
<%= render "good_job/shared/icons/check", class: "flex-shrink-0 me-2" %>
|
|
4
|
+
<div><%= notice %></div>
|
|
5
|
+
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
6
|
+
</div>
|
|
7
|
+
<% elsif alert %>
|
|
8
|
+
<div class="alert alert-warning alert-dismissible fade show d-flex align-items-center offset-md-3 col-6" role="alert">
|
|
9
|
+
<%= render "good_job/shared/icons/exclamation", class: "flex-shrink-0 me-2" %>
|
|
10
|
+
<div><%= alert %></div>
|
|
11
|
+
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
12
|
+
</div>
|
|
13
|
+
<% end %>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<footer class="footer mt-auto py-3 bg-light fixed-bottom" id="footer" data-gj-poll-replace>
|
|
2
|
+
<div class="container-fluid">
|
|
3
|
+
<div class="row">
|
|
4
|
+
<div class="col-6">
|
|
5
|
+
<span class="text-muted">
|
|
6
|
+
<%= t(".last_update_html", time: Time.current.utc.iso8601) %>
|
|
7
|
+
</span>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<div class="col-6 text-end">
|
|
11
|
+
<%= t(".wording") %>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
</footer>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<nav class="navbar navbar-expand-lg navbar-light bg-light">
|
|
2
|
+
<div class="container-fluid">
|
|
3
|
+
<%= link_to t(".name"), root_path, class: "navbar-brand mb-0 h1" %>
|
|
4
|
+
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
|
5
|
+
<span class="navbar-toggler-icon"></span>
|
|
6
|
+
</button>
|
|
7
|
+
|
|
8
|
+
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
|
9
|
+
<ul class="navbar-nav me-auto">
|
|
10
|
+
<li class="nav-item">
|
|
11
|
+
<%= link_to t(".executions"), root_path, class: ["nav-link", ("active" if current_page?(root_path))] %>
|
|
12
|
+
</li>
|
|
13
|
+
<li class="nav-item">
|
|
14
|
+
<%= link_to t(".jobs"), jobs_path, class: ["nav-link", ("active" if current_page?(jobs_path))] %>
|
|
15
|
+
</li>
|
|
16
|
+
<li class="nav-item">
|
|
17
|
+
<%= link_to t(".cron_schedules"), cron_entries_path, class: ["nav-link", ("active" if current_page?(cron_entries_path))] %>
|
|
18
|
+
</li>
|
|
19
|
+
<li class="nav-item">
|
|
20
|
+
<%= link_to t(".processes"), processes_path, class: ["nav-link", ("active" if current_page?(processes_path))] %>
|
|
21
|
+
</li>
|
|
22
|
+
<li class="nav-item">
|
|
23
|
+
<div class="nav-link">
|
|
24
|
+
<span class="badge bg-secondary"><%= t(".coming_soon") %></span>
|
|
25
|
+
</div>
|
|
26
|
+
</li>
|
|
27
|
+
</ul>
|
|
28
|
+
<div class="nav-item pe-2">
|
|
29
|
+
<div class="form-check">
|
|
30
|
+
<input type="checkbox" id="toggle-poll" name="toggle-poll" data-gj-action='change#togglePoll' <%= 'checked' if params[:poll].present? %>>
|
|
31
|
+
<label for="toggle-poll"><%= t(".live_poll") %></label>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
<ul class="navbar-nav">
|
|
35
|
+
<li class="nav-item dropdown">
|
|
36
|
+
<a href="#" class="nav-link dropdown-toggle" type="button" id="localeOptions" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
37
|
+
<%= I18n.locale %>
|
|
38
|
+
</a>
|
|
39
|
+
|
|
40
|
+
<ul class="dropdown-menu" aria-labelledby="localeOptions">
|
|
41
|
+
<% I18n.available_locales.reject { |locale| locale == I18n.locale }.each do |locale| %>
|
|
42
|
+
<li><%= link_to locale, url_for(locale: locale), class: "dropdown-item" %></li>
|
|
43
|
+
<% end %>
|
|
44
|
+
</ul>
|
|
45
|
+
</li>
|
|
46
|
+
</ul>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
</nav>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="<%= I18n.locale %>">
|
|
3
|
+
<head>
|
|
4
|
+
<title>Good Job Dashboard</title>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<meta content="width=device-width, initial-scale=1, shrink-to-fit=no" name="viewport">
|
|
7
|
+
<%= csrf_meta_tags %>
|
|
8
|
+
<%= csp_meta_tag %>
|
|
9
|
+
|
|
10
|
+
<%# Assets must use *_url route helpers to avoid being overriden by config.asset_host %>
|
|
11
|
+
<%= stylesheet_link_tag bootstrap_url(format: :css, v: GoodJob::VERSION), skip_pipeline: true %>
|
|
12
|
+
<%= stylesheet_link_tag style_url(format: :css, v: GoodJob::VERSION) %>
|
|
13
|
+
|
|
14
|
+
<%= javascript_include_tag bootstrap_url(format: :js, v: GoodJob::VERSION), nonce: true %>
|
|
15
|
+
<%= javascript_include_tag chartjs_url(format: :js, v: GoodJob::VERSION), nonce: true %>
|
|
16
|
+
<%= javascript_include_tag scripts_url(format: :js, v: GoodJob::VERSION), nonce: true %>
|
|
17
|
+
|
|
18
|
+
<%= javascript_include_tag rails_ujs_url(format: :js, v: GoodJob::VERSION), nonce: true %>
|
|
19
|
+
</head>
|
|
20
|
+
<body>
|
|
21
|
+
<%= render "good_job/shared/navbar" %>
|
|
22
|
+
|
|
23
|
+
<div class="container-fluid">
|
|
24
|
+
<%= render "good_job/shared/announcement" %>
|
|
25
|
+
<%= render "good_job/shared/alert" %>
|
|
26
|
+
|
|
27
|
+
<%= yield %>
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
<%= render "good_job/shared/footer" %>
|
|
31
|
+
</body>
|
|
32
|
+
</html>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
en:
|
|
3
|
+
datetime:
|
|
4
|
+
distance_in_words:
|
|
5
|
+
about_x_hours:
|
|
6
|
+
one: about 1 hour
|
|
7
|
+
other: about %{count} hours
|
|
8
|
+
about_x_months:
|
|
9
|
+
one: about 1 month
|
|
10
|
+
other: about %{count} months
|
|
11
|
+
about_x_years:
|
|
12
|
+
one: about 1 year
|
|
13
|
+
other: about %{count} years
|
|
14
|
+
almost_x_years:
|
|
15
|
+
one: almost 1 year
|
|
16
|
+
other: almost %{count} years
|
|
17
|
+
half_a_minute: half a minute
|
|
18
|
+
less_than_x_minutes:
|
|
19
|
+
one: less than a minute
|
|
20
|
+
other: less than %{count} minutes
|
|
21
|
+
less_than_x_seconds:
|
|
22
|
+
one: less than 1 second
|
|
23
|
+
other: less than %{count} seconds
|
|
24
|
+
over_x_years:
|
|
25
|
+
one: over 1 year
|
|
26
|
+
other: over %{count} years
|
|
27
|
+
x_days:
|
|
28
|
+
one: 1 day
|
|
29
|
+
other: "%{count} days"
|
|
30
|
+
x_minutes:
|
|
31
|
+
one: 1 minute
|
|
32
|
+
other: "%{count} minutes"
|
|
33
|
+
x_months:
|
|
34
|
+
one: 1 month
|
|
35
|
+
other: "%{count} months"
|
|
36
|
+
x_seconds:
|
|
37
|
+
one: 1 second
|
|
38
|
+
other: "%{count} seconds"
|
|
39
|
+
x_years:
|
|
40
|
+
one: 1 year
|
|
41
|
+
other: "%{count} years"
|
|
42
|
+
good_job:
|
|
43
|
+
shared:
|
|
44
|
+
announcement:
|
|
45
|
+
work_in_progress_html: "🚧 GoodJob's dashboard is a work in progress. Please contribute ideas and code on <a href=\"https://github.com/bensheldon/good_job/issues\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Github</a>."
|
|
46
|
+
footer:
|
|
47
|
+
last_update_html: Last updated <time id="page-updated-at" datetime="%{time}">%{time}</time>
|
|
48
|
+
wording: Remember, you're doing a Good Job too!
|
|
49
|
+
navbar:
|
|
50
|
+
coming_soon: More views coming soon
|
|
51
|
+
cron_schedules: Cron Schedules
|
|
52
|
+
executions: All Executions
|
|
53
|
+
jobs: All Jobs
|
|
54
|
+
live_poll: Live Poll
|
|
55
|
+
name: "GoodJob 👍"
|
|
56
|
+
processes: Processes
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
es:
|
|
3
|
+
datetime:
|
|
4
|
+
distance_in_words:
|
|
5
|
+
about_x_hours:
|
|
6
|
+
one: alrededor de 1 hora
|
|
7
|
+
other: alrededor de %{count} horas
|
|
8
|
+
about_x_months:
|
|
9
|
+
one: alrededor de 1 mes
|
|
10
|
+
other: alrededor de %{count} meses
|
|
11
|
+
about_x_years:
|
|
12
|
+
one: alrededor de 1 año
|
|
13
|
+
other: alrededor de %{count} años
|
|
14
|
+
almost_x_years:
|
|
15
|
+
one: casi 1 año
|
|
16
|
+
other: casi %{count} años
|
|
17
|
+
half_a_minute: medio minuto
|
|
18
|
+
less_than_x_minutes:
|
|
19
|
+
one: menos de un minuto
|
|
20
|
+
other: menos de %{count} minutos
|
|
21
|
+
less_than_x_seconds:
|
|
22
|
+
one: menos de 1 segundo
|
|
23
|
+
other: menos de %{count} segundos
|
|
24
|
+
over_x_years:
|
|
25
|
+
one: más de 1 año
|
|
26
|
+
other: durante %{count} años
|
|
27
|
+
x_days:
|
|
28
|
+
one: 1 día
|
|
29
|
+
other: "%{count} días"
|
|
30
|
+
x_minutes:
|
|
31
|
+
one: 1 minuto
|
|
32
|
+
other: "%{count} minutos"
|
|
33
|
+
x_months:
|
|
34
|
+
one: 1 mes
|
|
35
|
+
other: "%{count} meses"
|
|
36
|
+
x_seconds:
|
|
37
|
+
one: 1 segundo
|
|
38
|
+
other: "%{count} segundos"
|
|
39
|
+
x_years:
|
|
40
|
+
one: 1 año
|
|
41
|
+
other: "%{count} años"
|
|
42
|
+
good_job:
|
|
43
|
+
shared:
|
|
44
|
+
announcement:
|
|
45
|
+
work_in_progress_html: "🚧 GoodJob se encuentra en desarrollo. Por favor contribuya en <a href=\"https://github.com/bensheldon/good_job/issues\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GoodJob</a> con ideas y código."
|
|
46
|
+
footer:
|
|
47
|
+
last_update_html: Última actualización <time id="page-updated-at" datetime="%{time}">%{time}</time>
|
|
48
|
+
wording: "¡Recuerda, también tú estás haciendo un buen trabajo!"
|
|
49
|
+
navbar:
|
|
50
|
+
coming_soon: Próximamente más vistas
|
|
51
|
+
cron_schedules: Tareas Programadas
|
|
52
|
+
executions: Ejecuciones
|
|
53
|
+
jobs: Tareas
|
|
54
|
+
live_poll: En vivo
|
|
55
|
+
name: "GoodJob 👍"
|
|
56
|
+
processes: Procesos
|
data/lib/good_job/adapter.rb
CHANGED
|
@@ -27,7 +27,13 @@ module GoodJob
|
|
|
27
27
|
# @param queues [String, nil] determines which queues to execute jobs from when +execution_mode+ is set to +:async+. See {file:README.md#optimize-queues-threads-and-processes} for more details on the format of this string. You can also set this with the environment variable +GOOD_JOB_QUEUES+. Defaults to +"*"+.
|
|
28
28
|
# @param poll_interval [Integer, nil] sets the number of seconds between polls for jobs when +execution_mode+ is set to +:async+. You can also set this with the environment variable +GOOD_JOB_POLL_INTERVAL+. Defaults to +1+.
|
|
29
29
|
# @param start_async_on_initialize [Boolean] whether to start the async scheduler when the adapter is initialized.
|
|
30
|
-
def initialize(execution_mode: nil, queues: nil, max_threads: nil, poll_interval: nil, start_async_on_initialize:
|
|
30
|
+
def initialize(execution_mode: nil, queues: nil, max_threads: nil, poll_interval: nil, start_async_on_initialize: nil)
|
|
31
|
+
if execution_mode || queues || max_threads || poll_interval || start_async_on_initialize
|
|
32
|
+
ActiveSupport::Deprecation.warn(
|
|
33
|
+
"The GoodJob::Adapter's initialization parameters have been deprecated and will be removed in GoodJob v3. These options should be configured through GoodJob global configuration instead."
|
|
34
|
+
)
|
|
35
|
+
end
|
|
36
|
+
|
|
31
37
|
@configuration = GoodJob::Configuration.new(
|
|
32
38
|
{
|
|
33
39
|
execution_mode: execution_mode,
|
|
@@ -39,7 +45,7 @@ module GoodJob
|
|
|
39
45
|
@configuration.validate!
|
|
40
46
|
self.class.instances << self
|
|
41
47
|
|
|
42
|
-
start_async if start_async_on_initialize
|
|
48
|
+
start_async if start_async_on_initialize || GoodJob.async_ready?
|
|
43
49
|
end
|
|
44
50
|
|
|
45
51
|
# Enqueues the ActiveJob job to be performed.
|
data/lib/good_job/poller.rb
CHANGED
|
@@ -6,13 +6,10 @@ module GoodJob # :nodoc:
|
|
|
6
6
|
# Pollers regularly wake up execution threads to check for new work.
|
|
7
7
|
#
|
|
8
8
|
class Poller
|
|
9
|
-
TIMEOUT_INTERVAL = 5
|
|
10
|
-
|
|
11
9
|
# Defaults for instance of Concurrent::TimerTask.
|
|
12
10
|
# The timer controls how and when sleeping threads check for new work.
|
|
13
11
|
DEFAULT_TIMER_OPTIONS = {
|
|
14
12
|
execution_interval: Configuration::DEFAULT_POLL_INTERVAL,
|
|
15
|
-
timeout_interval: TIMEOUT_INTERVAL,
|
|
16
13
|
run_now: true,
|
|
17
14
|
}.freeze
|
|
18
15
|
|
data/lib/good_job/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: good_job
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.12.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ben Sheldon
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-
|
|
11
|
+
date: 2022-04-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activejob
|
|
@@ -367,8 +367,8 @@ files:
|
|
|
367
367
|
- engine/app/assets/vendor/chartjs/chart.min.js
|
|
368
368
|
- engine/app/assets/vendor/rails_ujs.js
|
|
369
369
|
- engine/app/charts/good_job/scheduled_by_queue_chart.rb
|
|
370
|
+
- engine/app/controllers/good_job/application_controller.rb
|
|
370
371
|
- engine/app/controllers/good_job/assets_controller.rb
|
|
371
|
-
- engine/app/controllers/good_job/base_controller.rb
|
|
372
372
|
- engine/app/controllers/good_job/cron_entries_controller.rb
|
|
373
373
|
- engine/app/controllers/good_job/executions_controller.rb
|
|
374
374
|
- engine/app/controllers/good_job/jobs_controller.rb
|
|
@@ -385,8 +385,12 @@ files:
|
|
|
385
385
|
- engine/app/views/good_job/jobs/index.html.erb
|
|
386
386
|
- engine/app/views/good_job/jobs/show.html.erb
|
|
387
387
|
- engine/app/views/good_job/processes/index.html.erb
|
|
388
|
+
- engine/app/views/good_job/shared/_alert.erb
|
|
389
|
+
- engine/app/views/good_job/shared/_announcement.erb
|
|
388
390
|
- engine/app/views/good_job/shared/_chart.erb
|
|
389
391
|
- engine/app/views/good_job/shared/_filter.erb
|
|
392
|
+
- engine/app/views/good_job/shared/_footer.erb
|
|
393
|
+
- engine/app/views/good_job/shared/_navbar.erb
|
|
390
394
|
- engine/app/views/good_job/shared/icons/_arrow_clockwise.html.erb
|
|
391
395
|
- engine/app/views/good_job/shared/icons/_check.html.erb
|
|
392
396
|
- engine/app/views/good_job/shared/icons/_exclamation.html.erb
|
|
@@ -394,7 +398,9 @@ files:
|
|
|
394
398
|
- engine/app/views/good_job/shared/icons/_skip_forward.html.erb
|
|
395
399
|
- engine/app/views/good_job/shared/icons/_stop.html.erb
|
|
396
400
|
- engine/app/views/good_job/shared/icons/_trash.html.erb
|
|
397
|
-
- engine/app/views/layouts/good_job/
|
|
401
|
+
- engine/app/views/layouts/good_job/application.html.erb
|
|
402
|
+
- engine/config/locales/en.yml
|
|
403
|
+
- engine/config/locales/es.yml
|
|
398
404
|
- engine/config/routes.rb
|
|
399
405
|
- engine/lib/good_job/engine.rb
|
|
400
406
|
- exe/good_job
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<title>Good Job Dashboard</title>
|
|
5
|
-
<meta charset="utf-8">
|
|
6
|
-
<meta content="width=device-width, initial-scale=1, shrink-to-fit=no" name="viewport">
|
|
7
|
-
<%= csrf_meta_tags %>
|
|
8
|
-
<%= csp_meta_tag %>
|
|
9
|
-
|
|
10
|
-
<%# Assets must use *_url route helpers to avoid being overriden by config.asset_host %>
|
|
11
|
-
<%= stylesheet_link_tag bootstrap_url(format: :css, v: GoodJob::VERSION), skip_pipeline: true %>
|
|
12
|
-
<%= stylesheet_link_tag style_url(format: :css, v: GoodJob::VERSION) %>
|
|
13
|
-
|
|
14
|
-
<%= javascript_include_tag bootstrap_url(format: :js, v: GoodJob::VERSION), nonce: true %>
|
|
15
|
-
<%= javascript_include_tag chartjs_url(format: :js, v: GoodJob::VERSION), nonce: true %>
|
|
16
|
-
<%= javascript_include_tag scripts_url(format: :js, v: GoodJob::VERSION), nonce: true %>
|
|
17
|
-
|
|
18
|
-
<%= javascript_include_tag rails_ujs_url(format: :js, v: GoodJob::VERSION), nonce: true %>
|
|
19
|
-
</head>
|
|
20
|
-
<body>
|
|
21
|
-
<nav class="navbar navbar-expand-lg navbar-light bg-light">
|
|
22
|
-
<div class="container-fluid">
|
|
23
|
-
<%= link_to "GoodJob 👍", root_path, class: 'navbar-brand mb-0 h1' %>
|
|
24
|
-
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
|
25
|
-
<span class="navbar-toggler-icon"></span>
|
|
26
|
-
</button>
|
|
27
|
-
|
|
28
|
-
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
|
29
|
-
<ul class="navbar-nav me-auto">
|
|
30
|
-
<li class="nav-item">
|
|
31
|
-
<%= link_to "All Executions", root_path, class: ["nav-link", ("active" if current_page?(root_path))] %>
|
|
32
|
-
</li>
|
|
33
|
-
<li class="nav-item">
|
|
34
|
-
<%= link_to "All Jobs", jobs_path, class: ["nav-link", ("active" if current_page?(jobs_path))] %>
|
|
35
|
-
</li>
|
|
36
|
-
<li class="nav-item">
|
|
37
|
-
<%= link_to "Cron Schedules", cron_entries_path, class: ["nav-link", ("active" if current_page?(cron_entries_path))] %>
|
|
38
|
-
</li>
|
|
39
|
-
<li class="nav-item">
|
|
40
|
-
<%= link_to "Processes", processes_path, class: ["nav-link", ("active" if current_page?(processes_path))] %>
|
|
41
|
-
</li>
|
|
42
|
-
<li class="nav-item">
|
|
43
|
-
<div class="nav-link">
|
|
44
|
-
<span class="badge bg-secondary">More views coming soon</span>
|
|
45
|
-
</div>
|
|
46
|
-
</li>
|
|
47
|
-
</ul>
|
|
48
|
-
<div>
|
|
49
|
-
<input type="checkbox" id="toggle-poll" name="toggle-poll" data-gj-action='change#togglePoll' <%= 'checked' if params[:poll].present? %>>
|
|
50
|
-
<label for="toggle-poll">Live Poll</label>
|
|
51
|
-
</div>
|
|
52
|
-
</div>
|
|
53
|
-
</div>
|
|
54
|
-
</nav>
|
|
55
|
-
|
|
56
|
-
<div class="container-fluid">
|
|
57
|
-
<div class="card border-warning text-dark my-3">
|
|
58
|
-
<div class="card-body">
|
|
59
|
-
<p class="card-text">🚧 GoodJob's dashboard is a work in progress. Please contribute ideas and code on <a href="https://github.com/bensheldon/good_job/issues" target="_blank" rel="nofollow noopener noreferrer">Github</a>.</p>
|
|
60
|
-
</div>
|
|
61
|
-
</div>
|
|
62
|
-
|
|
63
|
-
<% if notice %>
|
|
64
|
-
<div class="alert alert-success alert-dismissible fade show d-flex align-items-center offset-md-3 col-6" role="alert">
|
|
65
|
-
<%= render "good_job/shared/icons/check", class: "flex-shrink-0 me-2" %>
|
|
66
|
-
<div><%= notice %></div>
|
|
67
|
-
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
68
|
-
</div>
|
|
69
|
-
<% elsif alert %>
|
|
70
|
-
<div class="alert alert-warning alert-dismissible fade show d-flex align-items-center offset-md-3 col-6" role="alert">
|
|
71
|
-
<%= render "good_job/shared/icons/exclamation", class: "flex-shrink-0 me-2" %>
|
|
72
|
-
<div><%= alert %></div>
|
|
73
|
-
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
74
|
-
</div>
|
|
75
|
-
<% end %>
|
|
76
|
-
|
|
77
|
-
<%= yield %>
|
|
78
|
-
</div>
|
|
79
|
-
|
|
80
|
-
<footer class="footer mt-auto py-3 bg-light fixed-bottom" id="footer" data-gj-poll-replace>
|
|
81
|
-
<div class="container-fluid">
|
|
82
|
-
<div class="row">
|
|
83
|
-
<div class="col-6">
|
|
84
|
-
<span class="text-muted">
|
|
85
|
-
Last updated: <time id="page-updated-at" datetime="<%= Time.current.utc.iso8601 %>"><%= Time.current %></time>
|
|
86
|
-
</span>
|
|
87
|
-
</div>
|
|
88
|
-
|
|
89
|
-
<div class="col-6 text-end">
|
|
90
|
-
Remember, you're doing a Good Job too!
|
|
91
|
-
</div>
|
|
92
|
-
</div>
|
|
93
|
-
</div>
|
|
94
|
-
</footer>
|
|
95
|
-
</body>
|
|
96
|
-
</html>
|