jobs_dashboard 0.3.4

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 (62) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/gem-push.yml +34 -0
  3. data/.gitignore +12 -0
  4. data/.rspec +3 -0
  5. data/CHANGELOG.md +60 -0
  6. data/Gemfile +10 -0
  7. data/Gemfile.lock +129 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +133 -0
  10. data/Rakefile +8 -0
  11. data/app/assets/stylesheets/jobs_dashboard/application.scss +214 -0
  12. data/app/assets/stylesheets/jobs_dashboard/modules/buttons.sass +15 -0
  13. data/app/assets/stylesheets/jobs_dashboard/modules/card.sass +22 -0
  14. data/app/assets/stylesheets/jobs_dashboard/modules/description.sass +17 -0
  15. data/app/assets/stylesheets/jobs_dashboard/modules/grid.sass +17 -0
  16. data/app/assets/stylesheets/jobs_dashboard/modules/inputs.sass +31 -0
  17. data/app/assets/stylesheets/jobs_dashboard/modules/item-list.sass +10 -0
  18. data/app/assets/stylesheets/jobs_dashboard/modules/labels.sass +12 -0
  19. data/app/assets/stylesheets/jobs_dashboard/modules/statistics.sass +15 -0
  20. data/app/assets/stylesheets/jobs_dashboard/modules/table.sass +38 -0
  21. data/app/assets/stylesheets/jobs_dashboard/pages/jobs_logs/show.sass +36 -0
  22. data/app/assets/stylesheets/jobs_dashboard/reset.scss +135 -0
  23. data/app/assets/stylesheets/jobs_dashboard/variables.sass +6 -0
  24. data/app/controllers/jobs_dashboard/application_controller.rb +20 -0
  25. data/app/controllers/jobs_dashboard/dashboard_controller.rb +12 -0
  26. data/app/controllers/jobs_dashboard/job_logs_controller.rb +17 -0
  27. data/app/helpers/jobs_dashboard/application_helper.rb +31 -0
  28. data/app/models/jobs_dashboard/application_record.rb +5 -0
  29. data/app/models/jobs_dashboard/job_log.rb +32 -0
  30. data/app/views/jobs_dashboard/dashboard/_job_row.slim +8 -0
  31. data/app/views/jobs_dashboard/dashboard/index.slim +40 -0
  32. data/app/views/jobs_dashboard/job_logs/_stats.html.erb +0 -0
  33. data/app/views/jobs_dashboard/job_logs/index.slim +84 -0
  34. data/app/views/jobs_dashboard/job_logs/show.slim +89 -0
  35. data/app/views/kaminari/jobs_dashboard/_first_page.html.erb +11 -0
  36. data/app/views/kaminari/jobs_dashboard/_gap.html.erb +8 -0
  37. data/app/views/kaminari/jobs_dashboard/_last_page.html.erb +11 -0
  38. data/app/views/kaminari/jobs_dashboard/_next_page.html.erb +11 -0
  39. data/app/views/kaminari/jobs_dashboard/_page.html.erb +12 -0
  40. data/app/views/kaminari/jobs_dashboard/_paginator.html.erb +25 -0
  41. data/app/views/kaminari/jobs_dashboard/_prev_page.html.erb +11 -0
  42. data/app/views/layouts/jobs_dashboard/application.html.erb +15 -0
  43. data/app/views/shared/_logo.slim +4 -0
  44. data/app/views/shared/_navigation.slim +12 -0
  45. data/bin/console +15 -0
  46. data/bin/setup +8 -0
  47. data/config/initializers/ransack.rb +11 -0
  48. data/config/locales/default.fr.yml +219 -0
  49. data/config/locales/jobs_dashboard.en.yml +33 -0
  50. data/config/locales/jobs_dashboard.fr.yml +37 -0
  51. data/config/routes.rb +5 -0
  52. data/jobs_dashboard.gemspec +38 -0
  53. data/lib/generators/active_record/job_log_migration_generator.rb +24 -0
  54. data/lib/generators/active_record/templates/migration.rb +20 -0
  55. data/lib/jobs_dashboard/client_middleware.rb +56 -0
  56. data/lib/jobs_dashboard/engine.rb +18 -0
  57. data/lib/jobs_dashboard/server_middleware.rb +62 -0
  58. data/lib/jobs_dashboard/storage.rb +54 -0
  59. data/lib/jobs_dashboard/version.rb +5 -0
  60. data/lib/jobs_dashboard/worker.rb +25 -0
  61. data/lib/jobs_dashboard.rb +12 -0
  62. metadata +161 -0
@@ -0,0 +1,54 @@
1
+ module JobsDashboard::Storage
2
+
3
+ protected
4
+
5
+ # Stores job log in database
6
+ # sets last update time
7
+ # @param [String] id job id
8
+ # @param [Hash] status_updates updated values
9
+ # @param [Integer] expiration optional expire time in seconds
10
+ def store_for_id(id, attributes = nil)
11
+ begin
12
+ ActiveRecord::Base.connection_pool.with_connection do
13
+ @job_log = JobsDashboard::JobLog.find_or_initialize_by sidekiq_jid: id
14
+ @job_log.attributes = attributes if attributes
15
+ @job_log.save
16
+ end
17
+ ensure
18
+ ActiveRecord::Base.clear_active_connections!
19
+ end
20
+ end
21
+
22
+ def update_job_status(id, status)
23
+ if status.in? ['complete', 'failed', 'interrupted']
24
+ store_for_id(id, { status: status, finished_at: Time.now })
25
+ else
26
+ store_for_id(id, { status: status })
27
+ end
28
+ end
29
+
30
+ def add_log_for_id(id, log)
31
+ begin
32
+ ActiveRecord::Base.connection_pool.with_connection do
33
+ @job_log = JobsDashboard::JobLog.find_or_initialize_by sidekiq_jid: id
34
+ @job_log.logs << { created_at: Time.now.to_s, value: log }
35
+ @job_log.save
36
+ end
37
+ ensure
38
+ ActiveRecord::Base.clear_active_connections!
39
+ end
40
+ end
41
+
42
+ def add_metadata_for_id(id, key, value)
43
+ begin
44
+ ActiveRecord::Base.connection_pool.with_connection do
45
+ @job_log = JobsDashboard::JobLog.find_or_initialize_by sidekiq_jid: id
46
+ @job_log.metadata[key] = value
47
+ @job_log.save
48
+ end
49
+ ensure
50
+ ActiveRecord::Base.clear_active_connections!
51
+ end
52
+ end
53
+
54
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JobsDashboard
4
+ VERSION = "0.3.4"
5
+ end
@@ -0,0 +1,25 @@
1
+ require 'jobs_dashboard/storage'
2
+
3
+ module JobsDashboard::Worker
4
+ include JobsDashboard::Storage
5
+
6
+ class Stopped < StandardError
7
+ end
8
+
9
+
10
+ def set_job_parameter(param_name, value)
11
+ begin
12
+ store_for_id(jid, { "#{param_name}": value })
13
+ rescue ActiveModel::UnknownAttributeError
14
+ end
15
+ end
16
+
17
+ def add_job_log_line(value)
18
+ add_log_for_id(jid, value)
19
+ end
20
+
21
+ def add_job_metadata(key, value)
22
+ add_metadata_for_id(jid, key, value)
23
+ end
24
+
25
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "jobs_dashboard/version"
4
+ require_relative "jobs_dashboard/engine"
5
+ require_relative "jobs_dashboard/worker"
6
+ require 'jobs_dashboard/server_middleware'
7
+ require 'jobs_dashboard/client_middleware'
8
+ require 'jobs_dashboard/storage'
9
+
10
+ module JobsDashboard
11
+ extend Storage
12
+ end
metadata ADDED
@@ -0,0 +1,161 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jobs_dashboard
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.4
5
+ platform: ruby
6
+ authors:
7
+ - Patryk
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2023-11-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: sidekiq
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '6.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '6.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: kaminari
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: slim-rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: ransack
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description:
70
+ email:
71
+ - patryk@9troisquarts.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".github/workflows/gem-push.yml"
77
+ - ".gitignore"
78
+ - ".rspec"
79
+ - CHANGELOG.md
80
+ - Gemfile
81
+ - Gemfile.lock
82
+ - LICENSE.txt
83
+ - README.md
84
+ - Rakefile
85
+ - app/assets/stylesheets/jobs_dashboard/application.scss
86
+ - app/assets/stylesheets/jobs_dashboard/modules/buttons.sass
87
+ - app/assets/stylesheets/jobs_dashboard/modules/card.sass
88
+ - app/assets/stylesheets/jobs_dashboard/modules/description.sass
89
+ - app/assets/stylesheets/jobs_dashboard/modules/grid.sass
90
+ - app/assets/stylesheets/jobs_dashboard/modules/inputs.sass
91
+ - app/assets/stylesheets/jobs_dashboard/modules/item-list.sass
92
+ - app/assets/stylesheets/jobs_dashboard/modules/labels.sass
93
+ - app/assets/stylesheets/jobs_dashboard/modules/statistics.sass
94
+ - app/assets/stylesheets/jobs_dashboard/modules/table.sass
95
+ - app/assets/stylesheets/jobs_dashboard/pages/jobs_logs/show.sass
96
+ - app/assets/stylesheets/jobs_dashboard/reset.scss
97
+ - app/assets/stylesheets/jobs_dashboard/variables.sass
98
+ - app/controllers/jobs_dashboard/application_controller.rb
99
+ - app/controllers/jobs_dashboard/dashboard_controller.rb
100
+ - app/controllers/jobs_dashboard/job_logs_controller.rb
101
+ - app/helpers/jobs_dashboard/application_helper.rb
102
+ - app/models/jobs_dashboard/application_record.rb
103
+ - app/models/jobs_dashboard/job_log.rb
104
+ - app/views/jobs_dashboard/dashboard/_job_row.slim
105
+ - app/views/jobs_dashboard/dashboard/index.slim
106
+ - app/views/jobs_dashboard/job_logs/_stats.html.erb
107
+ - app/views/jobs_dashboard/job_logs/index.slim
108
+ - app/views/jobs_dashboard/job_logs/show.slim
109
+ - app/views/kaminari/jobs_dashboard/_first_page.html.erb
110
+ - app/views/kaminari/jobs_dashboard/_gap.html.erb
111
+ - app/views/kaminari/jobs_dashboard/_last_page.html.erb
112
+ - app/views/kaminari/jobs_dashboard/_next_page.html.erb
113
+ - app/views/kaminari/jobs_dashboard/_page.html.erb
114
+ - app/views/kaminari/jobs_dashboard/_paginator.html.erb
115
+ - app/views/kaminari/jobs_dashboard/_prev_page.html.erb
116
+ - app/views/layouts/jobs_dashboard/application.html.erb
117
+ - app/views/shared/_logo.slim
118
+ - app/views/shared/_navigation.slim
119
+ - bin/console
120
+ - bin/setup
121
+ - config/initializers/ransack.rb
122
+ - config/locales/default.fr.yml
123
+ - config/locales/jobs_dashboard.en.yml
124
+ - config/locales/jobs_dashboard.fr.yml
125
+ - config/routes.rb
126
+ - jobs_dashboard.gemspec
127
+ - lib/generators/active_record/job_log_migration_generator.rb
128
+ - lib/generators/active_record/templates/migration.rb
129
+ - lib/jobs_dashboard.rb
130
+ - lib/jobs_dashboard/client_middleware.rb
131
+ - lib/jobs_dashboard/engine.rb
132
+ - lib/jobs_dashboard/server_middleware.rb
133
+ - lib/jobs_dashboard/storage.rb
134
+ - lib/jobs_dashboard/version.rb
135
+ - lib/jobs_dashboard/worker.rb
136
+ homepage: https://github.com/9troisquarts/jobs_dashboard
137
+ licenses:
138
+ - MIT
139
+ metadata:
140
+ homepage_uri: https://github.com/9troisquarts/jobs_dashboard
141
+ source_code_uri: https://github.com/9troisquarts/jobs_dashboard
142
+ post_install_message:
143
+ rdoc_options: []
144
+ require_paths:
145
+ - lib
146
+ required_ruby_version: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ required_rubygems_version: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ version: '0'
156
+ requirements: []
157
+ rubygems_version: 3.3.7
158
+ signing_key:
159
+ specification_version: 4
160
+ summary: Sidekiq jobs dashboard
161
+ test_files: []