mirror of https://github.com/rails/rails
Remove deprecated support to set numeric values to `scheduled_at` attribute
This commit is contained in:
parent
2a761d23d2
commit
798289699d
|
@ -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 ActiveJob
|
|||
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 @@ module ActiveJob
|
|||
@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 @@ module ActiveJob
|
|||
"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 @@ module ActiveJob
|
|||
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 @@ module ActiveJob
|
|||
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 @@ module ActiveJob
|
|||
|
||||
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`.
|
||||
|
|
Loading…
Reference in New Issue