tasks_scheduler 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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