rails timezone support

This commit is contained in:
haoxilu
2017-02-24 09:05:43 +08:00
parent a7488df85b
commit 258052b852
7 changed files with 34 additions and 32 deletions

View File

@@ -22,7 +22,7 @@ module Crono
parse_options(ARGV)
parse_command(ARGV)
setup_log
setup_log
write_pid unless config.daemonize
load_rails
@@ -120,7 +120,7 @@ module Crono
def start_working_loop
loop do
next_time, jobs = Crono.scheduler.next_jobs
sleep(next_time - Time.now) if next_time > Time.now
sleep(next_time - Time.zone.now) if next_time > Time.zone.now
jobs.each(&:perform)
end
end

View File

@@ -12,7 +12,7 @@ module Crono
def initialize(performer, period, job_args, job_options = nil)
self.execution_interval = 0.minutes
self.performer, self.period = performer, period
self.job_args = JSON.generate(job_args)
self.job_args = JSON.generate(job_args)
self.job_log = StringIO.new
self.job_logger = Logger.new(job_log)
self.job_options = job_options || {}
@@ -22,7 +22,7 @@ module Crono
def next
return next_performed_at if next_performed_at.future?
Time.now
Time.zone.now
end
def description
@@ -37,7 +37,7 @@ module Crono
return Thread.new {} if perform_before_interval?
log "Perform #{performer}"
self.last_performed_at = Time.now
self.last_performed_at = Time.zone.now
self.next_performed_at = period.next(since: last_performed_at)
Thread.new { perform_job }
@@ -86,7 +86,7 @@ module Crono
end
def handle_job_fail(exception)
finished_time_sec = format('%.2f', Time.now - last_performed_at)
finished_time_sec = format('%.2f', Time.zone.now - last_performed_at)
self.healthy = false
log_error "Finished #{performer} in #{finished_time_sec} seconds"\
" with error: #{exception.message}"
@@ -94,7 +94,7 @@ module Crono
end
def handle_job_success
finished_time_sec = format('%.2f', Time.now - last_performed_at)
finished_time_sec = format('%.2f', Time.zone.now - last_performed_at)
self.healthy = true
log "Finished #{performer} in #{finished_time_sec} seconds"
end

View File

@@ -27,7 +27,7 @@ module Crono
@next = @next.beginning_of_week.advance(days: @on) if @on
@next = @next.change(time_atts)
return @next if @next.future?
Time.now
Time.zone.now
end
def description
@@ -47,8 +47,8 @@ module Crono
end
def initial_day
return Time.now unless @on
day = Time.now.beginning_of_week.advance(days: @on)
return Time.zone.now unless @on
day = Time.zone.now.beginning_of_week.advance(days: @on)
day = day.change(time_atts)
return day if day.future?
@period.from_now.beginning_of_week.advance(days: @on)
@@ -68,7 +68,7 @@ module Crono
case at
when String
time = Time.parse(at)
time = Time.zone.parse(at)
return time.hour, time.min
when Hash
return at[:hour], at[:min]

View File

@@ -8,8 +8,8 @@ module Crono
def self.parse(value)
time =
case value
when String then Time.parse(value).utc
when Hash then Time.now.change(value).utc
when String then Time.zone.parse(value).utc
when Hash then Time.zone.now.change(value).utc
when Time then value.utc
else
fail "Unknown TimeOfDay format: #{value.inspect}"