diff --git a/lib/delayed/job.rb b/lib/delayed/job.rb index 057859710..2dfa0bba1 100644 --- a/lib/delayed/job.rb +++ b/lib/delayed/job.rb @@ -73,7 +73,7 @@ def reschedule(message, backtrace = [], time = nil) save! else logger.info "* [JOB] PERMANENTLY removing #{self.name} because of #{attempts} consequetive failures." - destroy_failed_jobs ? destroy : update_attribute(:failed_at, Time.now) + destroy_failed_jobs ? destroy : update_attribute(:failed_at, Delayed::Job.db_time_now) end end diff --git a/spec/database.rb b/spec/database.rb index 505b06fa9..d25578d42 100644 --- a/spec/database.rb +++ b/spec/database.rb @@ -11,6 +11,7 @@ ActiveRecord::Base.logger = Logger.new('/tmp/dj.log') ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => '/tmp/jobs.sqlite') ActiveRecord::Migration.verbose = false +ActiveRecord::Base.default_timezone = :utc if Time.zone.nil? ActiveRecord::Schema.define do diff --git a/spec/job_spec.rb b/spec/job_spec.rb index b88e73895..9d3bc303f 100644 --- a/spec/job_spec.rb +++ b/spec/job_spec.rb @@ -54,7 +54,7 @@ def perform; @@runs += 1; end end it "should be able to set run_at when enqueuing items" do - later = 5.minutes.from_now + later = (Delayed::Job.db_time_now+5.minutes) Delayed::Job.enqueue SimpleJob.new, 5, later # use be close rather than equal to because millisecond values cn be lost in DB round trip @@ -172,7 +172,7 @@ def perform; @@runs += 1; end end it "should never find failed jobs" do - @job = Delayed::Job.create :payload_object => SimpleJob.new, :attempts => 50, :failed_at => Time.now + @job = Delayed::Job.create :payload_object => SimpleJob.new, :attempts => 50, :failed_at => Delayed::Job.db_time_now Delayed::Job.find_available(1).length.should == 0 end