diff options
author | Abdelkader Boudih <terminale@gmail.com> | 2014-05-18 20:59:12 +0000 |
---|---|---|
committer | Abdelkader Boudih <terminale@gmail.com> | 2014-05-18 20:59:12 +0000 |
commit | 91461dc7a9f0aa879cfff503ea2fdb9a71e0277e (patch) | |
tree | 75ba9ac32f1bc59b490f096d61dc8012f3daae8a /lib/active_job/base.rb | |
parent | 68543de83612049e3254f7243b575039f102cd49 (diff) | |
download | rails-91461dc7a9f0aa879cfff503ea2fdb9a71e0277e.tar.gz rails-91461dc7a9f0aa879cfff503ea2fdb9a71e0277e.tar.bz2 rails-91461dc7a9f0aa879cfff503ea2fdb9a71e0277e.zip |
Lazy-load adapters, fixes #6
Diffstat (limited to 'lib/active_job/base.rb')
-rw-r--r-- | lib/active_job/base.rb | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/lib/active_job/base.rb b/lib/active_job/base.rb index 6cce770466..f39dba6f5f 100644 --- a/lib/active_job/base.rb +++ b/lib/active_job/base.rb @@ -1,9 +1,9 @@ +require 'active_job/errors' require 'active_job/queue_adapters/inline_adapter' -require 'active_job/queue_adapters/resque_adapter' -require 'active_job/queue_adapters/sidekiq_adapter' -require 'active_job/queue_adapters/sucker_punch_adapter' +require 'active_support/core_ext/string/inflections' module ActiveJob + class Base cattr_accessor(:queue_adapter) { ActiveJob::QueueAdapters::InlineAdapter } cattr_accessor(:queue_base_name) { "active_jobs" } @@ -13,10 +13,25 @@ module ActiveJob def enqueue(*args) queue_adapter.queue self, *args end - + def queue_as(part_name) self.queue_name = "#{queue_base_name}_#{part_name}" end + + def adapter=(adapter_name) + adapter_name = adapter_name.to_s + unless %w(inline resque sidekiq sucker_punch).include?(adapter_name) + fail ActiveJob::NotImplementedError + end + + begin + require_relative "queue_adapters/#{adapter_name}_adapter" + ActiveJob::Base.queue_adapter = "ActiveJob::QueueAdapters::#{adapter_name.camelize}Adapter".constantize + rescue + fail ActiveJob::Error.new("#{adapter_name} is missing") + end + end end + end end
\ No newline at end of file |