From de6b3162510bb9303f1106bf8615606ffa5d88b7 Mon Sep 17 00:00:00 2001 From: Yuki Nishijima Date: Tue, 28 Apr 2015 18:56:38 -0700 Subject: [PATCH 1/2] Add Railtie to delayed_job_active_record Explicitly requiring ActiveRecord models in `lib/delayed_job_active_record.rb` may result in losing custom configurations that are set in config/initializers on Rails. Let' use Railtie and ActiveSupport.on_load to set it up so that Delayed::Backend::ActiveRecord::Job model will respect arbitrary configs. --- lib/delayed/backend/active_record/railtie.rb | 14 ++++++++++++++ lib/delayed_job_active_record.rb | 11 ++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 lib/delayed/backend/active_record/railtie.rb diff --git a/lib/delayed/backend/active_record/railtie.rb b/lib/delayed/backend/active_record/railtie.rb new file mode 100644 index 00000000..d126bc9e --- /dev/null +++ b/lib/delayed/backend/active_record/railtie.rb @@ -0,0 +1,14 @@ +module Delayed + module Backend + module ActiveRecord + class Railtie < ::Rails::Railtie + initializer 'delayed_job_active_record' do |_app| + ActiveSupport.on_load(:active_record) do + require "delayed/backend/active_record" + Delayed::Worker.backend = :active_record + end + end + end + end + end +end diff --git a/lib/delayed_job_active_record.rb b/lib/delayed_job_active_record.rb index a09638e6..896cdb3a 100644 --- a/lib/delayed_job_active_record.rb +++ b/lib/delayed_job_active_record.rb @@ -1,7 +1,12 @@ # frozen_string_literal: true -require "active_record" require "delayed_job" -require "delayed/backend/active_record" -Delayed::Worker.backend = :active_record +if defined?(Rails) + require "delayed/backend/active_record/railtie" +else + require "active_record" + require "delayed/backend/active_record" + + Delayed::Worker.backend = :active_record +end From 573dd7246ebd1e7e9331281c962e1801b0cad542 Mon Sep 17 00:00:00 2001 From: Petrik Date: Tue, 9 Jul 2019 11:41:27 +0200 Subject: [PATCH 2/2] Fix Rails autoloading Delay initializing of backend until all initializers have run. --- lib/delayed/backend/active_record/railtie.rb | 10 +++++----- lib/delayed_job_active_record.rb | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/delayed/backend/active_record/railtie.rb b/lib/delayed/backend/active_record/railtie.rb index d126bc9e..e353ae77 100644 --- a/lib/delayed/backend/active_record/railtie.rb +++ b/lib/delayed/backend/active_record/railtie.rb @@ -1,12 +1,12 @@ +# frozen_string_literal: true + module Delayed module Backend module ActiveRecord class Railtie < ::Rails::Railtie - initializer 'delayed_job_active_record' do |_app| - ActiveSupport.on_load(:active_record) do - require "delayed/backend/active_record" - Delayed::Worker.backend = :active_record - end + config.after_initialize do + require "delayed/backend/active_record" + Delayed::Worker.backend = :active_record end end end diff --git a/lib/delayed_job_active_record.rb b/lib/delayed_job_active_record.rb index 896cdb3a..b6d4ca33 100644 --- a/lib/delayed_job_active_record.rb +++ b/lib/delayed_job_active_record.rb @@ -2,7 +2,7 @@ require "delayed_job" -if defined?(Rails) +if defined?(Rails::Railtie) require "delayed/backend/active_record/railtie" else require "active_record"