mirror of
https://github.com/plashchynski/crono.git
synced 2026-07-10 23:02:44 +02:00
Write Job#job_log
This commit is contained in:
+14
-2
@@ -1,3 +1,6 @@
|
|||||||
|
require 'stringio'
|
||||||
|
require 'logger'
|
||||||
|
|
||||||
module Crono
|
module Crono
|
||||||
class Job
|
class Job
|
||||||
include Logging
|
include Logging
|
||||||
@@ -5,9 +8,13 @@ module Crono
|
|||||||
attr_accessor :performer
|
attr_accessor :performer
|
||||||
attr_accessor :period
|
attr_accessor :period
|
||||||
attr_accessor :last_performed_at
|
attr_accessor :last_performed_at
|
||||||
|
attr_accessor :job_log
|
||||||
|
attr_accessor :job_logger
|
||||||
|
|
||||||
def initialize(performer, period)
|
def initialize(performer, period)
|
||||||
self.performer, self.period = performer, period
|
self.performer, self.period = performer, period
|
||||||
|
self.job_log = StringIO.new
|
||||||
|
self.job_logger = Logger.new(job_log)
|
||||||
end
|
end
|
||||||
|
|
||||||
def next
|
def next
|
||||||
@@ -24,12 +31,12 @@ module Crono
|
|||||||
end
|
end
|
||||||
|
|
||||||
def perform
|
def perform
|
||||||
logger.info "Perform #{performer}"
|
log "Perform #{performer}"
|
||||||
self.last_performed_at = Time.now
|
self.last_performed_at = Time.now
|
||||||
save
|
save
|
||||||
Thread.new do
|
Thread.new do
|
||||||
performer.new.perform
|
performer.new.perform
|
||||||
logger.info "Finished #{performer} in %.2f seconds" % (Time.now - last_performed_at)
|
log "Finished #{performer} in %.2f seconds" % (Time.now - last_performed_at)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -42,6 +49,11 @@ module Crono
|
|||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
def log(message)
|
||||||
|
logger.info message
|
||||||
|
job_logger.info message
|
||||||
|
end
|
||||||
|
|
||||||
def model
|
def model
|
||||||
@model ||= Crono::CronoJob.find_or_create_by(job_id: job_id)
|
@model ||= Crono::CronoJob.find_or_create_by(job_id: job_id)
|
||||||
end
|
end
|
||||||
|
|||||||
+17
-2
@@ -19,7 +19,7 @@ describe Crono::Job do
|
|||||||
expect(thread).to be_stop
|
expect(thread).to be_stop
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should call Job#save after run" do
|
it "should call Job#save during perform" do
|
||||||
expect(job).to receive(:save)
|
expect(job).to receive(:save)
|
||||||
job.perform.join
|
job.perform.join
|
||||||
job.send(:model).destroy
|
job.send(:model).destroy
|
||||||
@@ -53,10 +53,25 @@ describe Crono::Job do
|
|||||||
job.save
|
job.save
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should load info from DB" do
|
it "should load last_performed_at from DB" do
|
||||||
@job = Crono::Job.new(TestJob, period)
|
@job = Crono::Job.new(TestJob, period)
|
||||||
@job.load
|
@job.load
|
||||||
expect(@job.last_performed_at.utc).to be_eql @saved_last_performed_at.utc
|
expect(@job.last_performed_at.utc).to be_eql @saved_last_performed_at.utc
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "#log" do
|
||||||
|
it "should write log messages to both common and job log" do
|
||||||
|
message = "Test message"
|
||||||
|
expect(job.logger).to receive(:info).with(message)
|
||||||
|
expect(job.job_logger).to receive(:info).with(message)
|
||||||
|
job.send(:log, message)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should write job log to Job#job_log" do
|
||||||
|
message = "Test message"
|
||||||
|
job.send(:log, message)
|
||||||
|
expect(job.job_log.string).to include(message)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user