solid_queue_monitor 0.1.2 → 0.3.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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +25 -11
  3. data/Rakefile +8 -8
  4. data/app/controllers/solid_queue_monitor/application_controller.rb +25 -0
  5. data/app/controllers/solid_queue_monitor/base_controller.rb +197 -0
  6. data/app/controllers/solid_queue_monitor/failed_jobs_controller.rb +63 -0
  7. data/app/controllers/solid_queue_monitor/in_progress_jobs_controller.rb +33 -0
  8. data/app/controllers/solid_queue_monitor/overview_controller.rb +26 -0
  9. data/app/controllers/solid_queue_monitor/queues_controller.rb +13 -0
  10. data/app/controllers/solid_queue_monitor/ready_jobs_controller.rb +15 -0
  11. data/app/controllers/solid_queue_monitor/recurring_jobs_controller.rb +15 -0
  12. data/app/controllers/solid_queue_monitor/scheduled_jobs_controller.rb +25 -0
  13. data/app/presenters/solid_queue_monitor/base_presenter.rb +44 -39
  14. data/app/presenters/solid_queue_monitor/failed_jobs_presenter.rb +51 -45
  15. data/app/presenters/solid_queue_monitor/in_progress_jobs_presenter.rb +82 -0
  16. data/app/presenters/solid_queue_monitor/jobs_presenter.rb +46 -3
  17. data/app/presenters/solid_queue_monitor/queues_presenter.rb +5 -5
  18. data/app/presenters/solid_queue_monitor/ready_jobs_presenter.rb +10 -2
  19. data/app/presenters/solid_queue_monitor/recurring_jobs_presenter.rb +5 -2
  20. data/app/presenters/solid_queue_monitor/scheduled_jobs_presenter.rb +15 -9
  21. data/app/presenters/solid_queue_monitor/stats_presenter.rb +5 -3
  22. data/app/services/solid_queue_monitor/authentication_service.rb +7 -5
  23. data/app/services/solid_queue_monitor/execute_job_service.rb +3 -1
  24. data/app/services/solid_queue_monitor/failed_job_service.rb +38 -42
  25. data/app/services/solid_queue_monitor/html_generator.rb +7 -3
  26. data/app/services/solid_queue_monitor/pagination_service.rb +3 -1
  27. data/app/services/solid_queue_monitor/stats_calculator.rb +4 -1
  28. data/app/services/solid_queue_monitor/status_calculator.rb +4 -1
  29. data/app/services/solid_queue_monitor/stylesheet_generator.rb +23 -21
  30. data/config/initializers/solid_queue_monitor.rb +3 -1
  31. data/config/routes.rb +18 -16
  32. data/lib/generators/solid_queue_monitor/install_generator.rb +7 -5
  33. data/lib/generators/solid_queue_monitor/templates/initializer.rb +3 -1
  34. data/lib/solid_queue_monitor/engine.rb +5 -3
  35. data/lib/solid_queue_monitor/version.rb +1 -1
  36. data/lib/solid_queue_monitor.rb +9 -13
  37. data/lib/tasks/app.rake +42 -40
  38. metadata +18 -148
  39. data/app/controllers/solid_queue_monitor/monitor_controller.rb +0 -318
@@ -1,22 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "solid_queue_monitor/version"
4
- require_relative "solid_queue_monitor/engine"
3
+ require_relative 'solid_queue_monitor/version'
4
+ require_relative 'solid_queue_monitor/engine'
5
5
 
6
6
  module SolidQueueMonitor
7
7
  class Error < StandardError; end
8
- # Configuration options
9
- mattr_accessor :username
10
- @@username = 'admin'
11
-
12
- mattr_accessor :password
13
- @@password = 'password'
14
-
15
- mattr_accessor :jobs_per_page
16
- @@jobs_per_page = 25
8
+ class << self
9
+ attr_accessor :username, :password, :jobs_per_page, :authentication_enabled
10
+ end
17
11
 
18
- mattr_accessor :authentication_enabled
19
- @@authentication_enabled = false
12
+ @username = 'admin'
13
+ @password = 'password'
14
+ @jobs_per_page = 25
15
+ @authentication_enabled = false
20
16
 
21
17
  def self.setup
22
18
  yield self
data/lib/tasks/app.rake CHANGED
@@ -1,11 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  namespace :app do
2
- desc "Setup the dummy app for testing"
3
- task :setup do
4
+ desc 'Setup the dummy app for testing'
5
+ task setup: :environment do
4
6
  require 'fileutils'
5
-
7
+
6
8
  # Create dummy app directories
7
- dummy_app_path = File.expand_path("../../spec/dummy", __FILE__)
8
-
9
+ dummy_app_path = File.expand_path('../spec/dummy', __dir__)
10
+
9
11
  # Ensure directories exist
10
12
  %w[
11
13
  app/controllers
@@ -19,19 +21,19 @@ namespace :app do
19
21
  ].each do |dir|
20
22
  FileUtils.mkdir_p(File.join(dummy_app_path, dir))
21
23
  end
22
-
24
+
23
25
  # Create necessary files if they don't exist
24
- unless File.exist?(File.join(dummy_app_path, "config/boot.rb"))
25
- File.write(File.join(dummy_app_path, "config/boot.rb"), <<~RUBY)
26
+ unless File.exist?(File.join(dummy_app_path, 'config/boot.rb'))
27
+ File.write(File.join(dummy_app_path, 'config/boot.rb'), <<~RUBY)
26
28
  ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../Gemfile', __dir__)
27
29
  require 'bundler/setup'
28
30
  RUBY
29
31
  end
30
-
31
- unless File.exist?(File.join(dummy_app_path, "config/application.rb"))
32
- File.write(File.join(dummy_app_path, "config/application.rb"), <<~RUBY)
32
+
33
+ unless File.exist?(File.join(dummy_app_path, 'config/application.rb'))
34
+ File.write(File.join(dummy_app_path, 'config/application.rb'), <<~RUBY)
33
35
  require_relative "boot"
34
-
36
+
35
37
  require "rails"
36
38
  require "active_model/railtie"
37
39
  require "active_record/railtie"
@@ -40,80 +42,80 @@ namespace :app do
40
42
  require "rails/test_unit/railtie"
41
43
  require "solid_queue"
42
44
  require "solid_queue_monitor"
43
-
45
+
44
46
  module Dummy
45
47
  class Application < Rails::Application
46
48
  config.load_defaults Rails::VERSION::STRING.to_f
47
-
49
+ #{' '}
48
50
  # Settings in config/environments/* take precedence over those specified here.
49
51
  # Application configuration can go into files in config/initializers
50
52
  # -- all .rb files in that directory are automatically loaded after loading
51
53
  # the framework and any gems in your application.
52
-
54
+ #{' '}
53
55
  # Only loads a smaller set of middleware suitable for API only apps.
54
56
  # Middleware like session, flash, cookies can be added back manually.
55
57
  config.api_only = true
56
-
58
+ #{' '}
57
59
  # Don't generate system test files.
58
60
  config.generators.system_tests = nil
59
61
  end
60
62
  end
61
63
  RUBY
62
64
  end
63
-
64
- unless File.exist?(File.join(dummy_app_path, "config/environment.rb"))
65
- File.write(File.join(dummy_app_path, "config/environment.rb"), <<~RUBY)
65
+
66
+ unless File.exist?(File.join(dummy_app_path, 'config/environment.rb'))
67
+ File.write(File.join(dummy_app_path, 'config/environment.rb'), <<~RUBY)
66
68
  # Load the Rails application.
67
69
  require_relative 'application'
68
-
70
+
69
71
  # Initialize the Rails application.
70
72
  Rails.application.initialize!
71
73
  RUBY
72
74
  end
73
-
74
- unless File.exist?(File.join(dummy_app_path, "config/environments/test.rb"))
75
- File.write(File.join(dummy_app_path, "config/environments/test.rb"), <<~RUBY)
75
+
76
+ unless File.exist?(File.join(dummy_app_path, 'config/environments/test.rb'))
77
+ File.write(File.join(dummy_app_path, 'config/environments/test.rb'), <<~RUBY)
76
78
  Rails.application.configure do
77
79
  # Settings specified here will take precedence over those in config/application.rb.
78
-
80
+
79
81
  # The test environment is used exclusively to run your application's
80
82
  # test suite. You never need to work with it otherwise. Remember that
81
83
  # your test database is "scratch space" for the test suite and is wiped
82
84
  # and recreated between test runs. Don't rely on the data there!
83
85
  config.cache_classes = true
84
-
86
+
85
87
  # Do not eager load code on boot. This avoids loading your whole application
86
88
  # just for the purpose of running a single test. If you are using a tool that
87
89
  # preloads Rails for running tests, you may have to set it to true.
88
90
  config.eager_load = false
89
-
91
+
90
92
  # Configure public file server for tests with Cache-Control for performance.
91
93
  config.public_file_server.enabled = true
92
94
  config.public_file_server.headers = {
93
95
  'Cache-Control' => "public, max-age=\#{1.hour.to_i}"
94
96
  }
95
-
97
+
96
98
  # Show full error reports and disable caching.
97
99
  config.consider_all_requests_local = true
98
100
  config.action_controller.perform_caching = false
99
-
101
+
100
102
  # Raise exceptions instead of rendering exception templates.
101
103
  config.action_dispatch.show_exceptions = false
102
-
104
+
103
105
  # Disable request forgery protection in test environment.
104
106
  config.action_controller.allow_forgery_protection = false
105
-
107
+
106
108
  # Print deprecation notices to the stderr.
107
109
  config.active_support.deprecation = :stderr
108
-
110
+
109
111
  # Raises error for missing translations.
110
112
  # config.action_view.raise_on_missing_translations = true
111
113
  end
112
114
  RUBY
113
115
  end
114
-
115
- unless File.exist?(File.join(dummy_app_path, "config/database.yml"))
116
- File.write(File.join(dummy_app_path, "config/database.yml"), <<~YAML)
116
+
117
+ unless File.exist?(File.join(dummy_app_path, 'config/database.yml'))
118
+ File.write(File.join(dummy_app_path, 'config/database.yml'), <<~YAML)
117
119
  test:
118
120
  adapter: sqlite3
119
121
  database: ":memory:"
@@ -121,15 +123,15 @@ namespace :app do
121
123
  timeout: 5000
122
124
  YAML
123
125
  end
124
-
125
- unless File.exist?(File.join(dummy_app_path, "config/routes.rb"))
126
- File.write(File.join(dummy_app_path, "config/routes.rb"), <<~RUBY)
126
+
127
+ unless File.exist?(File.join(dummy_app_path, 'config/routes.rb'))
128
+ File.write(File.join(dummy_app_path, 'config/routes.rb'), <<~RUBY)
127
129
  Rails.application.routes.draw do
128
130
  mount SolidQueueMonitor::Engine => "/solid_queue"
129
131
  end
130
132
  RUBY
131
133
  end
132
-
133
- puts "Dummy app setup complete!"
134
+
135
+ puts 'Dummy app setup complete!'
134
136
  end
135
- end
137
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solid_queue_monitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vishal Sadriya
8
- bindir: exe
8
+ bindir: bin
9
9
  cert_chain: []
10
- date: 2025-03-18 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: rails
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: '7.1'
18
+ version: '7.0'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: '7.1'
25
+ version: '7.0'
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: solid_queue
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -37,146 +37,6 @@ dependencies:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
39
  version: 0.1.0
40
- - !ruby/object:Gem::Dependency
41
- name: rspec-rails
42
- requirement: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: '6.0'
47
- type: :development
48
- prerelease: false
49
- version_requirements: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '6.0'
54
- - !ruby/object:Gem::Dependency
55
- name: capybara
56
- requirement: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: '3.39'
61
- type: :development
62
- prerelease: false
63
- version_requirements: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '3.39'
68
- - !ruby/object:Gem::Dependency
69
- name: sqlite3
70
- requirement: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: '1.6'
75
- type: :development
76
- prerelease: false
77
- version_requirements: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '1.6'
82
- - !ruby/object:Gem::Dependency
83
- name: puma
84
- requirement: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: '6.0'
89
- type: :development
90
- prerelease: false
91
- version_requirements: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '6.0'
96
- - !ruby/object:Gem::Dependency
97
- name: rubocop
98
- requirement: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '1.60'
103
- type: :development
104
- prerelease: false
105
- version_requirements: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: '1.60'
110
- - !ruby/object:Gem::Dependency
111
- name: rubocop-rails
112
- requirement: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: '2.23'
117
- type: :development
118
- prerelease: false
119
- version_requirements: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: '2.23'
124
- - !ruby/object:Gem::Dependency
125
- name: rubocop-rspec
126
- requirement: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - "~>"
129
- - !ruby/object:Gem::Version
130
- version: '2.26'
131
- type: :development
132
- prerelease: false
133
- version_requirements: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - "~>"
136
- - !ruby/object:Gem::Version
137
- version: '2.26'
138
- - !ruby/object:Gem::Dependency
139
- name: factory_bot_rails
140
- requirement: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - "~>"
143
- - !ruby/object:Gem::Version
144
- version: '6.2'
145
- type: :development
146
- prerelease: false
147
- version_requirements: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - "~>"
150
- - !ruby/object:Gem::Version
151
- version: '6.2'
152
- - !ruby/object:Gem::Dependency
153
- name: database_cleaner-active_record
154
- requirement: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - "~>"
157
- - !ruby/object:Gem::Version
158
- version: '2.1'
159
- type: :development
160
- prerelease: false
161
- version_requirements: !ruby/object:Gem::Requirement
162
- requirements:
163
- - - "~>"
164
- - !ruby/object:Gem::Version
165
- version: '2.1'
166
- - !ruby/object:Gem::Dependency
167
- name: pry
168
- requirement: !ruby/object:Gem::Requirement
169
- requirements:
170
- - - "~>"
171
- - !ruby/object:Gem::Version
172
- version: '0.14'
173
- type: :development
174
- prerelease: false
175
- version_requirements: !ruby/object:Gem::Requirement
176
- requirements:
177
- - - "~>"
178
- - !ruby/object:Gem::Version
179
- version: '0.14'
180
40
  description: A lightweight, zero-dependency web interface for monitoring Solid Queue
181
41
  jobs in Rails applications
182
42
  email:
@@ -187,9 +47,18 @@ extra_rdoc_files: []
187
47
  files:
188
48
  - README.md
189
49
  - Rakefile
190
- - app/controllers/solid_queue_monitor/monitor_controller.rb
50
+ - app/controllers/solid_queue_monitor/application_controller.rb
51
+ - app/controllers/solid_queue_monitor/base_controller.rb
52
+ - app/controllers/solid_queue_monitor/failed_jobs_controller.rb
53
+ - app/controllers/solid_queue_monitor/in_progress_jobs_controller.rb
54
+ - app/controllers/solid_queue_monitor/overview_controller.rb
55
+ - app/controllers/solid_queue_monitor/queues_controller.rb
56
+ - app/controllers/solid_queue_monitor/ready_jobs_controller.rb
57
+ - app/controllers/solid_queue_monitor/recurring_jobs_controller.rb
58
+ - app/controllers/solid_queue_monitor/scheduled_jobs_controller.rb
191
59
  - app/presenters/solid_queue_monitor/base_presenter.rb
192
60
  - app/presenters/solid_queue_monitor/failed_jobs_presenter.rb
61
+ - app/presenters/solid_queue_monitor/in_progress_jobs_presenter.rb
193
62
  - app/presenters/solid_queue_monitor/jobs_presenter.rb
194
63
  - app/presenters/solid_queue_monitor/queues_presenter.rb
195
64
  - app/presenters/solid_queue_monitor/ready_jobs_presenter.rb
@@ -221,6 +90,7 @@ metadata:
221
90
  homepage_uri: https://github.com/vishaltps/solid_queue_monitor
222
91
  source_code_uri: https://github.com/vishaltps/solid_queue_monitor
223
92
  changelog_uri: https://github.com/vishaltps/solid_queue_monitor/blob/main/CHANGELOG.md
93
+ rubygems_mfa_required: 'true'
224
94
  rdoc_options: []
225
95
  require_paths:
226
96
  - lib
@@ -228,14 +98,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
228
98
  requirements:
229
99
  - - ">="
230
100
  - !ruby/object:Gem::Version
231
- version: 3.1.6
101
+ version: 3.0.0
232
102
  required_rubygems_version: !ruby/object:Gem::Requirement
233
103
  requirements:
234
104
  - - ">="
235
105
  - !ruby/object:Gem::Version
236
106
  version: '0'
237
107
  requirements: []
238
- rubygems_version: 3.6.2
108
+ rubygems_version: 3.6.7
239
109
  specification_version: 4
240
110
  summary: Simple monitoring interface for Solid Queue
241
111
  test_files: []