aboutsummaryrefslogtreecommitdiffstats
path: root/lib/active_job
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 /lib/active_job
parentfd1e61adfc40275fe23fdcbc7796f7a72bf12fa3 (diff)
downloadrails-c334bea36228319b3f624443f303447e48e29f3d.tar.gz
rails-c334bea36228319b3f624443f303447e48e29f3d.tar.bz2
rails-c334bea36228319b3f624443f303447e48e29f3d.zip
Extract QueueAdapter module for setting and looking up adapters
Diffstat (limited to 'lib/active_job')
-rw-r--r--lib/active_job/base.rb9
-rw-r--r--lib/active_job/queue_adapter.rb24
2 files changed, 27 insertions, 6 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