tasks_scheduler 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/tasks_scheduler_daemon_controller.rb +20 -0
- data/app/views/tasks_scheduler_daemon/index.html.erb +3 -0
- data/config/routes.rb +2 -0
- data/lib/tasks_scheduler/checker.rb +19 -3
- data/lib/tasks_scheduler/daemon.rb +4 -10
- data/lib/tasks_scheduler/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48b30c798060f58365bfc12beb93db3972b529d9
|
4
|
+
data.tar.gz: 2b875abb3eb4984f7a3a59590a0911c5cefb48fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f7a07ad30c4510c9318231162c5c1f785ba398ab141e3bca282cac4d7560eca290aa450f1e7d4c181775679587637af36d1e3b0b56ed44d18005cb6304e15d93
|
7
|
+
data.tar.gz: 205d290aef278c20bfa4e57ec279f00ab7d54ff7ded576d8b23221e0aedb87c079175e8fbca9b8391e9e2bdb1d74cd320881f46e5796da6048b81ec6fed05863
|
@@ -10,4 +10,24 @@ class TasksSchedulerDaemonController < ApplicationController
|
|
10
10
|
def running
|
11
11
|
render plain: (::TasksScheduler::Daemon.running? ? 'true' : 'false'), layout: false
|
12
12
|
end
|
13
|
+
|
14
|
+
def download_log
|
15
|
+
if File.exist?(::TasksScheduler::Checker.instance.log_path)
|
16
|
+
send_log_file
|
17
|
+
else
|
18
|
+
redirect_to(tasks_scheduler_daemon_path,
|
19
|
+
notice: "Arquivo \"#{::TasksScheduler::Checker.instance.log_path}\" não existe")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def send_log_file
|
26
|
+
send_file(
|
27
|
+
::TasksScheduler::Checker.instance.log_path,
|
28
|
+
filename: "#{request.base_url.parameterize}_tasks-scheduler_checker-log_" \
|
29
|
+
"#{Time.zone.now.to_s.parameterize}.log",
|
30
|
+
type: 'text/plain'
|
31
|
+
)
|
32
|
+
end
|
13
33
|
end
|
@@ -7,6 +7,9 @@
|
|
7
7
|
<%= safe_join(::TasksScheduler::Daemon::ACTIONS.map do |action|
|
8
8
|
link_to action, execute_tasks_scheduler_daemon_path(action), method: :post
|
9
9
|
end, ' | ') %>
|
10
|
+
<br/>
|
11
|
+
<strong>Log: </strong>
|
12
|
+
<%= link_to 'download', download_log_tasks_scheduler_daemon_path %>
|
10
13
|
</p>
|
11
14
|
<% if @result %>
|
12
15
|
<h3>Results</h3>
|
data/config/routes.rb
CHANGED
@@ -15,4 +15,6 @@ Rails.application.routes.draw do
|
|
15
15
|
to: 'tasks_scheduler_daemon#execute', as: :execute_tasks_scheduler_daemon
|
16
16
|
get '/tasks_scheduler_daemon/running', to: 'tasks_scheduler_daemon#running',
|
17
17
|
as: :running_tasks_scheduler_daemon
|
18
|
+
get '/tasks_scheduler_daemon/download_log', to: 'tasks_scheduler_daemon#download_log',
|
19
|
+
as: :download_log_tasks_scheduler_daemon
|
18
20
|
end
|
@@ -3,12 +3,12 @@ module TasksScheduler
|
|
3
3
|
include Singleton
|
4
4
|
|
5
5
|
CHECK_INTERVAL = 15
|
6
|
+
LOG_ON_FILE_ENV_KEY = 'TASKS_SCHEDULER_LOG_ON_FILE'.freeze
|
6
7
|
|
7
8
|
def run
|
9
|
+
check_log
|
8
10
|
running = true
|
9
|
-
Signal.trap('TERM')
|
10
|
-
running = false
|
11
|
-
end
|
11
|
+
Signal.trap('TERM') { running = false }
|
12
12
|
while running
|
13
13
|
Rails.logger.info('Checking all tasks...')
|
14
14
|
::ScheduledTask.all.each(&:check)
|
@@ -16,5 +16,21 @@ module TasksScheduler
|
|
16
16
|
sleep(CHECK_INTERVAL)
|
17
17
|
end
|
18
18
|
end
|
19
|
+
|
20
|
+
def log_path
|
21
|
+
::Rails.root.join('log', 'tasks_scheduler', 'checker.log')
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def check_log
|
27
|
+
return unless log_on_file?
|
28
|
+
::FileUtils.mkdir_p(File.dirname(log_path))
|
29
|
+
::Rails.logger = ::Logger.new(log_path)
|
30
|
+
end
|
31
|
+
|
32
|
+
def log_on_file?
|
33
|
+
ENV[LOG_ON_FILE_ENV_KEY].present?
|
34
|
+
end
|
19
35
|
end
|
20
36
|
end
|
@@ -5,19 +5,9 @@ module TasksScheduler
|
|
5
5
|
ACTIONS = %w(status start stop restart).freeze
|
6
6
|
|
7
7
|
class << self
|
8
|
-
def run(rails_root)
|
9
|
-
dir = File.expand_path('tmp/pids', rails_root)
|
10
|
-
FileUtils.mkdir_p(dir)
|
11
|
-
Daemons.run_proc 'tasks_scheduler', dir_mode: :normal, dir: dir do
|
12
|
-
require File.join(rails_root, 'config', 'environment')
|
13
|
-
::TasksScheduler::Checker.instance.run
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
8
|
def execute(action)
|
18
9
|
raise "Action not allowed: #{action} (Allowed: #{ACTIONS})" unless ACTIONS.include?(action)
|
19
10
|
command = ['bundle', 'exec', 'tasks_scheduler', action]
|
20
|
-
env_args = { 'RAILS_ENV' => Rails.env }
|
21
11
|
Dir.chdir(Rails.root) do
|
22
12
|
Open3.popen3(env_args, *command) do |_stdin, stdout, stderr, wait_thr|
|
23
13
|
{ action: action, env_args: env_args.map { |k, v| "#{k}=#{v}" }.join(' | '),
|
@@ -30,6 +20,10 @@ module TasksScheduler
|
|
30
20
|
def running?
|
31
21
|
execute('status')[:status].zero?
|
32
22
|
end
|
23
|
+
|
24
|
+
def env_args
|
25
|
+
{ 'RAILS_ENV' => Rails.env, ::TasksScheduler::Checker::LOG_ON_FILE_ENV_KEY => '1' }
|
26
|
+
end
|
33
27
|
end
|
34
28
|
end
|
35
29
|
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.0.
|
4
|
+
version: 0.0.7
|
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:
|
11
|
+
date: 2018-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_scaffold
|