1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/activejob/CHANGELOG.md

4.7 KiB

Rails 5.0.0.beta4 (April 27, 2016)

  • Enable class reloading prior to job dispatch, and ensure Active Record connections are returned to the pool when jobs are run in separate threads.

    Matthew Draper

  • Tune the async adapter for low-footprint dev/test usage. Use a single thread pool for all queues and limit to 0 to #CPU total threads, down from 2 to 10*#CPU per queue.

    Jeremy Daer

Rails 5.0.0.beta3 (February 24, 2016)

  • Change the default adapter from inline to async. It's a better default as tests will then not mistakenly come to rely on behavior happening synchronously. This is especially important with things like jobs kicked off in Active Record lifecycle callbacks.

    DHH

Rails 5.0.0.beta2 (February 01, 2016)

  • No changes.

Rails 5.0.0.beta1 (December 18, 2015)

  • Fixed serializing :at option for assert_enqueued_with and assert_performed_with.

    Wojciech Wnętrzak

  • Support passing array to assert_enqueued_jobs in :only option.

    Wojciech Wnętrzak

  • Add job priorities to Active Job.

    wvengen

  • Implement a simple AsyncJob processor and associated AsyncAdapter that queue jobs to a concurrent-ruby thread pool.

    Jerry D'Antonio

  • Implement provider_job_id for queue_classic adapter. This requires the latest, currently unreleased, version of queue_classic.

    Yves Senn

  • assert_enqueued_with and assert_performed_with now returns the matched job instance for further assertions.

    Jean Boussier

  • Include I18n.locale into job serialization/deserialization and use it around perform.

    Fixes #20799.

    Johannes Opper

  • Allow DelayedJob, Sidekiq, qu, and que to report the job id back to ActiveJob::Base as provider_job_id.

    Fixes #18821.

    Kevin Deisz, Jeroen van Baarsen

  • assert_enqueued_jobs and assert_performed_jobs in block form use the given number as expected value. This makes the error message much easier to understand.

    y-yagi

  • A generated job now inherits from app/jobs/application_job.rb by default.

    Jeroen van Baarsen

  • Add ability to configure the queue adapter on a per job basis.

    Now different jobs can have different queue adapters without conflicting with each other.

    Example:

    class EmailJob < ActiveJob::Base
      self.queue_adapter = :sidekiq
    end
    
    class ImageProcessingJob < ActiveJob::Base
      self.queue_adapter = :delayed_job
    end
    

    tamird

  • Add an :only option to perform_enqueued_jobs to filter jobs based on type.

    This allows specific jobs to be tested, while preventing others from being performed unnecessarily.

    Example:

    def test_hello_job
      assert_performed_jobs 1, only: HelloJob do
        HelloJob.perform_later('jeremy')
        LoggingJob.perform_later
      end
    end
    

    An array may also be specified, to support testing multiple jobs.

    Example:

    def test_hello_and_logging_jobs
      assert_nothing_raised do
        assert_performed_jobs 2, only: [HelloJob, LoggingJob] do
          HelloJob.perform_later('jeremy')
          LoggingJob.perform_later('stewie')
          RescueJob.perform_later('david')
        end
      end
    end
    

    Fixes #18802.

    Michael Ryan

  • Allow keyword arguments to be used with Active Job.

    Fixes #18741.

    Sean Griffin

  • Add :only option to assert_enqueued_jobs, to check the number of times a specific kind of job is enqueued.

    Example:

    def test_logging_job
      assert_enqueued_jobs 1, only: LoggingJob do
        LoggingJob.perform_later
        HelloJob.perform_later('jeremy')
      end
    end
    

    George Claghorn

  • ActiveJob::Base.deserialize delegates to the job class.

    Since ActiveJob::Base#deserialize can be overridden by subclasses (like ActiveJob::Base#serialize) this allows jobs to attach arbitrary metadata when they get serialized and read it back when they get performed.

    Example:

    class DeliverWebhookJob < ActiveJob::Base
      def serialize
        super.merge('attempt_number' => (@attempt_number || 0) + 1)
      end
    
      def deserialize(job_data)
        super
        @attempt_number = job_data['attempt_number']
      end
    
      rescue_from(TimeoutError) do |exception|
        raise exception if @attempt_number > 5
        retry_job(wait: 10)
      end
    end
    

    Isaac Seymour

Please check 4-2-stable for previous changes.