tasks_scheduler 0.4.0 → 0.4.1

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: 6573b654529a255fe7a822f33662837da3915a7b9a98cdc6e071c19d3143c955
4
- data.tar.gz: 3409022b969859d61f236ed5ddbf1678105ef35bd2cd971d5a172c56c43822b5
3
+ metadata.gz: ca18aa2d0f8df454ae40c0d0c16f2fdc1e9d5694c79f099ceaf03c4192a7f7d1
4
+ data.tar.gz: fbb04491343b8c7c93520502241775fb6887420851a91b81b6870caaa1d43b6c
5
5
  SHA512:
6
- metadata.gz: e93580d187fd4e4ff62faf5ee5b5b0b5ea70b13b11f86f38779327f2bb06f329e46089b3add379cc734a06fd666c7a9edc40156939abc8ffadeb655bd43c6f22
7
- data.tar.gz: cf55f3658eb3df0c1527a219b67a03ce401af2ce22dde55e49b90184b4c4019c21bd2ab0fc3e3a7741cf6a70e4f2ca8c8a8ec6578b3d304bf6efb62ee5c4c079
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
- Dir.chdir(Rails.root) do
81
- spawn_pid = Process.spawn(*params)
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,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'parse-cron'
4
+
3
5
  module TasksScheduler
4
6
  module CronParserPatch
5
7
  class TasksSchedulerTimeSource
@@ -1,31 +1,35 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'open3'
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 execute(action)
10
+ def daemon_command(action)
11
11
  raise "Action not allowed: #{action} (Allowed: #{ACTIONS})" unless ACTIONS.include?(action)
12
12
 
13
- command = ['bundle', 'exec', 'tasks_scheduler', action]
14
- Dir.chdir(Rails.root) do
15
- Open3.popen3(env_args, *command) do |_stdin, stdout, stderr, wait_thr|
16
- { action: action, env_args: env_args.map { |k, v| "#{k}=#{v}" }.join(' | '),
17
- command: command.join(' '), status: wait_thr.value.to_i, stdout: stdout.read,
18
- stderr: stderr.read }
19
- end
20
- end
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 env_args
28
- { 'RAILS_ENV' => Rails.env, ::TasksScheduler::Checker::LOG_ON_FILE_ENV_KEY => '1' }
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
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'active_scaffold'
4
+ require 'js-routes'
5
+
3
6
  module TasksScheduler
4
7
  class Engine < ::Rails::Engine
5
8
  initializer :append_migrations do |app|
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TasksScheduler
4
- VERSION = '0.4.0'
4
+ VERSION = '0.4.1'
5
5
  end
@@ -1,13 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'tasks_scheduler/engine'
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.0
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-03-01 00:00:00.000000000 Z
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