Remove deprecated support to set numeric values to scheduled_at attribute

This commit is contained in:
Rafael Mendonça França 2023-10-12 19:18:21 +00:00
parent 2a761d23d2
commit 798289699d
No known key found for this signature in database
GPG Key ID: FC23B6D0F1EEE948
5 changed files with 10 additions and 38 deletions

@ -1,3 +1,7 @@
* Remove deprecated support to set numeric values to `scheduled_at` attribute.
*Rafael Mendonça França*
* Deprecate `Rails.application.config.active_job.use_big_decimal_serialize`.
*Rafael Mendonça França*

@ -13,9 +13,7 @@ module Core
attr_writer :serialized_arguments
# Time when the job should be performed
attr_reader :scheduled_at
attr_reader :_scheduled_at_time # :nodoc:
attr_accessor :scheduled_at
# Job Identifier
attr_accessor :job_id
@ -97,7 +95,6 @@ def initialize(*arguments)
@job_id = SecureRandom.uuid
@queue_name = self.class.queue_name
@scheduled_at = nil
@_scheduled_at_time = nil
@priority = self.class.priority
@executions = 0
@exception_executions = {}
@ -120,7 +117,7 @@ def serialize
"locale" => I18n.locale.to_s,
"timezone" => timezone,
"enqueued_at" => Time.now.utc.iso8601(9),
"scheduled_at" => _scheduled_at_time ? _scheduled_at_time.utc.iso8601(9) : nil,
"scheduled_at" => scheduled_at ? scheduled_at.utc.iso8601(9) : nil,
}
end
@ -174,18 +171,6 @@ def set(options = {}) # :nodoc:
self
end
def scheduled_at=(value)
@_scheduled_at_time = if value.is_a?(Numeric)
ActiveJob.deprecator.warn(<<~MSG.squish)
Assigning a numeric/epoch value to scheduled_at is deprecated. Use a Time object instead.
MSG
Time.at(value)
else
value
end
@scheduled_at = value
end
private
def serialize_arguments_if_needed(arguments)
if arguments_serialized?

@ -23,7 +23,7 @@ def perform_all_later(*jobs)
adapter_jobs.each do |job|
job.successfully_enqueued = false
if job.scheduled_at
queue_adapter.enqueue_at(job, job._scheduled_at_time.to_f)
queue_adapter.enqueue_at(job, job.scheduled_at.to_f)
else
queue_adapter.enqueue(job)
end
@ -92,7 +92,7 @@ def enqueue(options = {})
run_callbacks :enqueue do
if scheduled_at
queue_adapter.enqueue_at self, _scheduled_at_time.to_f
queue_adapter.enqueue_at self, scheduled_at.to_f
else
queue_adapter.enqueue self
end

@ -92,23 +92,4 @@ class JobSerializationTest < ActiveSupport::TestCase
assert_equal job.serialize, deserialized_job.serialize
end
test "deprecates and coerces numerical scheduled_at attribute to Time when serialized and deserialized" do
freeze_time
current_time = Time.now
job = HelloJob.new
assert_deprecated(ActiveJob.deprecator) do
job.scheduled_at = current_time.to_f
end
serialized_job = job.serialize
assert_kind_of String, serialized_job["scheduled_at"]
assert_equal current_time.utc.iso8601(9), serialized_job["scheduled_at"]
deserialized_job = HelloJob.new
deserialized_job.deserialize(serialized_job)
assert_equal current_time, deserialized_job.scheduled_at
assert_equal job.serialize, deserialized_job.serialize
end
end

@ -147,6 +147,8 @@ Please refer to the [Changelog][active-job] for detailed changes.
* Remove deprecated primitive serializer for `BigDecimal` arguments.
* Remove deprecated support to set numeric values to `scheduled_at` attribute.
### Deprecations
* Deprecate `Rails.application.config.active_job.use_big_decimal_serialize`.