tasks_scheduler 0.1.0 → 0.2.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
- SHA1:
3
- metadata.gz: 13e0b12aa070c0f451496117460d094aa1f2eec0
4
- data.tar.gz: 2c04617ea9741ea2a06748c67f2fe7678f2db03f
2
+ SHA256:
3
+ metadata.gz: fdf51773f53357b26a3b5442f32351d5365829cdb2c30c5e7579029b62c9e0b8
4
+ data.tar.gz: eb003ff171837d987d9a1a316914126915d6dc84d2b8082748b7998feb219333
5
5
  SHA512:
6
- metadata.gz: 1502c2289657bd173cc132612605e8c3f2bfe66e2651707b032b7116e01d0a2681226cadf6e3580d15618e99f97264e13aab1365cbcaaf65ac839f4bed676446
7
- data.tar.gz: 59ed1b051e70340e5df8e26d7f2a4b04281db36c127b9c9ab51cdeee2485a1c8dbc82e12777baea74c557f226b3d99b722ec4ee8deae54a630f1d5b7908c21fd
6
+ metadata.gz: d3a26e6ee7df33383594e9ea0fc117c11e176d9a0e71b8a4a465f57d96a0e498238313906d48c4985e3a269441840bbd496b96894ecd1b9058544a67c55c10cb
7
+ data.tar.gz: da6715ac5a6c44923c3688a3c8e4561c434a969402ff80be05b4143c758e6d4aaafab1a778b394c61d2c1758bd1c4832f697110cd0cb0766fda3a70d291348d5
@@ -63,14 +63,14 @@ TasksScheduler.Alert = function () {
63
63
 
64
64
  _A = TasksScheduler.Alert;
65
65
 
66
- _A.DEFAULT_REFRESH_INTERVAL = 60000;
66
+ _A.DEFAULT_REFRESH_INTERVAL = 5000;
67
67
  _A.DEFAULT_ELEMENT_SELECTOR = '#tasks_scheduler_alert';
68
- _A.url = null;
68
+ _A.CSS_CLASSES_PREFIX = 'alert_';
69
+ _A.url = '<%= ::Rails.application.class.routes.url_helpers.status_tasks_scheduler_daemon_path %>';
69
70
 
70
- _A.init = function (url, options) {
71
+ _A.init = function (options) {
71
72
  options = typeof options !== 'undefined' ? options : {};
72
73
  $(document).ready(function () {
73
- _A.url = url;
74
74
  _A.options = options;
75
75
  if (!_A.options.refresh_interval) {
76
76
  _A.options.refresh_interval = _A.DEFAULT_REFRESH_INTERVAL;
@@ -91,14 +91,24 @@ _A.refresh = function () {
91
91
  url: _A.url,
92
92
  success: function (result) {
93
93
  var alert = $(_A.options.element_selector);
94
- if (result === 'true') {
95
- alert.hide();
96
- } else {
97
- alert.show();
98
- }
94
+ var pattern = new RegExp('(^|\\s)' + _A.CSS_CLASSES_PREFIX + "\\S+", 'g');
95
+ alert.removeClass (function (index, className) {
96
+ return (className.match (pattern) || []).join(' ');
97
+ });
98
+ alert.addClass(_A.resultToCssClass(result));
99
99
  },
100
100
  complete: function (result) {
101
101
  _A.setNextRefresh();
102
102
  }
103
103
  });
104
104
  };
105
+
106
+ _A.resultToCssClass = function(result) {
107
+ var suffix = "ok"
108
+ if (!result.daemon_running) {
109
+ suffix = "daemon_stopped";
110
+ } else if (!result.tasks_all_ok) {
111
+ suffix = "task_failed";
112
+ }
113
+ return _A.CSS_CLASSES_PREFIX + suffix;
114
+ };
@@ -1,4 +1,5 @@
1
1
  @import 'active_scaffold';
2
+ @import 'tasks_scheduler/alert';
2
3
 
3
4
  #TaskScheduler_Status_Status {
4
5
  font-size: small;
@@ -0,0 +1,46 @@
1
+ .tasks_scheduler_alert_link {
2
+ font-weight: bold;
3
+ content: '!';
4
+ &::after {
5
+ content: '!';
6
+ }
7
+ }
8
+
9
+ #tasks_scheduler_alert {
10
+ .daemon_alert {
11
+ @extend .tasks_scheduler_alert_link;
12
+ color: red !important;
13
+ }
14
+
15
+ .task_alert {
16
+ @extend .tasks_scheduler_alert_link;
17
+ color: yellow !important;
18
+ }
19
+
20
+ &, &.alert_ok {
21
+ .daemon_alert {
22
+ display: none;
23
+ }
24
+ .task_alert {
25
+ display: none;
26
+ }
27
+ }
28
+
29
+ &.alert_daemon_stopped {
30
+ .daemon_alert {
31
+ display: inline;
32
+ }
33
+ .task_alert {
34
+ display: none;
35
+ }
36
+ }
37
+
38
+ &.alert_task_failed {
39
+ .daemon_alert {
40
+ display: none;
41
+ }
42
+ .task_alert {
43
+ display: inline;
44
+ }
45
+ }
46
+ }
@@ -7,8 +7,9 @@ class TasksSchedulerDaemonController < ApplicationController
7
7
  render 'index'
8
8
  end
9
9
 
10
- def running
11
- render plain: (::TasksScheduler::Daemon.running? ? 'true' : 'false'), layout: false
10
+ def status
11
+ render json: { daemon_running: ::TasksScheduler::Daemon.running?,
12
+ tasks_all_ok: !::ScheduledTask.all.any?(&:failed?) }
12
13
  end
13
14
 
14
15
  def download_log
@@ -7,6 +7,10 @@ class ScheduledTask < ActiveRecord::Base
7
7
  last_fail_status.present? ? last_fail_status : STATUS_FAILED
8
8
  end
9
9
 
10
+ def failed?
11
+ [STATUS_FAILED, STATUS_ABORTED, STATUS_TIMEOUT].include?(status)
12
+ end
13
+
10
14
  def running?
11
15
  last_run_start.present?
12
16
  end
@@ -0,0 +1,4 @@
1
+ <% if can_by_path?(main_app.tasks_scheduler_daemon_path) &&
2
+ can_by_path?(main_app.status_tasks_scheduler_daemon_path) %>
3
+ <%= render partial: '/tasks_scheduler/alert' %>
4
+ <% end %>
@@ -13,8 +13,8 @@ Rails.application.routes.draw do
13
13
  get '/tasks_scheduler_daemon', to: 'tasks_scheduler_daemon#index', as: :tasks_scheduler_daemon
14
14
  post '/tasks_scheduler_daemon/:tasks_scheduler_execute_action',
15
15
  to: 'tasks_scheduler_daemon#execute', as: :execute_tasks_scheduler_daemon
16
- get '/tasks_scheduler_daemon/running', to: 'tasks_scheduler_daemon#running',
17
- as: :running_tasks_scheduler_daemon
16
+ get '/tasks_scheduler_daemon/status', to: 'tasks_scheduler_daemon#status',
17
+ as: :status_tasks_scheduler_daemon
18
18
  get '/tasks_scheduler_daemon/download_log', to: 'tasks_scheduler_daemon#download_log',
19
19
  as: :download_log_tasks_scheduler_daemon
20
20
  end
@@ -1,3 +1,3 @@
1
1
  module TasksScheduler
2
- VERSION = '0.1.0'.freeze
2
+ VERSION = '0.2.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tasks_scheduler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo H. Bogoni
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-03-22 00:00:00.000000000 Z
11
+ date: 2018-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_scaffold
@@ -92,8 +92,9 @@ files:
92
92
  - MIT-LICENSE
93
93
  - README.rdoc
94
94
  - Rakefile
95
- - app/assets/javascripts/tasks_scheduler.js
95
+ - app/assets/javascripts/tasks_scheduler.js.erb
96
96
  - app/assets/stylesheets/tasks_scheduler.scss
97
+ - app/assets/stylesheets/tasks_scheduler/alert.scss
97
98
  - app/controllers/scheduled_tasks_controller.rb
98
99
  - app/controllers/tasks_scheduler_daemon_controller.rb
99
100
  - app/helpers/scheduled_tasks_helper.rb
@@ -106,6 +107,7 @@ files:
106
107
  - app/views/scheduled_tasks/log.html.erb
107
108
  - app/views/scheduled_tasks/status.html.erb
108
109
  - app/views/scheduled_tasks/status_content.html.erb
110
+ - app/views/tasks_scheduler/_alert.html.erb
109
111
  - app/views/tasks_scheduler/_navbar.html.erb
110
112
  - app/views/tasks_scheduler_daemon/_running_status.html.erb
111
113
  - app/views/tasks_scheduler_daemon/index.html.erb
@@ -186,46 +188,46 @@ required_rubygems_version: !ruby/object:Gem::Requirement
186
188
  version: '0'
187
189
  requirements: []
188
190
  rubyforge_project:
189
- rubygems_version: 2.6.14
191
+ rubygems_version: 2.7.7
190
192
  signing_key:
191
193
  specification_version: 4
192
194
  summary: Scheduler for Rake tasks.
193
195
  test_files:
194
- - test/fixtures/scheduled_tasks.yml
195
- - test/models/scheduled_task_test.rb
196
- - test/dummy/config.ru
196
+ - test/dummy/Rakefile
197
197
  - test/dummy/README.rdoc
198
- - test/dummy/db/schema.rb
199
- - test/dummy/app/views/layouts/application.html.erb
200
- - test/dummy/app/assets/stylesheets/application.css
201
- - test/dummy/app/assets/javascripts/application.js
202
- - test/dummy/app/helpers/application_helper.rb
203
- - test/dummy/app/controllers/application_controller.rb
204
- - test/dummy/bin/bundle
205
198
  - test/dummy/bin/rails
206
- - test/dummy/bin/setup
207
199
  - test/dummy/bin/rake
208
- - test/dummy/Rakefile
209
- - test/dummy/config/environments/production.rb
210
- - test/dummy/config/environments/test.rb
211
- - test/dummy/config/environments/development.rb
212
- - test/dummy/config/application.rb
213
- - test/dummy/config/boot.rb
214
- - test/dummy/config/locales/en.yml
215
- - test/dummy/config/initializers/session_store.rb
216
- - test/dummy/config/initializers/filter_parameter_logging.rb
217
- - test/dummy/config/initializers/wrap_parameters.rb
218
- - test/dummy/config/initializers/backtrace_silencers.rb
219
- - test/dummy/config/initializers/inflections.rb
200
+ - test/dummy/bin/bundle
201
+ - test/dummy/bin/setup
220
202
  - test/dummy/config/initializers/assets.rb
203
+ - test/dummy/config/initializers/wrap_parameters.rb
204
+ - test/dummy/config/initializers/session_store.rb
221
205
  - test/dummy/config/initializers/cookies_serializer.rb
206
+ - test/dummy/config/initializers/inflections.rb
222
207
  - test/dummy/config/initializers/mime_types.rb
208
+ - test/dummy/config/initializers/backtrace_silencers.rb
209
+ - test/dummy/config/initializers/filter_parameter_logging.rb
210
+ - test/dummy/config/boot.rb
211
+ - test/dummy/config/locales/en.yml
223
212
  - test/dummy/config/secrets.yml
213
+ - test/dummy/config/environment.rb
224
214
  - test/dummy/config/database.yml
225
215
  - test/dummy/config/routes.rb
226
- - test/dummy/config/environment.rb
227
- - test/dummy/public/422.html
216
+ - test/dummy/config/environments/development.rb
217
+ - test/dummy/config/environments/test.rb
218
+ - test/dummy/config/environments/production.rb
219
+ - test/dummy/config/application.rb
220
+ - test/dummy/app/assets/stylesheets/application.css
221
+ - test/dummy/app/assets/javascripts/application.js
222
+ - test/dummy/app/views/layouts/application.html.erb
223
+ - test/dummy/app/helpers/application_helper.rb
224
+ - test/dummy/app/controllers/application_controller.rb
225
+ - test/dummy/db/schema.rb
228
226
  - test/dummy/public/favicon.ico
229
- - test/dummy/public/404.html
230
227
  - test/dummy/public/500.html
228
+ - test/dummy/public/422.html
229
+ - test/dummy/public/404.html
230
+ - test/dummy/config.ru
231
+ - test/models/scheduled_task_test.rb
231
232
  - test/test_helper.rb
233
+ - test/fixtures/scheduled_tasks.yml