From 283dd446a3b0eded9b572c59f48dfa4aab3d053e Mon Sep 17 00:00:00 2001 From: Dzmitry Plashchynski Date: Mon, 2 Mar 2015 20:28:13 +0200 Subject: [PATCH] add config class and schedule --- lib/periodicity.rb | 2 +- lib/periodicity/cli.rb | 1 + lib/periodicity/config.rb | 11 +++++++++++ lib/periodicity/extensions/active_job.rb | 2 +- spec/config_spec.rb | 10 ++++++++++ spec/extensions/active_job_spec.rb | 16 ++++++++++++++++ spec/spec_helper.rb | 1 + 7 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 lib/periodicity/config.rb create mode 100644 spec/config_spec.rb create mode 100644 spec/extensions/active_job_spec.rb diff --git a/lib/periodicity.rb b/lib/periodicity.rb index 68b806f..0351704 100644 --- a/lib/periodicity.rb +++ b/lib/periodicity.rb @@ -4,7 +4,7 @@ end require "active_support/all" require "periodicity/version.rb" require "periodicity/period.rb" - +require "periodicity/config.rb" require 'periodicity/extensions/active_job' require "periodicity/rails.rb" if defined?(::Rails::Engine) require "periodicity/cli.rb" diff --git a/lib/periodicity/cli.rb b/lib/periodicity/cli.rb index 8f9569e..be6bd86 100644 --- a/lib/periodicity/cli.rb +++ b/lib/periodicity/cli.rb @@ -1,4 +1,5 @@ module Periodicity class Cli + end end diff --git a/lib/periodicity/config.rb b/lib/periodicity/config.rb new file mode 100644 index 0000000..741c61f --- /dev/null +++ b/lib/periodicity/config.rb @@ -0,0 +1,11 @@ +module Periodicity + class Config + include Singleton + + attr_accessor :schedule + + def initialize + self.schedule = [] + end + end +end diff --git a/lib/periodicity/extensions/active_job.rb b/lib/periodicity/extensions/active_job.rb index 81a2835..fdb9193 100644 --- a/lib/periodicity/extensions/active_job.rb +++ b/lib/periodicity/extensions/active_job.rb @@ -2,7 +2,7 @@ module Periodicity module Extensions module ActiveJob def perform_every(period, *args) - @period = Period.new(period, *args) + Config.instance.schedule += [self, Period.new(period, *args)] end end end diff --git a/spec/config_spec.rb b/spec/config_spec.rb new file mode 100644 index 0000000..415c030 --- /dev/null +++ b/spec/config_spec.rb @@ -0,0 +1,10 @@ +require "spec_helper" + +describe Periodicity::Config do + describe "#initialize" do + it "should initialize schedule with an empty array" do + @config = Periodicity::Config.instance + expect(@config.schedule).to eql([]) + end + end +end diff --git a/spec/extensions/active_job_spec.rb b/spec/extensions/active_job_spec.rb new file mode 100644 index 0000000..44a5127 --- /dev/null +++ b/spec/extensions/active_job_spec.rb @@ -0,0 +1,16 @@ +require "spec_helper" + +class TestJob < ActiveJob::Base + def perform;end +end + +TestJob.extend(Periodicity::Extensions::ActiveJob) + +describe Periodicity::Extensions::ActiveJob do + describe "#perform_every" do + it "should add job and period to schedule" do + TestJob.perform_every(1.second) + expect(Periodicity::Config.instance.schedule).to_not be_empty + end + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 2c822b8..6f68c42 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,6 +1,7 @@ require 'bundler/setup' Bundler.setup +require 'active_job' require 'timecop' require 'periodicity'