tasks_scheduler 0.5.1 → 0.6.1

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
2
  SHA256:
3
- metadata.gz: f297d8aab57fc0f8e97be84ea5ca71a1dda0623a9231f124866f066a65a96703
4
- data.tar.gz: be6470159ccbc01e0953b40f4560e1543b3a2687f75c17147fda86d492f0523f
3
+ metadata.gz: 02fc82903eae792a6597dc77472ff0b3eb2ec0ef9d69f902051fbbc778a9024d
4
+ data.tar.gz: 225e851fedaee60893b93e64607af7094668a89fece2d3caba702d2eac3efebc
5
5
  SHA512:
6
- metadata.gz: cf3db7dde7ceb96ece05b878c725eda9bdd3642e0c7ec229f248de845aea79028454533eb49692cbe772d892daaef40cb6f08153606dd489f4b50786e0275d11
7
- data.tar.gz: cc9a7644b4447216bdc692eea253f39c9183ddc4f24b44e5994b61a84cad0bf093b96607f9d80cc7bb9c33b08ed38292394affc28b49a0a03a85890210f98b62
6
+ metadata.gz: 7e19c7fd16582c7586ba58e4b4e325a0ed9bbdc0835f29e1709751a5ad0af1377be0af767206ec43a9843889297b18b7fbefb82ef4ec54553b986bda20740a1f
7
+ data.tar.gz: 1ac068389a905c10151321d2b2090338f260d894b5d35af0a75a5e6897f0e5b69b5e91217ef2a8c696595ae2523574cd55434e245437488d717081beda9f5421
@@ -1,8 +1,4 @@
1
1
  //= require active_scaffold
2
2
  //= require js-routes
3
-
4
- function TasksScheduler() {
5
- }
6
-
7
3
  //= require tasks_scheduler/alert
8
4
  //= require tasks_scheduler/status
@@ -1,3 +1,7 @@
1
+ if (typeof TasksScheduler == "undefined") {
2
+ TasksScheduler = function() {};
3
+ }
4
+
1
5
  TasksScheduler.Alert = function () {
2
6
  };
3
7
 
@@ -1,3 +1,7 @@
1
+ if (typeof TasksScheduler == "undefined") {
2
+ TasksScheduler = function() {};
3
+ }
4
+
1
5
  TasksScheduler.Status = function () {
2
6
  };
3
7
 
@@ -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.1'
4
+ VERSION = '0.6.1'
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.1
4
+ version: 0.6.1
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-13 00:00:00.000000000 Z
11
+ date: 2021-06-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_scaffold
@@ -64,14 +64,20 @@ 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
@@ -106,34 +112,28 @@ dependencies:
106
112
  requirements:
107
113
  - - ">="
108
114
  - !ruby/object:Gem::Version
109
- version: 4.2.11.3
115
+ version: 4.2.11
110
116
  type: :runtime
111
117
  prerelease: false
112
118
  version_requirements: !ruby/object:Gem::Requirement
113
119
  requirements:
114
120
  - - ">="
115
121
  - !ruby/object:Gem::Version
116
- version: 4.2.11.3
122
+ version: 4.2.11
117
123
  - !ruby/object:Gem::Dependency
118
124
  name: eac_ruby_gem_support
119
125
  requirement: !ruby/object:Gem::Requirement
120
126
  requirements:
121
127
  - - "~>"
122
128
  - !ruby/object:Gem::Version
123
- version: '0.1'
124
- - - ">="
125
- - !ruby/object:Gem::Version
126
- version: 0.1.1
129
+ version: '0.2'
127
130
  type: :development
128
131
  prerelease: false
129
132
  version_requirements: !ruby/object:Gem::Requirement
130
133
  requirements:
131
134
  - - "~>"
132
135
  - !ruby/object:Gem::Version
133
- version: '0.1'
134
- - - ">="
135
- - !ruby/object:Gem::Version
136
- version: 0.1.1
136
+ version: '0.2'
137
137
  - !ruby/object:Gem::Dependency
138
138
  name: sqlite3
139
139
  requirement: !ruby/object:Gem::Requirement
@@ -169,6 +169,7 @@ files:
169
169
  - app/controllers/tasks_scheduler_daemon_controller.rb
170
170
  - app/controllers/tasks_scheduler_daemon_controller/_download_log.rb
171
171
  - app/helpers/scheduled_tasks_helper.rb
172
+ - app/helpers/tasks_scheduler_helper.rb
172
173
  - app/models/scheduled_task.rb
173
174
  - app/models/scheduled_task/checker.rb
174
175
  - app/models/scheduled_task/log.rb
@@ -179,7 +180,6 @@ files:
179
180
  - app/views/scheduled_tasks/status.html.erb
180
181
  - app/views/scheduled_tasks/status_content.html.erb
181
182
  - app/views/tasks_scheduler/_alert.html.erb
182
- - app/views/tasks_scheduler/_navbar.html.erb
183
183
  - app/views/tasks_scheduler_daemon/_daemon.html.erb
184
184
  - app/views/tasks_scheduler_daemon/_logs.html.erb
185
185
  - app/views/tasks_scheduler_daemon/_results.html.erb
@@ -205,9 +205,11 @@ files:
205
205
  - lib/tasks_scheduler/cron_scheduling_validator.rb
206
206
  - lib/tasks_scheduler/daemon.rb
207
207
  - lib/tasks_scheduler/engine.rb
208
+ - lib/tasks_scheduler/info.rb
208
209
  - lib/tasks_scheduler/version.rb
209
210
  - test/dummy/README.rdoc
210
211
  - test/dummy/Rakefile
212
+ - test/dummy/app/assets/config/manifest.js
211
213
  - test/dummy/app/assets/javascripts/application.js
212
214
  - test/dummy/app/assets/stylesheets/application.css
213
215
  - test/dummy/app/controllers/application_controller.rb
@@ -263,7 +265,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
263
265
  - !ruby/object:Gem::Version
264
266
  version: '0'
265
267
  requirements: []
266
- rubygems_version: 3.0.8
268
+ rubygems_version: 3.0.9
267
269
  signing_key:
268
270
  specification_version: 4
269
271
  summary: Scheduler for Rake tasks.
@@ -293,6 +295,7 @@ test_files:
293
295
  - test/dummy/app/views/layouts/application.html.erb
294
296
  - test/dummy/app/controllers/application_controller.rb
295
297
  - test/dummy/app/helpers/application_helper.rb
298
+ - test/dummy/app/assets/config/manifest.js
296
299
  - test/dummy/app/assets/stylesheets/application.css
297
300
  - test/dummy/app/assets/javascripts/application.js
298
301
  - 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>