tasks_scheduler 0.2.3 → 0.3.0
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/controllers/tasks_scheduler_daemon_controller.rb +4 -20
 - data/app/controllers/tasks_scheduler_daemon_controller/_download_log.rb +36 -0
 - data/app/models/scheduled_task.rb +14 -1
 - data/app/models/scheduled_task/checker.rb +4 -2
 - data/app/models/scheduled_task/log.rb +6 -3
 - data/app/views/scheduled_tasks/status_content.html.erb +1 -0
 - data/app/views/tasks_scheduler_daemon/_daemon.html.erb +11 -0
 - data/app/views/tasks_scheduler_daemon/_logs.html.erb +12 -0
 - data/app/views/tasks_scheduler_daemon/_results.html.erb +9 -0
 - data/app/views/tasks_scheduler_daemon/_running_status.html.erb +0 -1
 - data/app/views/tasks_scheduler_daemon/index.html.erb +3 -20
 - data/config/routes.rb +2 -2
 - data/lib/tasks_scheduler/checker.rb +19 -3
 - data/lib/tasks_scheduler/checker/log.rb +32 -0
 - data/lib/tasks_scheduler/version.rb +1 -1
 - metadata +7 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 89877b670ebd68e63175333d60bce49d90de7c4e04737189f5c73a6a277f0595
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 18d4d5224dcabd9dd2238d0cc8a5dea03689d58323de808b5bb4622664a2cc01
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 6bb72a00e15bd394f6baa9cbae395e8737295ff72f1177315fd15937b2b60189901b7db0cfe3c2b7b9daf08599023c694558231539d1f6e2b92ea4f6fd0bd2a4
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 766a81812effee371317d38ee615e0e5b57400abac7d6a376a6a5971bc98fc301bdca3e03dbfa3c8f1d3f1c7903ddbdf479fc7b89451292880c386c813311b69
         
     | 
| 
         @@ -1,4 +1,8 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'tasks_scheduler/checker'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       1 
3 
     | 
    
         
             
            class TasksSchedulerDaemonController < ApplicationController
         
     | 
| 
      
 4 
     | 
    
         
            +
              require_relative 'tasks_scheduler_daemon_controller/_download_log'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
       2 
6 
     | 
    
         
             
              def index
         
     | 
| 
       3 
7 
     | 
    
         
             
              end
         
     | 
| 
       4 
8 
     | 
    
         | 
| 
         @@ -11,24 +15,4 @@ class TasksSchedulerDaemonController < ApplicationController 
     | 
|
| 
       11 
15 
     | 
    
         
             
                render json: { daemon_running: ::TasksScheduler::Daemon.running?,
         
     | 
| 
       12 
16 
     | 
    
         
             
                               tasks_all_ok: !::ScheduledTask.all.any?(&:failed?) }
         
     | 
| 
       13 
17 
     | 
    
         
             
              end
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
              def download_log
         
     | 
| 
       16 
     | 
    
         
            -
                if File.exist?(::TasksScheduler::Checker.instance.log_path)
         
     | 
| 
       17 
     | 
    
         
            -
                  send_log_file
         
     | 
| 
       18 
     | 
    
         
            -
                else
         
     | 
| 
       19 
     | 
    
         
            -
                  redirect_to(tasks_scheduler_daemon_path,
         
     | 
| 
       20 
     | 
    
         
            -
                              notice: "Arquivo \"#{::TasksScheduler::Checker.instance.log_path}\" não existe")
         
     | 
| 
       21 
     | 
    
         
            -
                end
         
     | 
| 
       22 
     | 
    
         
            -
              end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
              private
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
              def send_log_file
         
     | 
| 
       27 
     | 
    
         
            -
                send_file(
         
     | 
| 
       28 
     | 
    
         
            -
                  ::TasksScheduler::Checker.instance.log_path,
         
     | 
| 
       29 
     | 
    
         
            -
                  filename: "#{request.base_url.parameterize}_tasks-scheduler_checker-log_" \
         
     | 
| 
       30 
     | 
    
         
            -
                    "#{Time.zone.now.to_s.parameterize}.log",
         
     | 
| 
       31 
     | 
    
         
            -
                  type: 'text/plain'
         
     | 
| 
       32 
     | 
    
         
            -
                )
         
     | 
| 
       33 
     | 
    
         
            -
              end
         
     | 
| 
       34 
18 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,36 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class TasksSchedulerDaemonController < ApplicationController
         
     | 
| 
      
 2 
     | 
    
         
            +
              def download_log
         
     | 
| 
      
 3 
     | 
    
         
            +
                return unless download_log_validate_log_key
         
     | 
| 
      
 4 
     | 
    
         
            +
                log = ::TasksScheduler::Checker.instance.send("#{download_log_key}_log")
         
     | 
| 
      
 5 
     | 
    
         
            +
                return unless download_log_validate_log_exist(log)
         
     | 
| 
      
 6 
     | 
    
         
            +
                send_log_file(log)
         
     | 
| 
      
 7 
     | 
    
         
            +
              end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              private
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              def download_log_key
         
     | 
| 
      
 12 
     | 
    
         
            +
                params[:log_key]
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              def download_log_validate_log_key
         
     | 
| 
      
 16 
     | 
    
         
            +
                return true if ::TasksScheduler::Checker::LOGS_KEYS.include?(download_log_key)
         
     | 
| 
      
 17 
     | 
    
         
            +
                redirect_to(tasks_scheduler_daemon_path,
         
     | 
| 
      
 18 
     | 
    
         
            +
                            notice: "Invalid log key: \"#{download_log_key}\"")
         
     | 
| 
      
 19 
     | 
    
         
            +
                false
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
              def download_log_validate_log_exist(log)
         
     | 
| 
      
 23 
     | 
    
         
            +
                return true if log.exist?
         
     | 
| 
      
 24 
     | 
    
         
            +
                redirect_to(tasks_scheduler_daemon_path, notice: "Log \"#{log.key}\" does not exist.")
         
     | 
| 
      
 25 
     | 
    
         
            +
                false
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              def send_log_file(log)
         
     | 
| 
      
 29 
     | 
    
         
            +
                send_file(
         
     | 
| 
      
 30 
     | 
    
         
            +
                  log.path,
         
     | 
| 
      
 31 
     | 
    
         
            +
                  filename: "#{request.base_url.parameterize}_tasks-scheduler_checker-log_" \
         
     | 
| 
      
 32 
     | 
    
         
            +
                    "#{Time.zone.now.to_s.parameterize}.log",
         
     | 
| 
      
 33 
     | 
    
         
            +
                  type: 'text/plain'
         
     | 
| 
      
 34 
     | 
    
         
            +
                )
         
     | 
| 
      
 35 
     | 
    
         
            +
              end
         
     | 
| 
      
 36 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -37,9 +37,11 @@ class ScheduledTask < ActiveRecord::Base 
     | 
|
| 
       37 
37 
     | 
    
         
             
              LAST_FAIL_STATUSES = [STATUS_FAILED, STATUS_ABORTED, STATUS_TIMEOUT]
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
       39 
39 
     | 
    
         
             
              validates :scheduling, presence: true, 'tasks_scheduler/cron_scheduling': true
         
     | 
| 
       40 
     | 
    
         
            -
              validates :task, presence: true 
     | 
| 
      
 40 
     | 
    
         
            +
              validates :task, presence: true
         
     | 
| 
       41 
41 
     | 
    
         
             
              validates :last_fail_status, allow_blank: true, inclusion: { in: LAST_FAIL_STATUSES }
         
     | 
| 
       42 
42 
     | 
    
         | 
| 
      
 43 
     | 
    
         
            +
              validate :validate_task
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
       43 
45 
     | 
    
         
             
              LOG_RUNNING = 'running'
         
     | 
| 
       44 
46 
     | 
    
         
             
              LOG_SUCCESSFUL = 'successful'
         
     | 
| 
       45 
47 
     | 
    
         
             
              LOG_UNSUCCESSFUL = 'unsuccessful'
         
     | 
| 
         @@ -76,4 +78,15 @@ class ScheduledTask < ActiveRecord::Base 
     | 
|
| 
       76 
78 
     | 
    
         
             
              rescue
         
     | 
| 
       77 
79 
     | 
    
         
             
                raise "Unable to determine status for #{pid}"
         
     | 
| 
       78 
80 
     | 
    
         
             
              end
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
              def task_exist?
         
     | 
| 
      
 83 
     | 
    
         
            +
                self.class.rake_tasks.include?(task)
         
     | 
| 
      
 84 
     | 
    
         
            +
              end
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
              def validate_task
         
     | 
| 
      
 87 
     | 
    
         
            +
                return if task.blank?
         
     | 
| 
      
 88 
     | 
    
         
            +
                return unless task_changed?
         
     | 
| 
      
 89 
     | 
    
         
            +
                return if self.class.rake_tasks.include?(task)
         
     | 
| 
      
 90 
     | 
    
         
            +
                errors.add(:task, "Task \"#{task}\" not found")
         
     | 
| 
      
 91 
     | 
    
         
            +
              end
         
     | 
| 
       79 
92 
     | 
    
         
             
            end
         
     | 
| 
         @@ -60,7 +60,9 @@ class ScheduledTask < ActiveRecord::Base 
     | 
|
| 
       60 
60 
     | 
    
         
             
                end
         
     | 
| 
       61 
61 
     | 
    
         | 
| 
       62 
62 
     | 
    
         
             
                def check_task_with_next_run
         
     | 
| 
       63 
     | 
    
         
            -
                  if  
     | 
| 
      
 63 
     | 
    
         
            +
                  if !task_exist?
         
     | 
| 
      
 64 
     | 
    
         
            +
                    check_log("Task does not exist: #{task}")
         
     | 
| 
      
 65 
     | 
    
         
            +
                  elsif next_run < Time.zone.now
         
     | 
| 
       64 
66 
     | 
    
         
             
                    check_log('Next run reached. Running...')
         
     | 
| 
       65 
67 
     | 
    
         
             
                    spawn_task
         
     | 
| 
       66 
68 
     | 
    
         
             
                  else
         
     | 
| 
         @@ -70,7 +72,7 @@ class ScheduledTask < ActiveRecord::Base 
     | 
|
| 
       70 
72 
     | 
    
         | 
| 
       71 
73 
     | 
    
         
             
                def spawn_task
         
     | 
| 
       72 
74 
     | 
    
         
             
                  params = ['bundle', 'exec', 'tasks_scheduler_run_task', id.to_s]
         
     | 
| 
       73 
     | 
    
         
            -
                  check_log("Spawn command: #{params}")
         
     | 
| 
      
 75 
     | 
    
         
            +
                  check_log("Spawn command: #{params} (Task: #{task})")
         
     | 
| 
       74 
76 
     | 
    
         
             
                  spawn_pid = nil
         
     | 
| 
       75 
77 
     | 
    
         
             
                  Dir.chdir(Rails.root) do
         
     | 
| 
       76 
78 
     | 
    
         
             
                    spawn_pid = Process.spawn(*params)
         
     | 
| 
         @@ -23,9 +23,12 @@ class ScheduledTask < ActiveRecord::Base 
     | 
|
| 
       23 
23 
     | 
    
         
             
                end
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
25 
     | 
    
         
             
                def log_on_end(exception)
         
     | 
| 
       26 
     | 
    
         
            -
                   
     | 
| 
       27 
     | 
    
         
            -
                   
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
      
 26 
     | 
    
         
            +
                  running_log = log_file(LOG_RUNNING)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  if ::File.exist?(running_log)
         
     | 
| 
      
 28 
     | 
    
         
            +
                    target_log = exception ? log_file(LOG_UNSUCCESSFUL) : log_file(LOG_SUCCESSFUL)
         
     | 
| 
      
 29 
     | 
    
         
            +
                    File.unlink(target_log) if File.exist?(target_log)
         
     | 
| 
      
 30 
     | 
    
         
            +
                    File.rename(running_log, target_log)
         
     | 
| 
      
 31 
     | 
    
         
            +
                  end
         
     | 
| 
       29 
32 
     | 
    
         
             
                end
         
     | 
| 
       30 
33 
     | 
    
         
             
              end
         
     | 
| 
       31 
34 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <h3>Daemon</h3>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <p>
         
     | 
| 
      
 3 
     | 
    
         
            +
              <strong>Status: </strong>
         
     | 
| 
      
 4 
     | 
    
         
            +
              <%= render partial: '/tasks_scheduler_daemon/running_status' %>
         
     | 
| 
      
 5 
     | 
    
         
            +
              <br/>
         
     | 
| 
      
 6 
     | 
    
         
            +
              <strong>Actions: </strong>
         
     | 
| 
      
 7 
     | 
    
         
            +
              <%= safe_join(::TasksScheduler::Daemon::ACTIONS.map do |action|
         
     | 
| 
      
 8 
     | 
    
         
            +
                  link_to action, execute_tasks_scheduler_daemon_path(action), method: :post
         
     | 
| 
      
 9 
     | 
    
         
            +
                  end, ' | ') %>
         
     | 
| 
      
 10 
     | 
    
         
            +
              <br/>
         
     | 
| 
      
 11 
     | 
    
         
            +
            </p>
         
     | 
| 
         @@ -0,0 +1,12 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <h3>Logs</h3>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <ul>
         
     | 
| 
      
 3 
     | 
    
         
            +
              <% ::TasksScheduler::Checker.instance.logs.each do |log| %>
         
     | 
| 
      
 4 
     | 
    
         
            +
                <li>
         
     | 
| 
      
 5 
     | 
    
         
            +
                  <% if log.exist? %>
         
     | 
| 
      
 6 
     | 
    
         
            +
                    <%= link_to log.key, download_log_tasks_scheduler_daemon_path(log.key) %>
         
     | 
| 
      
 7 
     | 
    
         
            +
                  <% else %>
         
     | 
| 
      
 8 
     | 
    
         
            +
                    <span style="color: grey" title='Log "<%= log.key %>" does not exist.'><%= log.key %></span>
         
     | 
| 
      
 9 
     | 
    
         
            +
                  <% end %>
         
     | 
| 
      
 10 
     | 
    
         
            +
                </li>
         
     | 
| 
      
 11 
     | 
    
         
            +
              <% end %>
         
     | 
| 
      
 12 
     | 
    
         
            +
            </ul>
         
     | 
| 
         @@ -1,22 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            <%= render partial: '/tasks_scheduler/navbar' %>
         
     | 
| 
       2 
2 
     | 
    
         
             
            <h2><%= I18n.t(:tasks_scheduler_daemon) %></h2>
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              <strong>Actions: </strong>
         
     | 
| 
       7 
     | 
    
         
            -
              <%= safe_join(::TasksScheduler::Daemon::ACTIONS.map do |action|
         
     | 
| 
       8 
     | 
    
         
            -
                  link_to action, execute_tasks_scheduler_daemon_path(action), method: :post
         
     | 
| 
       9 
     | 
    
         
            -
                end, ' | ') %>
         
     | 
| 
       10 
     | 
    
         
            -
              <br/>
         
     | 
| 
       11 
     | 
    
         
            -
              <strong>Log: </strong>
         
     | 
| 
       12 
     | 
    
         
            -
              <%= link_to 'download', download_log_tasks_scheduler_daemon_path %>
         
     | 
| 
       13 
     | 
    
         
            -
            </p>
         
     | 
| 
       14 
     | 
    
         
            -
            <% if @result %>
         
     | 
| 
       15 
     | 
    
         
            -
              <h3>Results</h3>
         
     | 
| 
       16 
     | 
    
         
            -
              <dl>
         
     | 
| 
       17 
     | 
    
         
            -
                <% @result.each do |k, v| %>
         
     | 
| 
       18 
     | 
    
         
            -
                  <dt><%= k %></dt>
         
     | 
| 
       19 
     | 
    
         
            -
                  <dd><%= v.present? ? v : '-' %></dd>
         
     | 
| 
       20 
     | 
    
         
            -
                <% end %>
         
     | 
| 
       21 
     | 
    
         
            -
              </dl>
         
     | 
| 
       22 
     | 
    
         
            -
            <% end %>
         
     | 
| 
      
 3 
     | 
    
         
            +
            <%= render partial: 'daemon', locals: {status_label: 'Status:'} %>
         
     | 
| 
      
 4 
     | 
    
         
            +
            <%= render partial: 'logs' %>
         
     | 
| 
      
 5 
     | 
    
         
            +
            <%= render partial: 'results' %>
         
     | 
    
        data/config/routes.rb
    CHANGED
    
    | 
         @@ -15,6 +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/status', to: 'tasks_scheduler_daemon#status',
         
     | 
| 
       17 
17 
     | 
    
         
             
                                                    as: :status_tasks_scheduler_daemon
         
     | 
| 
       18 
     | 
    
         
            -
              get '/tasks_scheduler_daemon/download_log', to: 'tasks_scheduler_daemon#download_log',
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 18 
     | 
    
         
            +
              get '/tasks_scheduler_daemon/download_log/:log_key', to: 'tasks_scheduler_daemon#download_log',
         
     | 
| 
      
 19 
     | 
    
         
            +
                                                                   as: :download_log_tasks_scheduler_daemon
         
     | 
| 
       20 
20 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,9 +1,12 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'tasks_scheduler/checker/log'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       1 
3 
     | 
    
         
             
            module TasksScheduler
         
     | 
| 
       2 
4 
     | 
    
         
             
              class Checker
         
     | 
| 
       3 
5 
     | 
    
         
             
                include Singleton
         
     | 
| 
       4 
6 
     | 
    
         | 
| 
       5 
7 
     | 
    
         
             
                CHECK_INTERVAL = 15
         
     | 
| 
       6 
8 
     | 
    
         
             
                LOG_ON_FILE_ENV_KEY = 'TASKS_SCHEDULER_LOG_ON_FILE'.freeze
         
     | 
| 
      
 9 
     | 
    
         
            +
                LOGS_KEYS = %w(rails stdout stderr).freeze
         
     | 
| 
       7 
10 
     | 
    
         | 
| 
       8 
11 
     | 
    
         
             
                def run
         
     | 
| 
       9 
12 
     | 
    
         
             
                  check_log
         
     | 
| 
         @@ -18,15 +21,28 @@ module TasksScheduler 
     | 
|
| 
       18 
21 
     | 
    
         
             
                end
         
     | 
| 
       19 
22 
     | 
    
         | 
| 
       20 
23 
     | 
    
         
             
                def log_path
         
     | 
| 
       21 
     | 
    
         
            -
                   
     | 
| 
      
 24 
     | 
    
         
            +
                  rais_log.path
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                def logs
         
     | 
| 
      
 28 
     | 
    
         
            +
                  LOGS_KEYS.map { |key| send("#{key}_log") }
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                LOGS_KEYS.each do |log_key|
         
     | 
| 
      
 32 
     | 
    
         
            +
                  class_eval <<CODE, __FILE__, __LINE__ + 1
         
     | 
| 
      
 33 
     | 
    
         
            +
                  def #{log_key}_log
         
     | 
| 
      
 34 
     | 
    
         
            +
                    @#{log_key}_log ||= ::TasksScheduler::Checker::Log.new('#{log_key}')
         
     | 
| 
      
 35 
     | 
    
         
            +
                  end
         
     | 
| 
      
 36 
     | 
    
         
            +
            CODE
         
     | 
| 
       22 
37 
     | 
    
         
             
                end
         
     | 
| 
       23 
38 
     | 
    
         | 
| 
       24 
39 
     | 
    
         
             
                private
         
     | 
| 
       25 
40 
     | 
    
         | 
| 
       26 
41 
     | 
    
         
             
                def check_log
         
     | 
| 
       27 
42 
     | 
    
         
             
                  return unless log_on_file?
         
     | 
| 
       28 
     | 
    
         
            -
                  :: 
     | 
| 
       29 
     | 
    
         
            -
                   
     | 
| 
      
 43 
     | 
    
         
            +
                  ::Rails.logger = ::Logger.new(rails_log.path)
         
     | 
| 
      
 44 
     | 
    
         
            +
                  $stdout.reopen(stdout_log.path, 'w')
         
     | 
| 
      
 45 
     | 
    
         
            +
                  $stderr.reopen(stderr_log.path, 'w')
         
     | 
| 
       30 
46 
     | 
    
         
             
                end
         
     | 
| 
       31 
47 
     | 
    
         | 
| 
       32 
48 
     | 
    
         
             
                def log_on_file?
         
     | 
| 
         @@ -0,0 +1,32 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'fileutils'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module TasksScheduler
         
     | 
| 
      
 4 
     | 
    
         
            +
              class Checker
         
     | 
| 
      
 5 
     | 
    
         
            +
                class Log
         
     | 
| 
      
 6 
     | 
    
         
            +
                  class << self
         
     | 
| 
      
 7 
     | 
    
         
            +
                    def logs_directory
         
     | 
| 
      
 8 
     | 
    
         
            +
                      @logs_directory ||= ::Rails.root.join('log', 'tasks_scheduler', 'checker')
         
     | 
| 
      
 9 
     | 
    
         
            +
                    end
         
     | 
| 
      
 10 
     | 
    
         
            +
                  end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                  attr_reader :key
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                  def initialize(key)
         
     | 
| 
      
 15 
     | 
    
         
            +
                    @key = key
         
     | 
| 
      
 16 
     | 
    
         
            +
                    ::FileUtils.mkdir_p(dirname)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                  def dirname
         
     | 
| 
      
 20 
     | 
    
         
            +
                    ::File.dirname(path)
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                  def exist?
         
     | 
| 
      
 24 
     | 
    
         
            +
                    ::File.exist?(path)
         
     | 
| 
      
 25 
     | 
    
         
            +
                  end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                  def path
         
     | 
| 
      
 28 
     | 
    
         
            +
                    self.class.logs_directory.join("#{key}.log")
         
     | 
| 
      
 29 
     | 
    
         
            +
                  end
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
              end
         
     | 
| 
      
 32 
     | 
    
         
            +
            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 
     | 
    
         
            +
              version: 0.3.0
         
     | 
| 
       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: 2019- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2019-08-19 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: active_scaffold
         
     | 
| 
         @@ -111,6 +111,7 @@ files: 
     | 
|
| 
       111 
111 
     | 
    
         
             
            - app/assets/stylesheets/tasks_scheduler/alert.scss
         
     | 
| 
       112 
112 
     | 
    
         
             
            - app/controllers/scheduled_tasks_controller.rb
         
     | 
| 
       113 
113 
     | 
    
         
             
            - app/controllers/tasks_scheduler_daemon_controller.rb
         
     | 
| 
      
 114 
     | 
    
         
            +
            - app/controllers/tasks_scheduler_daemon_controller/_download_log.rb
         
     | 
| 
       114 
115 
     | 
    
         
             
            - app/helpers/scheduled_tasks_helper.rb
         
     | 
| 
       115 
116 
     | 
    
         
             
            - app/models/scheduled_task.rb
         
     | 
| 
       116 
117 
     | 
    
         
             
            - app/models/scheduled_task/checker.rb
         
     | 
| 
         @@ -123,6 +124,9 @@ files: 
     | 
|
| 
       123 
124 
     | 
    
         
             
            - app/views/scheduled_tasks/status_content.html.erb
         
     | 
| 
       124 
125 
     | 
    
         
             
            - app/views/tasks_scheduler/_alert.html.erb
         
     | 
| 
       125 
126 
     | 
    
         
             
            - app/views/tasks_scheduler/_navbar.html.erb
         
     | 
| 
      
 127 
     | 
    
         
            +
            - app/views/tasks_scheduler_daemon/_daemon.html.erb
         
     | 
| 
      
 128 
     | 
    
         
            +
            - app/views/tasks_scheduler_daemon/_logs.html.erb
         
     | 
| 
      
 129 
     | 
    
         
            +
            - app/views/tasks_scheduler_daemon/_results.html.erb
         
     | 
| 
       126 
130 
     | 
    
         
             
            - app/views/tasks_scheduler_daemon/_running_status.html.erb
         
     | 
| 
       127 
131 
     | 
    
         
             
            - app/views/tasks_scheduler_daemon/index.html.erb
         
     | 
| 
       128 
132 
     | 
    
         
             
            - config/initializers/assets.rb
         
     | 
| 
         @@ -139,6 +143,7 @@ files: 
     | 
|
| 
       139 
143 
     | 
    
         
             
            - exe/tasks_scheduler_run_task
         
     | 
| 
       140 
144 
     | 
    
         
             
            - lib/tasks_scheduler.rb
         
     | 
| 
       141 
145 
     | 
    
         
             
            - lib/tasks_scheduler/checker.rb
         
     | 
| 
      
 146 
     | 
    
         
            +
            - lib/tasks_scheduler/checker/log.rb
         
     | 
| 
       142 
147 
     | 
    
         
             
            - lib/tasks_scheduler/cron_parser_patch.rb
         
     | 
| 
       143 
148 
     | 
    
         
             
            - lib/tasks_scheduler/cron_scheduling_validator.rb
         
     | 
| 
       144 
149 
     | 
    
         
             
            - lib/tasks_scheduler/daemon.rb
         
     |