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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 455e3bc8143c47e770a49410d5db8f896eab85fb
4
- data.tar.gz: 3334d0012b0c26ac6f8c6a3a59a2f1f393d5e92d
3
+ metadata.gz: 48b30c798060f58365bfc12beb93db3972b529d9
4
+ data.tar.gz: 2b875abb3eb4984f7a3a59590a0911c5cefb48fc
5
5
  SHA512:
6
- metadata.gz: a9943a9c7ff126b77d906ac2b9ef996c89c51d4494886612b3936c73afb543136e5c280a4a92d60ef5349fa54225c8754947d67ade966553c9d97d1b4d2072c2
7
- data.tar.gz: 96198cd7b08d9e67b801ac05b3594c8d038246d7adbac2ff9c8ac208f6b2f63e19f33ed50c39a2a0c3c9bfeb0a3646af5a76bc4bec92a3e54009abd65883eb25
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') do
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
@@ -1,3 +1,3 @@
1
1
  module TasksScheduler
2
- VERSION = '0.0.6'.freeze
2
+ VERSION = '0.0.7'.freeze
3
3
  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.6
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: 2017-09-08 00:00:00.000000000 Z
11
+ date: 2018-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_scaffold