From 2c78115ce7970d59677970e0a7e52eb65bb34e44 Mon Sep 17 00:00:00 2001 From: Dzmitry Plashchynski Date: Tue, 3 Mar 2015 14:36:00 +0200 Subject: [PATCH] Add CLI#run_job --- lib/crono/cli.rb | 12 ++++++++++++ spec/cli_spec.rb | 11 +++++++++++ spec/performer_proxy_spec.rb | 3 +-- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/lib/crono/cli.rb b/lib/crono/cli.rb index 6667e46..747e2e2 100644 --- a/lib/crono/cli.rb +++ b/lib/crono/cli.rb @@ -7,8 +7,10 @@ module Crono def run load_rails print_banner + # start_working_loop end + private def print_banner puts "Loading Crono #{Crono::VERSION}" puts "Running in #{RUBY_DESCRIPTION}" @@ -19,5 +21,15 @@ module Crono require File.expand_path("config/environment.rb") ::Rails.application.eager_load! end + + def run_job(klass) + Thread.new { klass.new.perform } + end + + def start_working_loop + Config.instance.schedule.each do |klass, period| + run_job(klass) + end + end end end diff --git a/spec/cli_spec.rb b/spec/cli_spec.rb index 1e8364a..7d4197d 100644 --- a/spec/cli_spec.rb +++ b/spec/cli_spec.rb @@ -1,6 +1,10 @@ require "spec_helper" require 'crono/cli' +class TestJob + def perform;end +end + describe Crono::CLI do let(:cli) { Crono::CLI.instance } @@ -10,4 +14,11 @@ describe Crono::CLI do cli.run end end + + describe "#run_job" do + it "should run job in separate thread" do + thread = cli.send(:run_job, TestJob).join + expect(thread).to be_stop + end + end end diff --git a/spec/performer_proxy_spec.rb b/spec/performer_proxy_spec.rb index aa83d02..c38534c 100644 --- a/spec/performer_proxy_spec.rb +++ b/spec/performer_proxy_spec.rb @@ -1,7 +1,6 @@ require "spec_helper" -require "active_job" -class TestJob < ActiveJob::Base +class TestJob def perform;end end