aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2014-05-19 10:55:57 +0200
committerDavid Heinemeier Hansson <david@loudthinking.com>2014-05-19 10:55:57 +0200
commitc334bea36228319b3f624443f303447e48e29f3d (patch)
tree9a26db042b62db04851a711b466d3058d0667244
parentfd1e61adfc40275fe23fdcbc7796f7a72bf12fa3 (diff)
downloadrails-c334bea36228319b3f624443f303447e48e29f3d.tar.gz
rails-c334bea36228319b3f624443f303447e48e29f3d.tar.bz2
rails-c334bea36228319b3f624443f303447e48e29f3d.zip
Extract QueueAdapter module for setting and looking up adapters
-rw-r--r--lib/active_job/base.rb9
-rw-r--r--lib/active_job/queue_adapter.rb24
-rw-r--r--test/adapters/inline.rb2
-rw-r--r--test/adapters/resque.rb2
-rw-r--r--test/adapters/sidekiq.rb2
-rw-r--r--test/adapters/sucker_punch.rb2
-rw-r--r--test/cases/adapter_test.rb8
7 files changed, 35 insertions, 14 deletions
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