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 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