Fixes https://github.com/rails/rails/issues/46103 An issue exists if you set `config.active_record.query_log_tags` to an array that includes `:controller`, `:action`, or `:job`; the relevant item will get duplicated in the log line. This occured because the relevant railties would add the item to `config.active_record.query_log_tags` again during setup. This PR fixes that by only adding those items to the config if they aren't already set. The issue proposed more documentation to work around this, but I think it's a bug and should be fixed directly.
3.7 KiB
-
Don't double log the
job
when usingActiveRecord::QueryLog
Previously if you set
config.active_record.query_log_tags
to an array that included:job
, the job name would get logged twice. This bug has been fixed.Alex Ghiculescu
-
Add support for Sidekiq's transaction-aware client
Jonathan del Strother
-
Remove QueAdapter from Active Job.
After maintaining Active Job QueAdapter by Rails and Que side to support Ruby 3 keyword arguments and options provided as top level keywords, it is quite difficult to maintain it this way.
Active Job Que adapter can be included in the future version of que gem itself.
Yasuo Honda
-
Fix BigDecimal (de)serialization for adapters using JSON.
Previously, BigDecimal was listed as not needing a serializer. However, when used with an adapter storing the job arguments as JSON, it would get serialized as a simple String, resulting in deserialization also producing a String (instead of a BigDecimal).
By using a serializer, we ensure the round trip is safe.
To ensure applications using BigDecimal job arguments are not subject to race conditions during deployment (where a replica running a version of Rails without BigDecimalSerializer fails to deserialize an argument serialized with it),
ActiveJob.use_big_decimal_serializer
is disabled by default, and can be set to true in a following deployment..Sam Bostock
-
Preserve full-precision
enqueued_at
timestamps for serialized jobs, allowing more accurate reporting of how long a job spent waiting in the queue before it was performed.Retains IS08601 format compatibility.
Jeremy Daer
-
Add
--parent
option to job generator to specify parent class of job.Example:
bin/rails g job process_payment --parent=payment_job
generates:class ProcessPaymentJob < PaymentJob # ... end
Gannon McGibbon
-
Add more detailed description to job generator.
Gannon McGibbon
-
perform.active_job
notification payloads now include:db_runtime
, which is the total time (in ms) taken by database queries while performing a job. This value can be used to better understand how a job's time is spent.Jonathan Hefner
-
Update
ActiveJob::QueueAdapters::QueAdapter
to remove deprecation warning.Remove a deprecation warning introduced in que 1.2 to prepare for changes in que 2.0 necessary for Ruby 3 compatibility.
Damir Zekic and Adis Hasovic
-
Add missing
bigdecimal
require inActiveJob::Arguments
Could cause
uninitialized constant ActiveJob::Arguments::BigDecimal (NameError)
when loading Active Job in isolation.Jean Boussier
-
Allow testing
discard_on/retry_on ActiveJob::DeserializationError
Previously in
perform_enqueued_jobs
,deserialize_arguments_if_needed
was called before callingperform_now
. When a record no longer exists and is serialized using GlobalID this led to raising anActiveJob::DeserializationError
before reachingperform_now
call. This behavior makes difficult testing the jobdiscard_on/retry_on
logic.Now
deserialize_arguments_if_needed
call is postponed to whenperform_now
is called.Example:
class UpdateUserJob < ActiveJob::Base discard_on ActiveJob::DeserializationError def perform(user) # ... end end # In the test User.destroy_all assert_nothing_raised do perform_enqueued_jobs only: UpdateUserJob end
Jacopo Beschi
Please check 7-0-stable for previous changes.