mirror of
https://github.com/plashchynski/crono.git
synced 2026-06-09 00:12:46 +02:00
Add rake task to check cronotab.rb syntax
This commit is contained in:
@@ -1,6 +1,10 @@
|
|||||||
module Crono
|
module Crono
|
||||||
def self.load_cronotab
|
def self.load_cronotab
|
||||||
require File.join(Rails.root, Config::CRONOTAB)
|
cronotab_path = ENV['CRONOTAB'] || (defined?(Rails) &&
|
||||||
|
File.join(Rails.root, cronotab_path))
|
||||||
|
fail 'No cronotab defined' unless cronotab_path
|
||||||
|
puts "Load cronotab #{cronotab_path}"
|
||||||
|
require cronotab_path
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -12,4 +16,11 @@ namespace :crono do
|
|||||||
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
|
||||||
|
|
||||||
|
desc 'Check cronotab.rb syntax'
|
||||||
|
task check: :environment do
|
||||||
|
Crono.scheduler = Crono::Scheduler.new
|
||||||
|
Crono.load_cronotab
|
||||||
|
puts 'Syntax ok'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# This is an example of a bad cronotab for tests
|
||||||
|
|
||||||
|
class TestJob
|
||||||
|
def perform
|
||||||
|
puts 'Test!'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# This is an error, because you can use `on` options with
|
||||||
|
# a period less than 7 days.
|
||||||
|
|
||||||
|
Crono.perform(TestJob).every 5.days, on: :sunday
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# This is an example of a good cronotab for tests
|
||||||
|
|
||||||
|
class TestJob
|
||||||
|
def perform
|
||||||
|
puts 'Test!'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Crono.perform(TestJob).every 5.seconds
|
||||||
@@ -4,11 +4,20 @@ require 'rake'
|
|||||||
load 'tasks/crono_tasks.rake'
|
load 'tasks/crono_tasks.rake'
|
||||||
Rake::Task.define_task(:environment)
|
Rake::Task.define_task(:environment)
|
||||||
|
|
||||||
describe 'crono:clean' do
|
describe 'rake' do
|
||||||
it 'should clean unused tasks from DB' do
|
describe 'crono:clean' do
|
||||||
Crono::CronoJob.create!(job_id: 'used_job')
|
it 'should clean unused tasks from DB' do
|
||||||
expect(Crono).to receive(:load_cronotab)
|
Crono::CronoJob.create!(job_id: 'used_job')
|
||||||
Rake::Task['crono:clean'].invoke
|
ENV['CRONOTAB'] = File.expand_path('../../assets/good_cronotab.rb', __FILE__)
|
||||||
expect(Crono::CronoJob.where(job_id: 'used_job')).not_to exist
|
Rake::Task['crono:clean'].invoke
|
||||||
|
expect(Crono::CronoJob.where(job_id: 'used_job')).not_to exist
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'crono:check' do
|
||||||
|
it 'should check cronotab syntax' do
|
||||||
|
ENV['CRONOTAB'] = File.expand_path('../../assets/bad_cronotab.rb', __FILE__)
|
||||||
|
expect { Rake::Task['crono:check'].invoke }.to raise_error
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ describe Crono::Web do
|
|||||||
let(:app) { Crono::Web }
|
let(:app) { Crono::Web }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
|
Crono::CronoJob.destroy_all
|
||||||
@test_job_id = 'Perform TestJob every 5 seconds'
|
@test_job_id = 'Perform TestJob every 5 seconds'
|
||||||
@test_job_log = 'All runs ok'
|
@test_job_log = 'All runs ok'
|
||||||
@test_job = Crono::CronoJob.create!(
|
@test_job = Crono::CronoJob.create!(
|
||||||
|
|||||||
Reference in New Issue
Block a user