From c334bea36228319b3f624443f303447e48e29f3d Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 19 May 2014 10:55:57 +0200 Subject: Extract QueueAdapter module for setting and looking up adapters --- lib/active_job/base.rb | 9 +++------ lib/active_job/queue_adapter.rb | 24 ++++++++++++++++++++++++ test/adapters/inline.rb | 2 +- test/adapters/resque.rb | 2 +- test/adapters/sidekiq.rb | 2 +- test/adapters/sucker_punch.rb | 2 +- test/cases/adapter_test.rb | 8 ++++---- 7 files changed, 35 insertions(+), 14 deletions(-) create mode 100644 lib/active_job/queue_adapter.rb diff --git a/lib/active_job/base.rb b/lib/active_job/base.rb index 86008d3c94..d3b0fcffa8 100644 --- a/lib/active_job/base.rb +++ b/lib/active_job/base.rb @@ -1,9 +1,11 @@ +require 'active_job/queue_adapter' require 'active_job/queue_adapters/inline_adapter' require 'active_support/core_ext/string/inflections' module ActiveJob class Base - cattr_accessor(:queue_adapter) { ActiveJob::QueueAdapters::InlineAdapter } + extend QueueAdapter + cattr_accessor(:queue_base_name) { "active_jobs" } cattr_accessor(:queue_name) { queue_base_name } @@ -15,11 +17,6 @@ module ActiveJob def queue_as(part_name) self.queue_name = "#{queue_base_name}_#{part_name}" end - - def adapter=(adapter_name) - require "active_job/queue_adapters/#{adapter_name}_adapter" - ActiveJob::Base.queue_adapter = "ActiveJob::QueueAdapters::#{adapter_name.to_s.camelize}Adapter".constantize - end end end end \ No newline at end of file diff --git a/lib/active_job/queue_adapter.rb b/lib/active_job/queue_adapter.rb new file mode 100644 index 0000000000..a1987a7dc3 --- /dev/null +++ b/lib/active_job/queue_adapter.rb @@ -0,0 +1,24 @@ +require 'active_job/queue_adapters/inline_adapter' +require 'active_support/core_ext/string/inflections' + +module ActiveJob + module QueueAdapter + mattr_reader(:queue_adapter) { ActiveJob::QueueAdapters::InlineAdapter } + + def queue_adapter=(name_or_adapter) + if name_or_adapter.is_a?(Symbol) || name_or_adapter.is_a?(String) + adapter = load_adapter(name_or_adapter) + else + adapter = name_or_adapter + end + + @@queue_adapter = adapter + end + + private + def load_adapter(name) + require "active_job/queue_adapters/#{name}_adapter" + "ActiveJob::QueueAdapters::#{name.to_s.camelize}Adapter".constantize + end + end +end \ No newline at end of file diff --git a/test/adapters/inline.rb b/test/adapters/inline.rb index 131dd029b3..e0092552c4 100644 --- a/test/adapters/inline.rb +++ b/test/adapters/inline.rb @@ -1 +1 @@ -ActiveJob::Base.adapter = :inline \ No newline at end of file +ActiveJob::Base.queue_adapter = :inline \ No newline at end of file diff --git a/test/adapters/resque.rb b/test/adapters/resque.rb index 6e11f864c2..af7080358d 100644 --- a/test/adapters/resque.rb +++ b/test/adapters/resque.rb @@ -1,2 +1,2 @@ -ActiveJob::Base.adapter = :resque +ActiveJob::Base.queue_adapter = :resque Resque.inline = true diff --git a/test/adapters/sidekiq.rb b/test/adapters/sidekiq.rb index 55153d0bc6..cd9d2034de 100644 --- a/test/adapters/sidekiq.rb +++ b/test/adapters/sidekiq.rb @@ -1,2 +1,2 @@ require 'sidekiq/testing/inline' -ActiveJob::Base.adapter = :sidekiq +ActiveJob::Base.queue_adapter = :sidekiq diff --git a/test/adapters/sucker_punch.rb b/test/adapters/sucker_punch.rb index 8ce9a902b6..d2d1712946 100644 --- a/test/adapters/sucker_punch.rb +++ b/test/adapters/sucker_punch.rb @@ -1,2 +1,2 @@ require 'sucker_punch/testing/inline' -ActiveJob::Base.adapter = :sucker_punch +ActiveJob::Base.queue_adapter = :sucker_punch diff --git a/test/cases/adapter_test.rb b/test/cases/adapter_test.rb index eac92fb27d..f0ff2dfed2 100644 --- a/test/cases/adapter_test.rb +++ b/test/cases/adapter_test.rb @@ -6,22 +6,22 @@ class AdapterTest < ActiveSupport::TestCase end test 'should load inline adapter' do - ActiveJob::Base.adapter = :inline + ActiveJob::Base.queue_adapter = :inline assert_equal ActiveJob::QueueAdapters::InlineAdapter, ActiveJob::Base.queue_adapter end test 'should load resque adapter' do - ActiveJob::Base.adapter = :resque + ActiveJob::Base.queue_adapter = :resque assert_equal ActiveJob::QueueAdapters::ResqueAdapter, ActiveJob::Base.queue_adapter end test 'should load sidekiq adapter' do - ActiveJob::Base.adapter = :sidekiq + ActiveJob::Base.queue_adapter = :sidekiq assert_equal ActiveJob::QueueAdapters::SidekiqAdapter, ActiveJob::Base.queue_adapter end test 'should load sucker punch adapter' do - ActiveJob::Base.adapter = :sucker_punch + ActiveJob::Base.queue_adapter = :sucker_punch assert_equal ActiveJob::QueueAdapters::SuckerPunchAdapter, ActiveJob::Base.queue_adapter end -- cgit v1.2.3