tasks_scheduler 0.4.0 → 0.4.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 +4 -4
- data/app/models/scheduled_task/checker.rb +5 -2
- data/lib/tasks_scheduler/app_gem.rb +18 -0
- data/lib/tasks_scheduler/cron_parser_patch.rb +2 -0
- data/lib/tasks_scheduler/daemon.rb +16 -12
- data/lib/tasks_scheduler/engine.rb +3 -0
- data/lib/tasks_scheduler/version.rb +1 -1
- data/lib/tasks_scheduler.rb +2 -8
- metadata +43 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca18aa2d0f8df454ae40c0d0c16f2fdc1e9d5694c79f099ceaf03c4192a7f7d1
|
4
|
+
data.tar.gz: fbb04491343b8c7c93520502241775fb6887420851a91b81b6870caaa1d43b6c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cee3492bc93d12703e4836a065426618b7dcbc6cd94d61dd0572577e72f7a7e3825088f6a5c091057c21b5c603d2c98017d1b6fce05bd51214c3d029f159da1e
|
7
|
+
data.tar.gz: f7cd9ac0378b729a54430b814aae529561678471875e3a2d2965a9d3d4aee7d3371940f966b2931cae4fecb33d3f27824ac9172ef7360896758ef1b325a26e1c
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'rake'
|
4
|
+
require 'eac_ruby_utils/ruby'
|
4
5
|
|
5
6
|
class ScheduledTask < ActiveRecord::Base
|
6
7
|
module Checker
|
@@ -77,8 +78,10 @@ class ScheduledTask < ActiveRecord::Base
|
|
77
78
|
params = ['bundle', 'exec', 'tasks_scheduler_run_task', id.to_s]
|
78
79
|
check_log("Spawn command: #{params} (Task: #{task})")
|
79
80
|
spawn_pid = nil
|
80
|
-
|
81
|
-
|
81
|
+
::EacRubyUtils::Ruby.on_clean_environment do
|
82
|
+
Dir.chdir(Rails.root) do
|
83
|
+
spawn_pid = ::Process.spawn(*params)
|
84
|
+
end
|
82
85
|
end
|
83
86
|
Process.detach(spawn_pid)
|
84
87
|
update!(pid: spawn_pid, last_fail_status: nil)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_gems_utils/gem'
|
4
|
+
require 'singleton'
|
5
|
+
|
6
|
+
module TasksScheduler
|
7
|
+
class AppGem < ::SimpleDelegator
|
8
|
+
include ::Singleton
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
super(::EacRubyGemsUtils::Gem.new(::Rails.root))
|
12
|
+
end
|
13
|
+
|
14
|
+
def bundle(*args)
|
15
|
+
super(*args).chdir_root.envvar('RAILS_ENV', ::Rails.env)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -1,31 +1,35 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'tasks_scheduler/app_gem'
|
4
4
|
|
5
5
|
module TasksScheduler
|
6
6
|
class Daemon
|
7
7
|
ACTIONS = %w[status start stop restart].freeze
|
8
8
|
|
9
9
|
class << self
|
10
|
-
def
|
10
|
+
def daemon_command(action)
|
11
11
|
raise "Action not allowed: #{action} (Allowed: #{ACTIONS})" unless ACTIONS.include?(action)
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
13
|
+
::TasksScheduler::AppGem.instance.bundle('exec', 'tasks_scheduler', action)
|
14
|
+
.envvar(::TasksScheduler::Checker::LOG_ON_FILE_ENV_KEY, '1')
|
15
|
+
end
|
16
|
+
|
17
|
+
def execute(action)
|
18
|
+
command = daemon_command(action)
|
19
|
+
result = command.execute
|
20
|
+
{
|
21
|
+
action: action, env_args: env_args_to_s(command), command: command.to_s,
|
22
|
+
status: result.fetch(:exit_code), stdout: result.fetch(:stdout),
|
23
|
+
stderr: result.fetch(:stderr)
|
24
|
+
}
|
21
25
|
end
|
22
26
|
|
23
27
|
def running?
|
24
28
|
execute('status')[:status].zero?
|
25
29
|
end
|
26
30
|
|
27
|
-
def
|
28
|
-
{
|
31
|
+
def env_args_to_s(command)
|
32
|
+
command.send(:extra_options).fetch(:envvars).map { |k, v| "#{k}=#{v}" }.join(' | ')
|
29
33
|
end
|
30
34
|
end
|
31
35
|
end
|
data/lib/tasks_scheduler.rb
CHANGED
@@ -1,13 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require '
|
4
|
-
require 'active_scaffold'
|
5
|
-
require 'js-routes'
|
6
|
-
require 'parse-cron'
|
7
|
-
require 'tasks_scheduler/cron_scheduling_validator'
|
8
|
-
require 'tasks_scheduler/cron_parser_patch'
|
9
|
-
require 'tasks_scheduler/checker'
|
10
|
-
require 'tasks_scheduler/daemon'
|
3
|
+
require 'eac_ruby_utils/require_sub'
|
11
4
|
|
12
5
|
module TasksScheduler
|
6
|
+
::EacRubyUtils.require_sub __FILE__
|
13
7
|
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.4.
|
4
|
+
version: 0.4.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-
|
11
|
+
date: 2020-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_scaffold
|
@@ -38,6 +38,26 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: eac_ruby_gems_utils
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.4'
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 0.4.1
|
51
|
+
type: :runtime
|
52
|
+
prerelease: false
|
53
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - "~>"
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0.4'
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 0.4.1
|
41
61
|
- !ruby/object:Gem::Dependency
|
42
62
|
name: js-routes
|
43
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +100,26 @@ dependencies:
|
|
80
100
|
- - "~>"
|
81
101
|
- !ruby/object:Gem::Version
|
82
102
|
version: 4.2.1
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: eac_ruby_gem_support
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0.1'
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 0.1.1
|
113
|
+
type: :development
|
114
|
+
prerelease: false
|
115
|
+
version_requirements: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0.1'
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: 0.1.1
|
83
123
|
- !ruby/object:Gem::Dependency
|
84
124
|
name: sqlite3
|
85
125
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,6 +182,7 @@ files:
|
|
142
182
|
- exe/tasks_scheduler
|
143
183
|
- exe/tasks_scheduler_run_task
|
144
184
|
- lib/tasks_scheduler.rb
|
185
|
+
- lib/tasks_scheduler/app_gem.rb
|
145
186
|
- lib/tasks_scheduler/checker.rb
|
146
187
|
- lib/tasks_scheduler/checker/log.rb
|
147
188
|
- lib/tasks_scheduler/cron_parser_patch.rb
|