tasks_scheduler 0.5.2 → 0.6.2

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: 1990d0ec938668f01704d530a1797027f84ae24771f22ec716051176032039d9
4
- data.tar.gz: 66bab115b2e5fa8f0aeb837ff9549b5a3779fbd9637733521f5f4800239d9fcb
3
+ metadata.gz: 7c175f5d68102231223e0d0b132c1d8ee5e36e73d39c9fa8750ca6b68aff0d57
4
+ data.tar.gz: b83338a7c27496daff792fa9ae20f2c1388315c976751aa99ee87d39353ae096
5
5
  SHA512:
6
- metadata.gz: bc08c8c498e0179d205f23bf6b7107e4f9db245857bcce37a0956ad73d14ef45d7ff0300a9140dc25e9976c7636c4f442a7a8af374bf84a4cb7d8c89fe988b1d
7
- data.tar.gz: af0434d46a4ef3fecc00d177132f0cd2a7b1717853113ec0327c3d798fc1a24f1b7e55f3daa1e511aa31e1754deae4fc7af37393826d624834bf90d30eb3b242
6
+ metadata.gz: b979e6bf097cfdb701ff8655f628fa69001a5fcf4523b4ebd8b8ae975447a400fa1c504b449b9aa73ff61d0009e2d9c5efc800579c9a10676ff8d0f12eef2fb5
7
+ data.tar.gz: 0046c58bf789375875cfa22810ca1bf6262c68c492b374f04688e674191aaea30f68cd7d5da3b14b764c9c2c3fd534188447dd9c8f64fbb6c4fb2448e96d6fa4
@@ -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' %>
data/config/routes.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Rails.application.routes.draw do
4
- resources(:scheduled_tasks) do
5
- as_routes
4
+ concern :active_scaffold, ActiveScaffold::Routing::Basic.new(association: true)
5
+ resources(:scheduled_tasks, concerns: :active_scaffold) do
6
6
  collection do
7
7
  get :status
8
8
  get :status_content
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class CreateScheduledTasks < (
4
- Rails.version < '5.2' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
4
+ Rails.version < '5' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
5
5
  )
6
6
  def change
7
7
  create_table :scheduled_tasks do |t|
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class AddStatusAttributesToScheduledTasks < (
4
- Rails.version < '5.2' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
4
+ Rails.version < '5' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
5
5
  )
6
6
  def change
7
7
  add_column :scheduled_tasks, :last_run_start, :datetime
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class AddPidToScheduledTasks < (
4
- Rails.version < '5.2' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
4
+ Rails.version < '5' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
5
5
  )
6
6
  def change
7
7
  add_column :scheduled_tasks, :pid, :integer
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class AddArgsToScheduledTasks < (
4
- Rails.version < '5.2' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
4
+ Rails.version < '5' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
5
5
  )
6
6
  def change
7
7
  add_column :scheduled_tasks, :args, :string
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class AddLastFailStatusToScheduledTasks < (
4
- Rails.version < '5.2' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
4
+ Rails.version < '5' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
5
5
  )
6
6
  def change
7
7
  add_column :scheduled_tasks, :last_fail_status, :string
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class AddEnabledToScheduledTasks < (
4
- Rails.version < '5.2' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
4
+ Rails.version < '5' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
5
5
  )
6
6
  def change
7
7
  add_column :scheduled_tasks, :enabled, :boolean, null: false, default: true
@@ -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.2'
4
+ VERSION = '0.6.2'
5
5
  end
@@ -0,0 +1,3 @@
1
+ //= link_tree ../images
2
+ //= link_directory ../javascripts .js
3
+ //= link_directory ../stylesheets .css
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.2
4
+ version: 0.6.2
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-09-14 00:00:00.000000000 Z
11
+ date: 2021-07-05 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,9 +211,11 @@ 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
218
+ - test/dummy/app/assets/config/manifest.js
211
219
  - test/dummy/app/assets/javascripts/application.js
212
220
  - test/dummy/app/assets/stylesheets/application.css
213
221
  - test/dummy/app/controllers/application_controller.rb
@@ -263,7 +271,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
263
271
  - !ruby/object:Gem::Version
264
272
  version: '0'
265
273
  requirements: []
266
- rubygems_version: 3.0.8
274
+ rubygems_version: 3.0.9
267
275
  signing_key:
268
276
  specification_version: 4
269
277
  summary: Scheduler for Rake tasks.
@@ -293,6 +301,7 @@ test_files:
293
301
  - test/dummy/app/views/layouts/application.html.erb
294
302
  - test/dummy/app/controllers/application_controller.rb
295
303
  - test/dummy/app/helpers/application_helper.rb
304
+ - test/dummy/app/assets/config/manifest.js
296
305
  - test/dummy/app/assets/stylesheets/application.css
297
306
  - test/dummy/app/assets/javascripts/application.js
298
307
  - test/dummy/public/422.html
@@ -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>