diff --git a/lib/tasks/crono_tasks.rake b/lib/tasks/crono_tasks.rake index 1dfbda7..7cbfff6 100644 --- a/lib/tasks/crono_tasks.rake +++ b/lib/tasks/crono_tasks.rake @@ -1,8 +1,14 @@ +module Crono + def self.load_cronotab + require File.join(Rails.root, Config::CRONOTAB) + end +end + namespace :crono do desc 'Clean unused job stats from DB' task clean: :environment do Crono.scheduler = Crono::Scheduler.new - require File.join(Rails.root, 'config', 'cronotab') + Crono.load_cronotab current_job_ids = Crono.scheduler.jobs.map(&:job_id) Crono::CronoJob.where.not(job_id: current_job_ids).destroy_all end diff --git a/spec/tasks/crono_tasks_spec.rb b/spec/tasks/crono_tasks_spec.rb new file mode 100644 index 0000000..da5ec78 --- /dev/null +++ b/spec/tasks/crono_tasks_spec.rb @@ -0,0 +1,14 @@ +require 'spec_helper' +require 'rake' + +load 'tasks/crono_tasks.rake' +Rake::Task.define_task(:environment) + +describe 'crono:clean' do + it 'should clean unused tasks from DB' do + Crono::CronoJob.create!(job_id: 'used_job') + expect(Crono).to receive(:load_cronotab) + Rake::Task['crono:clean'].invoke + expect(Crono::CronoJob.where(job_id: 'used_job')).not_to exist + end +end