rush_job 0.5.1 → 0.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2656877c04c7bf364e6b009dde59e1b4169ec229cb011c8b973587f07185026b
4
- data.tar.gz: d91245e38016a4a0be1e35ee9c8085d6a75580d4bf858cd37c88383e119f33f9
3
+ metadata.gz: 82209f37f6a845c77cb6933c9c559a949df485c3142b8585c20955fa23eb9519
4
+ data.tar.gz: b4fda350f51463d8e05e0d7bc1db426420234b1f5d458406b59d36104d00d746
5
5
  SHA512:
6
- metadata.gz: 3c5b8bf4ef1138187b56cd5081aa8ff64a2cf73b3d05222501f7330bbd7f2816c30df2b7e696fd03b4a0442bde77990fdf00c6a8d863e1485218d274806192a9
7
- data.tar.gz: 174ced87e1345741f9ffc26e8c5819c67b7d943a5b28ddf9e28afc225c65c2bbf477b9eafae11aba923c9bc554a8652fc4a834bf8bfcf0843536f0d693647aa6
6
+ metadata.gz: d8a7d54426d59d39f397fd064685e7c7ab8586c2f717f023001e7f7db232fe66533363d9c5a9834b25d8f89903eb299b8973637e52615025d0655530f4b3df9c
7
+ data.tar.gz: 04a8b173f671ae3ff2b39ab10466b3f38584d6ae7c9ee2556281c024e3c3b613e611063eb8df878983a7247e76cd8d1d16ef4ce1decf07991708d8c38427c161
data/README.md CHANGED
@@ -17,7 +17,7 @@ Navigate to the `/rush_job` route in your application to see the Delayed Jobs. L
17
17
  Add this line to your Ruby on Rails application's Gemfile:
18
18
 
19
19
  ```ruby
20
- gem 'rush_job', '~> 0.5.1'
20
+ gem 'rush_job', '~> 0.6.0'
21
21
  ```
22
22
 
23
23
  And then execute:
@@ -15,6 +15,19 @@ module RushJob
15
15
  page_param: :queue_page)
16
16
  end
17
17
 
18
+ def destroy
19
+ RushJob.clear_queue(queue_params[:queue], queue_params[:priority])
20
+
21
+ flash[:success] = t(:cleared_queue, queue: queue_params[:queue])
22
+ redirect_to root_path, status: :see_other
23
+ end
24
+
25
+ private
26
+
27
+ def queue_params
28
+ params.permit(:queue, :priority)
29
+ end
30
+
18
31
  def redirect_to_first_page
19
32
  redirect_to root_path, notice: t(:invalid_page_notice)
20
33
  end
@@ -7,11 +7,6 @@ module RushJob
7
7
 
8
8
  def index
9
9
  @pagy, @rush_jobs = pagy(RushJob.order("#{sort_column} #{sort_direction}"))
10
-
11
- respond_to do |format|
12
- format.html
13
- format.js
14
- end
15
10
  end
16
11
 
17
12
  private
@@ -0,0 +1,18 @@
1
+ module RushJob
2
+ class SettingsController < ApplicationController
3
+ def update
4
+ change_setting if Settings::RUSH_JOB_SETTINGS[params[:setting]&.to_sym]
5
+
6
+ redirect_to root_path
7
+ end
8
+
9
+ private
10
+
11
+ def change_setting
12
+ setting_param = params[:setting]
13
+ setting_cookie = "rush_job_#{setting_param}"
14
+
15
+ cookies.permanent[setting_cookie.to_sym] = Settings.change_setting(setting_param, cookies[setting_cookie.to_sym])
16
+ end
17
+ end
18
+ end
@@ -1,11 +1,5 @@
1
1
  module RushJob
2
2
  module ApplicationHelper
3
- def current_theme
4
- cookies[:rush_job_theme] == 'dark' ? 'dark' : 'light'
5
- end
6
-
7
- def invert_theme
8
- cookies[:rush_job_theme] == 'dark' ? 'light' : 'dark'
9
- end
3
+ include SettingsHelper
10
4
  end
11
5
  end
@@ -0,0 +1,15 @@
1
+ module RushJob
2
+ module SettingsHelper
3
+ def current_theme
4
+ cookies[:rush_job_theme] == 'dark' ? 'dark' : 'light'
5
+ end
6
+
7
+ def invert_theme
8
+ cookies[:rush_job_theme] == 'dark' ? 'light' : 'dark'
9
+ end
10
+
11
+ def editing_enabled?
12
+ cookies[:rush_job_editing] == 'enabled'
13
+ end
14
+ end
15
+ end
@@ -4,6 +4,11 @@ module RushJob
4
4
 
5
5
  scope :locked_jobs, -> { where.not(locked_at: nil).order(locked_at: :desc) }
6
6
  scope :queue_groups, -> { group(:queue, :priority).order(:priority).count }
7
+ scope :queue_group, ->(queue, priority) { where(queue:).and(where(priority:)) }
8
+
9
+ def self.clear_queue(queue, priority)
10
+ queue_group(queue, priority).delete_all
11
+ end
7
12
 
8
13
  def job_class
9
14
  job_data[:job_class]
@@ -0,0 +1,18 @@
1
+ module RushJob
2
+ class Settings
3
+ RUSH_JOB_SETTINGS = {
4
+ theme: %w[light dark],
5
+ editing: %w[disabled enabled]
6
+ }.freeze
7
+
8
+ def self.change_setting(setting, value)
9
+ return unless RUSH_JOB_SETTINGS[setting.to_sym]
10
+
11
+ if RUSH_JOB_SETTINGS[setting.to_sym][1] == value
12
+ RUSH_JOB_SETTINGS[setting.to_sym][0]
13
+ else
14
+ RUSH_JOB_SETTINGS[setting.to_sym][1]
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,5 @@
1
+ <% flash.each do |type, msg| %>
2
+ <div class="alert alert-<%= invert_theme %>" role="alert">
3
+ <%= msg %>
4
+ </div>
5
+ <% end %>
@@ -17,13 +17,29 @@
17
17
  <div class="collapse navbar-collapse" id="rush-job-navbar-links">
18
18
  <ul class="navbar-nav me-auto">
19
19
  <li class="nav-item">
20
- <%= link_to t(:dashboard), root_path, class: "nav-link" %>
20
+ <%= link_to t(:dashboard), root_path, class: "nav-link#{' active' if current_page?(root_path)}" %>
21
21
  </li>
22
22
  <li class="nav-item">
23
- <%= link_to t(:jobs), rush_jobs_path, class: "nav-link" %>
23
+ <%= link_to t(:jobs), rush_jobs_path, class: "nav-link#{' active' if current_page?(rush_jobs_path)}" %>
24
24
  </li>
25
- <li class="nav-item">
26
- <%= link_to t("#{invert_theme}_mode"), theme_path, class: "nav-link", method: :patch %>
25
+ <li class="nav-item dropdown">
26
+ <a class="nav-link dropdown-toggle"
27
+ data-bs-toggle="dropdown"
28
+ href="#" role="button"
29
+ aria-haspopup="true"
30
+ aria-expanded="false">
31
+ Options
32
+ </a>
33
+ <div class="dropdown-menu"
34
+ data-bs-popper="static">
35
+ <%= button_to t("#{invert_theme}_mode"), settings_path, class: "nav-link", method: :patch, params: { setting: 'theme' } %>
36
+ <%= button_to t("#{editing_enabled? ? 'disable_editing' : 'enable_editing'}"),
37
+ settings_path,
38
+ class: "nav-link",
39
+ method: :patch,
40
+ params: { setting: 'editing' },
41
+ data: { confirm: t("#{editing_enabled? ? 'disable_editing_confirmation' : 'enable_editing_confirmation'}") } %>
42
+ </div>
27
43
  </li>
28
44
  </ul>
29
45
  </div>
@@ -12,11 +12,9 @@
12
12
  </head>
13
13
  <body class="background-color-<%= current_theme %>">
14
14
  <%= render 'layouts/rush_job/navbar' %>
15
- <% flash.each do |type, msg| %>
16
- <div class="alert alert-<%= invert_theme %>" role="alert">
17
- <%= msg %>
18
- </div>
19
- <% end %>
15
+ <div id="rush-job-flash-messages">
16
+ <%= render 'layouts/rush_job/flash_messages' %>
17
+ </div>
20
18
 
21
19
  <%= yield %>
22
20
 
@@ -53,6 +53,9 @@
53
53
  <th><%= t :name %></th>
54
54
  <th><%= t :priority %></th>
55
55
  <th><%= t :count %></th>
56
+ <% if editing_enabled? %>
57
+ <th><%= t :clear %></th>
58
+ <% end %>
56
59
  </tr>
57
60
  </thead>
58
61
  <tbody class="table-group-divider">
@@ -61,6 +64,14 @@
61
64
  <td><%= queue[0] %></td>
62
65
  <td><%= queue[1] %></td>
63
66
  <td><%= @queue_groups[queue] %></td>
67
+ <% if editing_enabled? %>
68
+ <td><%= button_to t(:clear),
69
+ dashboard_path,
70
+ class: "btn btn-danger btn-sm",
71
+ method: :delete,
72
+ params: { queue: queue[0], priority: queue[1] },
73
+ data: { confirm: t(:clear_queue_confirmation, queue: queue[0]) } %></td>
74
+ <% end %>
64
75
  </tr>
65
76
  <% end %>
66
77
  </tbody>
@@ -1 +1,2 @@
1
+ document.getElementById('rush-job-flash-messages').innerHTML = "<%= j (render partial: 'layouts/rush_job/flash_messages') %>"
1
2
  document.getElementById('rush-job-jobs').innerHTML = "<%= j (render partial: 'dashboard_tables') %>"
@@ -1,10 +1,17 @@
1
1
  en:
2
2
  arguments: "Arguments"
3
3
  attempts: "Attempts"
4
+ clear: "Clear"
5
+ clear_queue_confirmation: "Are you sure you want to clear queue %{queue}?"
6
+ cleared_queue: "Cleared queue %{queue}"
4
7
  count: "Count"
5
8
  dark_mode: "Dark Mode"
6
9
  dashboard: "Dashboard"
7
10
  delayed_title: "Delayed Jobs"
11
+ disable_editing: "Disable Editing"
12
+ disable_editing_confirmation: "Are you sure?"
13
+ enable_editing: "Enable Editing"
14
+ enable_editing_confirmation: "Are you sure? Verify workers are stopped before editing."
8
15
  enable_polling: "Enable polling"
9
16
  failed_at: "Failed at"
10
17
  id: "Id"
data/config/routes.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  RushJob::Engine.routes.draw do
2
2
  root 'dashboard#index'
3
+ delete '/dashboard', to: 'dashboard#destroy'
3
4
  get '/rush_jobs', to: 'rush_jobs#index'
4
- patch '/theme', to: 'themes#update'
5
+ patch '/settings', to: 'settings#update'
5
6
  end
@@ -1,3 +1,3 @@
1
1
  module RushJob
2
- VERSION = '0.5.1'.freeze
2
+ VERSION = '0.6.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rush_job
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - JavaKoala
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-09 00:00:00.000000000 Z
11
+ date: 2023-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview
@@ -304,13 +304,16 @@ files:
304
304
  - app/controllers/rush_job/application_controller.rb
305
305
  - app/controllers/rush_job/dashboard_controller.rb
306
306
  - app/controllers/rush_job/rush_jobs_controller.rb
307
- - app/controllers/rush_job/themes_controller.rb
307
+ - app/controllers/rush_job/settings_controller.rb
308
308
  - app/helpers/rush_job/application_helper.rb
309
309
  - app/helpers/rush_job/dashboard_helper.rb
310
310
  - app/helpers/rush_job/rush_jobs_helper.rb
311
+ - app/helpers/rush_job/settings_helper.rb
311
312
  - app/helpers/rush_job/sort_helper.rb
312
313
  - app/models/rush_job/application_record.rb
313
314
  - app/models/rush_job/rush_job.rb
315
+ - app/services/rush_job/settings.rb
316
+ - app/views/layouts/rush_job/_flash_messages.html.erb
314
317
  - app/views/layouts/rush_job/_navbar.html.erb
315
318
  - app/views/layouts/rush_job/application.html.erb
316
319
  - app/views/rush_job/dashboard/_dashboard_tables.html.erb
@@ -351,7 +354,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
351
354
  - !ruby/object:Gem::Version
352
355
  version: '0'
353
356
  requirements: []
354
- rubygems_version: 3.4.10
357
+ rubygems_version: 3.4.20
355
358
  signing_key:
356
359
  specification_version: 4
357
360
  summary: User interface for delayed_job
@@ -1,13 +0,0 @@
1
- module RushJob
2
- class ThemesController < ApplicationController
3
- def update
4
- cookies.permanent[:rush_job_theme] = if cookies[:rush_job_theme] == 'dark'
5
- 'light'
6
- else
7
- 'dark'
8
- end
9
-
10
- redirect_to root_path
11
- end
12
- end
13
- end