mirror of
https://github.com/plashchynski/crono.git
synced 2026-04-25 02:08:43 +02:00
Add Crono::Cronotab to process cronotab
This commit is contained in:
@@ -10,6 +10,7 @@ require 'crono/job'
|
|||||||
require 'crono/scheduler'
|
require 'crono/scheduler'
|
||||||
require 'crono/config'
|
require 'crono/config'
|
||||||
require 'crono/performer_proxy'
|
require 'crono/performer_proxy'
|
||||||
|
require 'crono/cronotab'
|
||||||
require 'crono/orm/active_record/crono_job'
|
require 'crono/orm/active_record/crono_job'
|
||||||
require 'crono/railtie' if defined?(Rails)
|
require 'crono/railtie' if defined?(Rails)
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ module Crono
|
|||||||
|
|
||||||
write_pid
|
write_pid
|
||||||
load_rails
|
load_rails
|
||||||
|
Cronotab.process(File.expand_path(config.cronotab))
|
||||||
print_banner
|
print_banner
|
||||||
|
|
||||||
check_jobs
|
check_jobs
|
||||||
@@ -71,7 +72,6 @@ module Crono
|
|||||||
require 'rails'
|
require 'rails'
|
||||||
require File.expand_path('config/environment.rb')
|
require File.expand_path('config/environment.rb')
|
||||||
::Rails.application.eager_load!
|
::Rails.application.eager_load!
|
||||||
require File.expand_path(config.cronotab)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_jobs
|
def check_jobs
|
||||||
|
|||||||
10
lib/crono/cronotab.rb
Normal file
10
lib/crono/cronotab.rb
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
module Crono
|
||||||
|
class Cronotab
|
||||||
|
def self.process(cronotab_path = nil)
|
||||||
|
cronotab_path ||= ENV['CRONOTAB'] || (defined?(Rails) &&
|
||||||
|
File.join(Rails.root, Config::CRONOTAB))
|
||||||
|
fail 'No cronotab defined' unless cronotab_path
|
||||||
|
require cronotab_path
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -1,18 +1,8 @@
|
|||||||
module Crono
|
|
||||||
def self.load_cronotab
|
|
||||||
cronotab_path = ENV['CRONOTAB'] || (defined?(Rails) &&
|
|
||||||
File.join(Rails.root, Config::CRONOTAB))
|
|
||||||
fail 'No cronotab defined' unless cronotab_path
|
|
||||||
puts "Load cronotab #{cronotab_path}"
|
|
||||||
require cronotab_path
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
namespace :crono do
|
namespace :crono do
|
||||||
desc 'Clean unused job stats from DB'
|
desc 'Clean unused job stats from DB'
|
||||||
task clean: :environment do
|
task clean: :environment do
|
||||||
Crono.scheduler = Crono::Scheduler.new
|
Crono.scheduler = Crono::Scheduler.new
|
||||||
Crono.load_cronotab
|
Crono::Cronotab.process
|
||||||
current_job_ids = Crono.scheduler.jobs.map(&:job_id)
|
current_job_ids = Crono.scheduler.jobs.map(&:job_id)
|
||||||
Crono::CronoJob.where.not(job_id: current_job_ids).destroy_all
|
Crono::CronoJob.where.not(job_id: current_job_ids).destroy_all
|
||||||
end
|
end
|
||||||
@@ -20,7 +10,7 @@ namespace :crono do
|
|||||||
desc 'Check cronotab.rb syntax'
|
desc 'Check cronotab.rb syntax'
|
||||||
task check: :environment do
|
task check: :environment do
|
||||||
Crono.scheduler = Crono::Scheduler.new
|
Crono.scheduler = Crono::Scheduler.new
|
||||||
Crono.load_cronotab
|
Crono::Cronotab.process
|
||||||
puts 'Syntax ok'
|
puts 'Syntax ok'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
20
spec/cronotab_spec.rb
Normal file
20
spec/cronotab_spec.rb
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe Crono::Cronotab do
|
||||||
|
describe '#process' do
|
||||||
|
it 'should load cronotab file' do
|
||||||
|
cronotab_path = File.expand_path('../assets/good_cronotab.rb', __FILE__)
|
||||||
|
expect(Crono.scheduler).to receive(:add_job).with(kind_of(Crono::Job))
|
||||||
|
expect {
|
||||||
|
Crono::Cronotab.process(cronotab_path)
|
||||||
|
}.to_not raise_error
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should raise error when cronotab is invalid' do
|
||||||
|
cronotab_path = File.expand_path('../assets/bad_cronotab.rb', __FILE__)
|
||||||
|
expect {
|
||||||
|
Crono::Cronotab.process(cronotab_path)
|
||||||
|
}.to raise_error
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user