tasks_scheduler 0.5.4 → 0.6.3

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
2
  SHA256:
3
- metadata.gz: 75a6de697f21d110f7bd19830666b84ebc8f6bceddebfe7b5690b7fcbfc362d0
4
- data.tar.gz: 59ca3d0f8830902424d1a3ff3927d16b1b1a13513b3f9b7f1d02865e07e64c90
3
+ metadata.gz: 10b67fe8f23b139ef5acc62a230c82d5225de4582e229b0734c9edfa5c3769c5
4
+ data.tar.gz: 0504f08785e02d1e4b9df474619581960f7998c53e5851139178959415fa06f0
5
5
  SHA512:
6
- metadata.gz: fb5b96594aec114c1e8f3f08ed6fa03d638eb869fc9ef8c4cec3fb7b24f765945e879cf97597142726746a2709bf65733b800454477da2dd8378a419c6882376
7
- data.tar.gz: 38f1f53610c2830ba8e2deeed0ad32bd9a21165926cf92bc898291303829bd3843917c83c647e667478361540b59dfd3bed1dbc4482fc3a4342dda5c818d3f0c
6
+ metadata.gz: a799c55ccd43e245019159e65152d7de47015fbd8a4bb7cdfac1b108d39f53fb5548acdc1aa606f779d39b27c7129f8e96418568a95f0619522da86a5de063cc
7
+ data.tar.gz: 544a33fcedf6126c73158fa4f8ae0b71d1662873ea66ff1fcc1d964fb5365666932eaa34e97557b4428898ba46484bb9963dbf4be1dcf37eed1f0a0641d096b6
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TasksSchedulerHelper
4
+ NAVBAR_ENTRIES = {
5
+ tasks_scheduler_daemon: 'tasks_scheduler_daemon',
6
+ scheduled_tasks: 'scheduled_tasks',
7
+ tasks_scheduler_status: :status_scheduled_tasks
8
+ }.freeze
9
+
10
+ def tasks_scheduler_navbar
11
+ content_tag(:navbar) do
12
+ safe_join(tasks_scheduler_navbar_entries.map { |label, path| link_to label, path }, ' | ')
13
+ end
14
+ end
15
+
16
+ def tasks_scheduler_navbar_entries
17
+ NAVBAR_ENTRIES
18
+ .map { |i18n_key, path_name| [::I18n.t(i18n_key), send("#{path_name}_path")] }
19
+ .to_h
20
+ end
21
+ end
@@ -61,6 +61,8 @@ class ScheduledTask < ActiveRecord::Base
61
61
  check_log("Running? #{process_running?}")
62
62
  check_log("Last fail status: #{last_fail_status}")
63
63
  check_log("Enabled: #{enabled?}")
64
+ check_log("Tasks running: #{::TasksScheduler::Info.tasks_running_current}/" +
65
+ ::TasksScheduler::Info.tasks_running_limit.to_s)
64
66
  end
65
67
 
66
68
  def check_task_without_next_run
@@ -72,11 +74,13 @@ class ScheduledTask < ActiveRecord::Base
72
74
  def check_task_with_next_run
73
75
  if !task_exist?
74
76
  check_on_task_not_exist
75
- elsif next_run < Time.zone.now
77
+ elsif next_run >= Time.zone.now
78
+ check_log('Next run not reached')
79
+ elsif !::TasksScheduler::Info.can_run_new_task?
80
+ check_log('Running tasks limit reached. Waiting...')
81
+ else
76
82
  check_log('Next run reached. Running...')
77
83
  spawn_task
78
- else
79
- check_log('Next run not reached')
80
84
  end
81
85
  end
82
86
 
@@ -1,2 +1,2 @@
1
- <%= render partial: '/tasks_scheduler/navbar' %>
1
+ <%= tasks_scheduler_navbar %>
2
2
  <%= render :super %>
@@ -1,3 +1,4 @@
1
+ <%= tasks_scheduler_navbar %>
1
2
  <p>Log file: <%= @log_file %></p>
2
3
  <% if File.exist?(@log_file) %>
3
4
  <p>Content: </p>
@@ -1,4 +1,4 @@
1
- <%= render partial: '/tasks_scheduler/navbar' %>
1
+ <%= tasks_scheduler_navbar %>
2
2
  <h2><%= I18n.t(:tasks_scheduler_status) %></h2>
3
3
  <div id="TaskScheduler_Status_Status">
4
4
  </div>
@@ -4,6 +4,10 @@
4
4
  <br/>
5
5
  <strong>Daemon status: </strong>
6
6
  <%= render partial: '/tasks_scheduler_daemon/running_status' %>
7
+ <br/>
8
+ <strong>Tasks running/limit: </strong>
9
+ <%= ::TasksScheduler::Info.tasks_running_current %> /
10
+ <%= ::TasksScheduler::Info.tasks_running_limit %>
7
11
  </p>
8
12
  <table>
9
13
  <thead>
@@ -1,4 +1,4 @@
1
- <%= render partial: '/tasks_scheduler/navbar' %>
1
+ <%= tasks_scheduler_navbar %>
2
2
  <h2><%= I18n.t(:tasks_scheduler_daemon) %></h2>
3
3
  <%= render partial: 'daemon', locals: {status_label: 'Status:'} %>
4
4
  <%= render partial: 'logs' %>
@@ -16,7 +16,7 @@ module TasksScheduler
16
16
  Signal.trap('TERM') { running = false }
17
17
  while running
18
18
  Rails.logger.info('Checking all tasks...')
19
- ::ScheduledTask.all.each(&:check)
19
+ ::ScheduledTask.all.order(next_run: :asc).each(&:check)
20
20
  Rails.logger.info("All tasks checked. Sleeping for #{CHECK_INTERVAL} second(s)...")
21
21
  sleep(CHECK_INTERVAL)
22
22
  end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TasksScheduler
4
+ class Info
5
+ TASKS_LIMIT_KEY = 'TASKS_SCHEDULER_TASKS_LIMIT'
6
+ TASKS_LIMIT_DEFAULT_VALUE = '-1'
7
+
8
+ class << self
9
+ def can_run_new_task?
10
+ return true if tasks_running_limit.negative?
11
+
12
+ tasks_running_current < tasks_running_limit
13
+ end
14
+
15
+ def tasks_running_current
16
+ ::ScheduledTask.all.select(&:process_running?).count
17
+ end
18
+
19
+ def tasks_running_limit
20
+ ENV[TASKS_LIMIT_KEY].if_present(TASKS_LIMIT_DEFAULT_VALUE, &:to_i)
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TasksScheduler
4
- VERSION = '0.5.4'
4
+ VERSION = '0.6.3'
5
5
  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.5.4
4
+ version: 0.6.3
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: 2020-10-14 00:00:00.000000000 Z
11
+ date: 2021-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_scaffold
@@ -64,28 +64,40 @@ dependencies:
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '0.43'
67
+ version: '0.56'
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: 0.56.1
68
71
  type: :runtime
69
72
  prerelease: false
70
73
  version_requirements: !ruby/object:Gem::Requirement
71
74
  requirements:
72
75
  - - "~>"
73
76
  - !ruby/object:Gem::Version
74
- version: '0.43'
77
+ version: '0.56'
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 0.56.1
75
81
  - !ruby/object:Gem::Dependency
76
82
  name: js-routes
77
83
  requirement: !ruby/object:Gem::Requirement
78
84
  requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '1.4'
79
88
  - - ">="
80
89
  - !ruby/object:Gem::Version
81
- version: '0'
90
+ version: 1.4.14
82
91
  type: :runtime
83
92
  prerelease: false
84
93
  version_requirements: !ruby/object:Gem::Requirement
85
94
  requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '1.4'
86
98
  - - ">="
87
99
  - !ruby/object:Gem::Version
88
- version: '0'
100
+ version: 1.4.14
89
101
  - !ruby/object:Gem::Dependency
90
102
  name: parse-cron
91
103
  requirement: !ruby/object:Gem::Requirement
@@ -106,34 +118,28 @@ dependencies:
106
118
  requirements:
107
119
  - - ">="
108
120
  - !ruby/object:Gem::Version
109
- version: 4.2.11.3
121
+ version: 4.2.11
110
122
  type: :runtime
111
123
  prerelease: false
112
124
  version_requirements: !ruby/object:Gem::Requirement
113
125
  requirements:
114
126
  - - ">="
115
127
  - !ruby/object:Gem::Version
116
- version: 4.2.11.3
128
+ version: 4.2.11
117
129
  - !ruby/object:Gem::Dependency
118
130
  name: eac_ruby_gem_support
119
131
  requirement: !ruby/object:Gem::Requirement
120
132
  requirements:
121
133
  - - "~>"
122
134
  - !ruby/object:Gem::Version
123
- version: '0.1'
124
- - - ">="
125
- - !ruby/object:Gem::Version
126
- version: 0.1.1
135
+ version: '0.2'
127
136
  type: :development
128
137
  prerelease: false
129
138
  version_requirements: !ruby/object:Gem::Requirement
130
139
  requirements:
131
140
  - - "~>"
132
141
  - !ruby/object:Gem::Version
133
- version: '0.1'
134
- - - ">="
135
- - !ruby/object:Gem::Version
136
- version: 0.1.1
142
+ version: '0.2'
137
143
  - !ruby/object:Gem::Dependency
138
144
  name: sqlite3
139
145
  requirement: !ruby/object:Gem::Requirement
@@ -169,6 +175,7 @@ files:
169
175
  - app/controllers/tasks_scheduler_daemon_controller.rb
170
176
  - app/controllers/tasks_scheduler_daemon_controller/_download_log.rb
171
177
  - app/helpers/scheduled_tasks_helper.rb
178
+ - app/helpers/tasks_scheduler_helper.rb
172
179
  - app/models/scheduled_task.rb
173
180
  - app/models/scheduled_task/checker.rb
174
181
  - app/models/scheduled_task/log.rb
@@ -179,7 +186,6 @@ files:
179
186
  - app/views/scheduled_tasks/status.html.erb
180
187
  - app/views/scheduled_tasks/status_content.html.erb
181
188
  - app/views/tasks_scheduler/_alert.html.erb
182
- - app/views/tasks_scheduler/_navbar.html.erb
183
189
  - app/views/tasks_scheduler_daemon/_daemon.html.erb
184
190
  - app/views/tasks_scheduler_daemon/_logs.html.erb
185
191
  - app/views/tasks_scheduler_daemon/_results.html.erb
@@ -205,6 +211,7 @@ files:
205
211
  - lib/tasks_scheduler/cron_scheduling_validator.rb
206
212
  - lib/tasks_scheduler/daemon.rb
207
213
  - lib/tasks_scheduler/engine.rb
214
+ - lib/tasks_scheduler/info.rb
208
215
  - lib/tasks_scheduler/version.rb
209
216
  - test/dummy/README.rdoc
210
217
  - test/dummy/Rakefile
@@ -264,7 +271,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
264
271
  - !ruby/object:Gem::Version
265
272
  version: '0'
266
273
  requirements: []
267
- rubygems_version: 3.0.8
274
+ rubygems_version: 3.1.6
268
275
  signing_key:
269
276
  specification_version: 4
270
277
  summary: Scheduler for Rake tasks.
@@ -1,5 +0,0 @@
1
- <navbar>
2
- <%= link_to I18n.t(:tasks_scheduler_daemon), tasks_scheduler_daemon_path %> |
3
- <%= link_to I18n.t(:scheduled_tasks), scheduled_tasks_path %> |
4
- <%= link_to I18n.t(:tasks_scheduler_status), status_scheduled_tasks_path %>
5
- </navbar>