rush_job 0.6.0 → 1.0.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: 82209f37f6a845c77cb6933c9c559a949df485c3142b8585c20955fa23eb9519
4
- data.tar.gz: b4fda350f51463d8e05e0d7bc1db426420234b1f5d458406b59d36104d00d746
3
+ metadata.gz: 1978822b98733bacfe9f2223674bc12a85caf28660ec3b520b3472671d294700
4
+ data.tar.gz: 1ce5abf613c6506a2b242b5db8d7c2a7047f4e36a3da7b51f97b1edf35e5cb6c
5
5
  SHA512:
6
- metadata.gz: d8a7d54426d59d39f397fd064685e7c7ab8586c2f717f023001e7f7db232fe66533363d9c5a9834b25d8f89903eb299b8973637e52615025d0655530f4b3df9c
7
- data.tar.gz: 04a8b173f671ae3ff2b39ab10466b3f38584d6ae7c9ee2556281c024e3c3b613e611063eb8df878983a7247e76cd8d1d16ef4ce1decf07991708d8c38427c161
6
+ metadata.gz: 453687375125c2fe9982f82500dfc4dc8fe8531787ef962bc25619e894a39a6c7cfbf0e77e21b1676dafbc16ffe9a70f55f9f471d2511c681763abf2b827c6ba
7
+ data.tar.gz: 80066d6e7bd60b5d7402f472674bfe38005c121398f0c431f326f335562eb893b71e309f4fb09090c8c00ed17bbf8306e53a0d8b41bdae7a6d51034f26aec620
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.6.0'
20
+ gem 'rush_job', '~> 1.0.0'
21
21
  ```
22
22
 
23
23
  And then execute:
@@ -40,5 +40,8 @@ Open an issue or
40
40
  3. `bundle exec brakeman`
41
41
  4. Open pull request
42
42
 
43
+ ## Turbo
44
+ This gem uses turbo-rails, https://github.com/hotwired/turbo-rails. For Rails UJS fork from v0.6.1
45
+
43
46
  ## License
44
47
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -1,12 +1,11 @@
1
- import 'bootstrap'
2
- import Rails from '@rails/ujs'
3
- Rails.start();
1
+ import { Application } from '@hotwired/stimulus';
2
+ import RushJobConfirmController from './controllers/rush_job_confirm_controller';
3
+ import RushJobPollingController from './controllers/rush_job_polling_controller';
4
+ import RushJobReloadJobsTableController from './controllers/rush_job_reload_jobs_table_controller';
5
+ import 'bootstrap';
6
+ import '@hotwired/turbo-rails';
4
7
 
5
- import { Application } from '@hotwired/stimulus'
6
-
7
- import RushJobPollingController from './controllers/rush_job_polling_controller'
8
- import RushJobReloadJobsTableController from './controllers/rush_job_reload_jobs_table_controller'
9
-
10
- window.Stimulus = Application.start()
11
- Stimulus.register('rush-job-polling', RushJobPollingController)
12
- Stimulus.register('rush-job-reload-jobs-table', RushJobReloadJobsTableController)
8
+ window.Stimulus = Application.start();
9
+ Stimulus.register('rush-job-confirm', RushJobConfirmController);
10
+ Stimulus.register('rush-job-polling', RushJobPollingController);
11
+ Stimulus.register('rush-job-reload-jobs-table', RushJobReloadJobsTableController);
@@ -0,0 +1,11 @@
1
+ import { Controller } from '@hotwired/stimulus';
2
+
3
+ export default class RushJobConfirmController extends Controller {
4
+ displayConfirm(e) {
5
+ const confirmMessage = e.target.dataset.confirmMessage;
6
+
7
+ if (confirm(confirmMessage) !== true) {
8
+ e.preventDefault();
9
+ }
10
+ }
11
+ }
@@ -1,49 +1,50 @@
1
- import { RushJobTableUpdateController } from './rush_job_table_update_controller.js'
1
+ import { RushJobTableUpdateController } from './rush_job_table_update_controller';
2
2
 
3
- let intervalID
3
+ let intervalID;
4
4
 
5
5
  export default class extends RushJobTableUpdateController {
6
- static targets = [ 'pollingTime', 'pollingTimeLabel', 'pollingSlide' ]
6
+ static targets = ['pollingTime', 'pollingTimeLabel', 'pollingSlide'];
7
7
 
8
8
  connect() {
9
- this.pollingChange()
10
- this.stopPolling()
9
+ this.pollingChange();
10
+ this.stopPolling();
11
11
  }
12
12
 
13
13
  pollingChange() {
14
14
  const pollingLabelRegex = /\d+/;
15
- let pollingLabelUpdate = this.pollingTimeLabelTarget.innerHTML.replace(pollingLabelRegex, this.pollingTime())
16
- this.pollingTimeLabelTarget.innerHTML = pollingLabelUpdate
15
+ const pollingTimeTargetHtml = this.pollingTimeLabelTarget.innerHTML;
16
+ const pollingLabelUpdate = pollingTimeTargetHtml.replace(pollingLabelRegex, this.pollingTime());
17
+ this.pollingTimeLabelTarget.innerHTML = pollingLabelUpdate;
17
18
  }
18
19
 
19
20
  pollingToggle() {
20
- let pollingSlide = this.pollingSlideTarget
21
+ const pollingSlide = this.pollingSlideTarget;
21
22
 
22
23
  if (pollingSlide.checked === true) {
23
- this.startPolling()
24
+ this.startPolling();
24
25
  } else {
25
- this.stopPolling()
26
+ this.stopPolling();
26
27
  }
27
28
  }
28
29
 
29
30
  startPolling() {
30
- this.updateJobs()
31
+ this.updateJobs();
31
32
 
32
33
  intervalID = setTimeout(() => {
33
- this.startPolling()
34
- }, this.pollingTime() * 1000)
34
+ this.startPolling();
35
+ }, this.pollingTime() * 1000);
35
36
  }
36
37
 
37
38
  stopPolling() {
38
39
  if (intervalID) {
39
- clearInterval(intervalID)
40
+ clearInterval(intervalID);
40
41
  }
41
42
  }
42
43
 
43
44
  pollingTime() {
44
- const pollingTimes = [3, 5, 8, 13, 21, 34, 55]
45
- let pollingTime = this.pollingTimeTarget.value || 3
45
+ const pollingTimes = [3, 5, 8, 13, 21, 34, 55];
46
+ const pollingTime = this.pollingTimeTarget.value || 3;
46
47
 
47
- return pollingTimes[pollingTime]
48
+ return pollingTimes[pollingTime];
48
49
  }
49
50
  }
@@ -1,7 +1,7 @@
1
- import { RushJobTableUpdateController } from './rush_job_table_update_controller.js'
1
+ import { RushJobTableUpdateController } from './rush_job_table_update_controller';
2
2
 
3
3
  export default class extends RushJobTableUpdateController {
4
4
  reloadJobs() {
5
- this.updateJobs()
5
+ this.updateJobs();
6
6
  }
7
7
  }
@@ -1,19 +1,23 @@
1
- import { Controller } from '@hotwired/stimulus'
2
- import Rails from '@rails/ujs'
1
+ import { Controller } from '@hotwired/stimulus';
3
2
 
4
3
  export class RushJobTableUpdateController extends Controller {
5
4
  updateJobs() {
6
- this.blurTable()
5
+ const headers = { 'Accept': 'text/vnd.turbo-stream.html' };
7
6
 
8
- Rails.ajax({
9
- url: document.location.href,
10
- type: 'GET',
11
- dataType: 'script'
12
- })
7
+ this.blurTable();
8
+ this.clearFlash();
9
+
10
+ fetch(document.location.href, { headers: headers })
11
+ .then(response => response.text())
12
+ .then(html => Turbo.renderStreamMessage(html));
13
13
  }
14
14
 
15
15
  blurTable() {
16
- let jobs_container = document.getElementById('rush-job-jobs-container')
17
- jobs_container.classList.add('table-refresh')
16
+ const jobsContainer = document.getElementById('rush-job-jobs-container');
17
+ jobsContainer.classList.add('table-refresh');
18
+ }
19
+
20
+ clearFlash() {
21
+ document.getElementById('rush-job-flash-messages').innerHTML = '';
18
22
  }
19
23
  }
@@ -5,14 +5,14 @@ module RushJob
5
5
  rescue_from Pagy::OverflowError, with: :redirect_to_first_page
6
6
 
7
7
  def index
8
- @pagy_locked_jobs, @locked_jobs = pagy(RushJob.locked_jobs,
9
- items: 10,
10
- page_param: :locked_jobs_page)
11
-
8
+ @pagy_locked_jobs, @locked_jobs = pagy(RushJob.locked_jobs, items: 10, page_param: :locked_jobs_page)
12
9
  @queue_groups = RushJob.queue_groups
13
- @pagy_queue, @job_queues = pagy_array(@queue_groups.keys,
14
- items: 10,
15
- page_param: :queue_page)
10
+ @pagy_queue, @job_queues = pagy_array(@queue_groups.keys, items: 10, page_param: :queue_page)
11
+
12
+ respond_to do |format|
13
+ format.html
14
+ format.turbo_stream
15
+ end
16
16
  end
17
17
 
18
18
  def destroy
@@ -7,6 +7,11 @@ 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.turbo_stream
14
+ end
10
15
  end
11
16
 
12
17
  private
@@ -6,7 +6,10 @@ module RushJob
6
6
 
7
7
  def sortable(column)
8
8
  direction = column == sort_column && sort_direction == 'asc' ? 'desc' : 'asc'
9
- link_to t(column), rush_job.rush_jobs_path({ sort: column, direction: }), class: "link-#{invert_theme}"
9
+ link_to t(column),
10
+ rush_job.rush_jobs_path({ sort: column, direction: direction }),
11
+ class: "link-#{invert_theme}",
12
+ target: '_top'
10
13
  end
11
14
 
12
15
  def sort_arrow(column)
@@ -4,7 +4,7 @@ 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:)) }
7
+ scope :queue_group, ->(queue, priority) { where(queue: queue).and(where(priority: priority)) }
8
8
 
9
9
  def self.clear_queue(queue, priority)
10
10
  queue_group(queue, priority).delete_all
@@ -32,13 +32,23 @@
32
32
  </a>
33
33
  <div class="dropdown-menu"
34
34
  data-bs-popper="static">
35
- <%= button_to t("#{invert_theme}_mode"), settings_path, class: "nav-link", method: :patch, params: { setting: 'theme' } %>
35
+ <%= button_to t("#{invert_theme}_mode"),
36
+ settings_path,
37
+ class: "nav-link",
38
+ method: :patch,
39
+ params: { setting: 'theme' },
40
+ data: { turbo: false } %>
36
41
  <%= button_to t("#{editing_enabled? ? 'disable_editing' : 'enable_editing'}"),
37
42
  settings_path,
38
43
  class: "nav-link",
39
44
  method: :patch,
40
45
  params: { setting: 'editing' },
41
- data: { confirm: t("#{editing_enabled? ? 'disable_editing_confirmation' : 'enable_editing_confirmation'}") } %>
46
+ data: {
47
+ turbo: false,
48
+ controller: 'rush-job-confirm',
49
+ action: 'click->rush-job-confirm#displayConfirm',
50
+ confirm_message: t("#{editing_enabled? ? 'disable_editing_confirmation' : 'enable_editing_confirmation'}")
51
+ } %>
42
52
  </div>
43
53
  </li>
44
54
  </ul>
@@ -1,86 +1,93 @@
1
- <div id="rush-job-jobs-container"
2
- class="jobs-container"
3
- role="main">
4
- <div class="d-flex justify-content-left">
5
- <h2 class="color-<%= invert_theme %>"><%= t :locked_jobs %></h2>
6
- </div>
7
- <div id="rush-job-dashboard-locked-jobs" class="mb-2 d-flex justify-content-left">
8
- <div class="table-responsive">
9
- <table class="table
10
- table-bordered
11
- table-striped
12
- table-<%= current_theme %>">
13
- <thead>
14
- <tr>
15
- <th><%= t :id %></th>
16
- <th><%= t :locked_at %></th>
17
- <th><%= t :locked_by %></th>
18
- <th><%= t :job_class %></th>
19
- <th><%= t :arguments %></th>
20
- </tr>
21
- </thead>
22
- <tbody class="table-group-divider">
23
- <% @locked_jobs.each do |job| %>
1
+ <%= turbo_frame_tag 'rush_job_dashboard_frame' do %>
2
+ <div id="rush-job-jobs-container"
3
+ class="jobs-container"
4
+ role="main">
5
+ <div class="d-flex justify-content-left">
6
+ <h2 class="color-<%= invert_theme %>"><%= t :locked_jobs %></h2>
7
+ </div>
8
+ <div id="rush-job-dashboard-locked-jobs" class="mb-2 d-flex justify-content-left">
9
+ <div class="table-responsive">
10
+ <table class="table
11
+ table-bordered
12
+ table-striped
13
+ table-<%= current_theme %>">
14
+ <thead>
24
15
  <tr>
25
- <td><%= job.id %></td>
26
- <td><%= job.locked_at %></td>
27
- <td><%= job.locked_by %></td>
28
- <td><%= job.job_class %></td>
29
- <td><%= job.job_arguments %></td>
16
+ <th><%= t :id %></th>
17
+ <th><%= t :locked_at %></th>
18
+ <th><%= t :locked_by %></th>
19
+ <th><%= t :job_class %></th>
20
+ <th><%= t :arguments %></th>
30
21
  </tr>
31
- <% end %>
32
- </tbody>
33
- </table>
22
+ </thead>
23
+ <tbody class="table-group-divider">
24
+ <% @locked_jobs.each do |job| %>
25
+ <tr>
26
+ <td><%= job.id %></td>
27
+ <td><%= job.locked_at %></td>
28
+ <td><%= job.locked_by %></td>
29
+ <td><%= job.job_class %></td>
30
+ <td><%= job.job_arguments %></td>
31
+ </tr>
32
+ <% end %>
33
+ </tbody>
34
+ </table>
35
+ </div>
36
+ </div>
37
+ <div id="rush-job-locked-job-pagination"
38
+ class="d-flex justify-content-left"
39
+ data-bs-theme="<%= current_theme %>">
40
+ <%== pagy_bootstrap_nav(@pagy_locked_jobs) if @pagy_locked_jobs.pages > 1 %>
34
41
  </div>
35
- </div>
36
- <div id="rush-job-locked-job-pagination"
37
- class="d-flex justify-content-left"
38
- data-bs-theme="<%= current_theme %>">
39
- <%== pagy_bootstrap_nav(@pagy_locked_jobs) if @pagy_locked_jobs.pages > 1 %>
40
- </div>
41
42
 
42
- <div class="d-flex justify-content-left">
43
- <h2 class="color-<%= invert_theme %>"><%= t :queues %></h2>
44
- </div>
45
- <div id="rush-job-dashboard-queues" class="d-flex justify-content-left">
46
- <div class="table-responsive">
47
- <table class="table
48
- table-bordered
49
- table-striped
50
- table-<%= current_theme %>">
51
- <thead>
52
- <tr>
53
- <th><%= t :name %></th>
54
- <th><%= t :priority %></th>
55
- <th><%= t :count %></th>
56
- <% if editing_enabled? %>
57
- <th><%= t :clear %></th>
58
- <% end %>
59
- </tr>
60
- </thead>
61
- <tbody class="table-group-divider">
62
- <% @job_queues.each do |queue| %>
43
+ <div class="d-flex justify-content-left">
44
+ <h2 class="color-<%= invert_theme %>"><%= t :queues %></h2>
45
+ </div>
46
+ <div id="rush-job-dashboard-queues" class="d-flex justify-content-left">
47
+ <div class="table-responsive">
48
+ <table class="table
49
+ table-bordered
50
+ table-striped
51
+ table-<%= current_theme %>">
52
+ <thead>
63
53
  <tr>
64
- <td><%= queue[0] %></td>
65
- <td><%= queue[1] %></td>
66
- <td><%= @queue_groups[queue] %></td>
54
+ <th><%= t :name %></th>
55
+ <th><%= t :priority %></th>
56
+ <th><%= t :count %></th>
67
57
  <% 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>
58
+ <th><%= t :clear %></th>
74
59
  <% end %>
75
60
  </tr>
76
- <% end %>
77
- </tbody>
78
- </table>
61
+ </thead>
62
+ <tbody class="table-group-divider">
63
+ <% @job_queues.each do |queue| %>
64
+ <tr>
65
+ <td><%= queue[0] %></td>
66
+ <td><%= queue[1] %></td>
67
+ <td><%= @queue_groups[queue] %></td>
68
+ <% if editing_enabled? %>
69
+ <td><%= button_to t(:clear),
70
+ dashboard_path,
71
+ class: "btn btn-danger btn-sm",
72
+ method: :delete,
73
+ params: { queue: queue[0], priority: queue[1] },
74
+ data: {
75
+ turbo: false,
76
+ controller: 'rush-job-confirm',
77
+ action: 'click->rush-job-confirm#displayConfirm',
78
+ confirm_message: t(:clear_queue_confirmation, queue: queue[0])
79
+ } %></td>
80
+ <% end %>
81
+ </tr>
82
+ <% end %>
83
+ </tbody>
84
+ </table>
85
+ </div>
86
+ </div>
87
+ <div id="rush-job-locked-queue-pagination"
88
+ class="d-flex justify-content-left"
89
+ data-bs-theme="<%= current_theme %>">
90
+ <%== pagy_bootstrap_nav(@pagy_queue) if @pagy_queue.pages > 1 %>
79
91
  </div>
80
92
  </div>
81
- <div id="rush-job-locked-queue-pagination"
82
- class="d-flex justify-content-left"
83
- data-bs-theme="<%= current_theme %>">
84
- <%== pagy_bootstrap_nav(@pagy_queue) if @pagy_queue.pages > 1 %>
85
- </div>
86
- </div>
93
+ <% end %>
@@ -0,0 +1,9 @@
1
+ <%= turbo_stream.replace 'rush_job_dashboard_frame',
2
+ partial: 'dashboard_tables',
3
+ locals: {
4
+ pagy_locked_jobs: @pagy_locked_jobs,
5
+ locked_jobs: @locked_jobs,
6
+ queue_groups: @queue_groups,
7
+ pagy_queue: @pagy_queue,
8
+ job_queues: @job_queues
9
+ } %>
@@ -1,47 +1,49 @@
1
- <div id="rush-job-jobs-container"
2
- class="jobs-container"
3
- role="main">
4
- <div class="table-responsive">
5
- <table class="table
6
- table-bordered
7
- table-striped
8
- table-<%= current_theme %>">
9
- <thead>
10
- <tr>
11
- <th><%= sortable 'id' %><%= sort_arrow 'id' %></th>
12
- <th><%= sortable 'priority' %><%= sort_arrow 'priority' %></th>
13
- <th><%= sortable 'attempts' %><%= sort_arrow 'attempts' %></th>
14
- <th><%= t :job_class %></th>
15
- <th><%= t :arguments %></th>
16
- <th><%= sortable 'last_error' %><%= sort_arrow 'last_error' %></th>
17
- <th><%= sortable 'run_at' %><%= sort_arrow 'run_at' %></th>
18
- <th><%= sortable 'locked_at' %><%= sort_arrow 'locked_at' %></th>
19
- <th><%= sortable 'failed_at' %><%= sort_arrow 'failed_at' %></th>
20
- <th><%= sortable 'locked_by' %><%= sort_arrow'locked_by' %></th>
21
- <th><%= sortable 'queue' %><%= sort_arrow 'queue' %></th>
22
- </tr>
23
- </thead>
24
- <tbody class="table-group-divider">
25
- <% @rush_jobs.each do |job| %>
1
+ <%= turbo_frame_tag 'rush_job_jobs_frame' do %>
2
+ <div id="rush-job-jobs-container"
3
+ class="jobs-container"
4
+ role="main">
5
+ <div class="table-responsive">
6
+ <table class="table
7
+ table-bordered
8
+ table-striped
9
+ table-<%= current_theme %>">
10
+ <thead>
26
11
  <tr>
27
- <td><%= job.id %></td>
28
- <td><%= job.priority %></td>
29
- <td><%= job.attempts %></td>
30
- <td><%= job.job_class %></td>
31
- <td><%= job.job_arguments %></td>
32
- <td><%= job.last_error %></td>
33
- <td><%= job.run_at %></td>
34
- <td><%= job.locked_at %></td>
35
- <td><%= job.failed_at %></td>
36
- <td><%= job.locked_by %></td>
37
- <td><%= job.queue %></td>
12
+ <th><%= sortable 'id' %><%= sort_arrow 'id' %></th>
13
+ <th><%= sortable 'priority' %><%= sort_arrow 'priority' %></th>
14
+ <th><%= sortable 'attempts' %><%= sort_arrow 'attempts' %></th>
15
+ <th><%= t :job_class %></th>
16
+ <th><%= t :arguments %></th>
17
+ <th><%= sortable 'last_error' %><%= sort_arrow 'last_error' %></th>
18
+ <th><%= sortable 'run_at' %><%= sort_arrow 'run_at' %></th>
19
+ <th><%= sortable 'locked_at' %><%= sort_arrow 'locked_at' %></th>
20
+ <th><%= sortable 'failed_at' %><%= sort_arrow 'failed_at' %></th>
21
+ <th><%= sortable 'locked_by' %><%= sort_arrow'locked_by' %></th>
22
+ <th><%= sortable 'queue' %><%= sort_arrow 'queue' %></th>
38
23
  </tr>
39
- <% end %>
40
- </tbody>
41
- </table>
24
+ </thead>
25
+ <tbody class="table-group-divider">
26
+ <% @rush_jobs.each do |job| %>
27
+ <tr>
28
+ <td><%= job.id %></td>
29
+ <td><%= job.priority %></td>
30
+ <td><%= job.attempts %></td>
31
+ <td><%= job.job_class %></td>
32
+ <td><%= job.job_arguments %></td>
33
+ <td><%= job.last_error %></td>
34
+ <td><%= job.run_at %></td>
35
+ <td><%= job.locked_at %></td>
36
+ <td><%= job.failed_at %></td>
37
+ <td><%= job.locked_by %></td>
38
+ <td><%= job.queue %></td>
39
+ </tr>
40
+ <% end %>
41
+ </tbody>
42
+ </table>
43
+ </div>
42
44
  </div>
43
- </div>
44
45
 
45
- <div class="footer-container" data-bs-theme="<%= current_theme %>">
46
- <%== pagy_bootstrap_nav(@pagy) if @pagy.pages > 1 %>
47
- </div>
46
+ <div class="footer-container" data-bs-theme="<%= current_theme %>">
47
+ <%== pagy_bootstrap_nav(@pagy) if @pagy.pages > 1 %>
48
+ </div>
49
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <%= turbo_stream.replace 'rush_job_jobs_frame',
2
+ partial: 'jobs_table',
3
+ locals: {
4
+ pagy: @pagy,
5
+ rush_jobs: @rush_jobs
6
+ } %>
data/config/importmap.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  pin 'rush_job/application', preload: true
2
2
  pin 'bootstrap', to: 'https://ga.jspm.io/npm:bootstrap@5.3.1/dist/js/bootstrap.esm.js'
3
3
  pin '@popperjs/core', to: 'https://ga.jspm.io/npm:@popperjs/core@2.11.8/lib/index.js'
4
- pin '@rails/ujs', to: 'https://ga.jspm.io/npm:@rails/ujs@7.0.6/lib/assets/compiled/rails-ujs.js'
5
4
  pin '@hotwired/stimulus', to: 'https://ga.jspm.io/npm:@hotwired/stimulus@3.2.2/dist/stimulus.js'
5
+ pin '@hotwired/turbo-rails', to: 'turbo.min.js', preload: true
@@ -1,3 +1,3 @@
1
1
  module RushJob
2
- VERSION = '0.6.0'.freeze
2
+ VERSION = '1.0.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.6.0
4
+ version: 1.0.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-10-01 00:00:00.000000000 Z
11
+ date: 2024-07-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview
@@ -58,28 +58,28 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.2'
61
+ version: '2.0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.2'
68
+ version: '2.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: pagy
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '6.0'
75
+ version: '8.6'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '6.0'
82
+ version: '8.6'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: sassc-rails
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '2.1'
97
+ - !ruby/object:Gem::Dependency
98
+ name: turbo-rails
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '2.0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '2.0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: delayed_job
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -128,112 +142,112 @@ dependencies:
128
142
  requirements:
129
143
  - - "~>"
130
144
  - !ruby/object:Gem::Version
131
- version: '6.0'
145
+ version: '6.1'
132
146
  type: :development
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
150
  - - "~>"
137
151
  - !ruby/object:Gem::Version
138
- version: '6.0'
152
+ version: '6.1'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: capybara
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
157
  - - "~>"
144
158
  - !ruby/object:Gem::Version
145
- version: '3.39'
159
+ version: '3.40'
146
160
  type: :development
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
164
  - - "~>"
151
165
  - !ruby/object:Gem::Version
152
- version: '3.39'
166
+ version: '3.40'
153
167
  - !ruby/object:Gem::Dependency
154
168
  name: debug
155
169
  requirement: !ruby/object:Gem::Requirement
156
170
  requirements:
157
171
  - - "~>"
158
172
  - !ruby/object:Gem::Version
159
- version: '1.8'
173
+ version: '1.9'
160
174
  type: :development
161
175
  prerelease: false
162
176
  version_requirements: !ruby/object:Gem::Requirement
163
177
  requirements:
164
178
  - - "~>"
165
179
  - !ruby/object:Gem::Version
166
- version: '1.8'
180
+ version: '1.9'
167
181
  - !ruby/object:Gem::Dependency
168
182
  name: puma
169
183
  requirement: !ruby/object:Gem::Requirement
170
184
  requirements:
171
185
  - - "~>"
172
186
  - !ruby/object:Gem::Version
173
- version: '6.3'
187
+ version: '6.4'
174
188
  type: :development
175
189
  prerelease: false
176
190
  version_requirements: !ruby/object:Gem::Requirement
177
191
  requirements:
178
192
  - - "~>"
179
193
  - !ruby/object:Gem::Version
180
- version: '6.3'
194
+ version: '6.4'
181
195
  - !ruby/object:Gem::Dependency
182
196
  name: rubocop-capybara
183
197
  requirement: !ruby/object:Gem::Requirement
184
198
  requirements:
185
199
  - - "~>"
186
200
  - !ruby/object:Gem::Version
187
- version: '2.18'
201
+ version: '2.21'
188
202
  type: :development
189
203
  prerelease: false
190
204
  version_requirements: !ruby/object:Gem::Requirement
191
205
  requirements:
192
206
  - - "~>"
193
207
  - !ruby/object:Gem::Version
194
- version: '2.18'
208
+ version: '2.21'
195
209
  - !ruby/object:Gem::Dependency
196
210
  name: rubocop-minitest
197
211
  requirement: !ruby/object:Gem::Requirement
198
212
  requirements:
199
213
  - - "~>"
200
214
  - !ruby/object:Gem::Version
201
- version: 0.31.0
215
+ version: 0.35.0
202
216
  type: :development
203
217
  prerelease: false
204
218
  version_requirements: !ruby/object:Gem::Requirement
205
219
  requirements:
206
220
  - - "~>"
207
221
  - !ruby/object:Gem::Version
208
- version: 0.31.0
222
+ version: 0.35.0
209
223
  - !ruby/object:Gem::Dependency
210
224
  name: rubocop-rails
211
225
  requirement: !ruby/object:Gem::Requirement
212
226
  requirements:
213
227
  - - "~>"
214
228
  - !ruby/object:Gem::Version
215
- version: '2.21'
229
+ version: '2.25'
216
230
  type: :development
217
231
  prerelease: false
218
232
  version_requirements: !ruby/object:Gem::Requirement
219
233
  requirements:
220
234
  - - "~>"
221
235
  - !ruby/object:Gem::Version
222
- version: '2.21'
236
+ version: '2.25'
223
237
  - !ruby/object:Gem::Dependency
224
238
  name: selenium-webdriver
225
239
  requirement: !ruby/object:Gem::Requirement
226
240
  requirements:
227
241
  - - "~>"
228
242
  - !ruby/object:Gem::Version
229
- version: '4.12'
243
+ version: '4.22'
230
244
  type: :development
231
245
  prerelease: false
232
246
  version_requirements: !ruby/object:Gem::Requirement
233
247
  requirements:
234
248
  - - "~>"
235
249
  - !ruby/object:Gem::Version
236
- version: '4.12'
250
+ version: '4.22'
237
251
  - !ruby/object:Gem::Dependency
238
252
  name: simplecov
239
253
  requirement: !ruby/object:Gem::Requirement
@@ -254,28 +268,28 @@ dependencies:
254
268
  requirements:
255
269
  - - "~>"
256
270
  - !ruby/object:Gem::Version
257
- version: '3.4'
271
+ version: '3.5'
258
272
  type: :development
259
273
  prerelease: false
260
274
  version_requirements: !ruby/object:Gem::Requirement
261
275
  requirements:
262
276
  - - "~>"
263
277
  - !ruby/object:Gem::Version
264
- version: '3.4'
278
+ version: '3.5'
265
279
  - !ruby/object:Gem::Dependency
266
280
  name: sqlite3
267
281
  requirement: !ruby/object:Gem::Requirement
268
282
  requirements:
269
283
  - - "~>"
270
284
  - !ruby/object:Gem::Version
271
- version: '1.6'
285
+ version: '1.4'
272
286
  type: :development
273
287
  prerelease: false
274
288
  version_requirements: !ruby/object:Gem::Requirement
275
289
  requirements:
276
290
  - - "~>"
277
291
  - !ruby/object:Gem::Version
278
- version: '1.6'
292
+ version: '1.4'
279
293
  description: Rails web interface for delayed_job using Rails::Engine.
280
294
  email:
281
295
  - javakoala1@gmail.com
@@ -292,6 +306,7 @@ files:
292
306
  - app/assets/images/rush_job/arrow-up-dark.svg
293
307
  - app/assets/images/rush_job/arrow-up-light.svg
294
308
  - app/assets/javascript/rush_job/application.js
309
+ - app/assets/javascript/rush_job/controllers/rush_job_confirm_controller.js
295
310
  - app/assets/javascript/rush_job/controllers/rush_job_polling_controller.js
296
311
  - app/assets/javascript/rush_job/controllers/rush_job_reload_jobs_table_controller.js
297
312
  - app/assets/javascript/rush_job/controllers/rush_job_table_update_controller.js
@@ -318,10 +333,10 @@ files:
318
333
  - app/views/layouts/rush_job/application.html.erb
319
334
  - app/views/rush_job/dashboard/_dashboard_tables.html.erb
320
335
  - app/views/rush_job/dashboard/index.html.erb
321
- - app/views/rush_job/dashboard/index.js.erb
336
+ - app/views/rush_job/dashboard/index.turbo_stream.erb
322
337
  - app/views/rush_job/rush_jobs/_jobs_table.html.erb
323
338
  - app/views/rush_job/rush_jobs/index.html.erb
324
- - app/views/rush_job/rush_jobs/index.js.erb
339
+ - app/views/rush_job/rush_jobs/index.turbo_stream.erb
325
340
  - app/views/rush_job/shared/_polling.html.erb
326
341
  - config/importmap.rb
327
342
  - config/locales/en.yml
@@ -347,14 +362,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
347
362
  requirements:
348
363
  - - ">="
349
364
  - !ruby/object:Gem::Version
350
- version: 3.2.0
365
+ version: '3.0'
351
366
  required_rubygems_version: !ruby/object:Gem::Requirement
352
367
  requirements:
353
368
  - - ">="
354
369
  - !ruby/object:Gem::Version
355
370
  version: '0'
356
371
  requirements: []
357
- rubygems_version: 3.4.20
372
+ rubygems_version: 3.5.3
358
373
  signing_key:
359
374
  specification_version: 4
360
375
  summary: User interface for delayed_job
@@ -1,2 +0,0 @@
1
- document.getElementById('rush-job-flash-messages').innerHTML = "<%= j (render partial: 'layouts/rush_job/flash_messages') %>"
2
- document.getElementById('rush-job-jobs').innerHTML = "<%= j (render partial: 'dashboard_tables') %>"
@@ -1 +0,0 @@
1
- document.getElementById('rush-job-jobs').innerHTML = "<%= j (render partial: 'jobs_table') %>"