aboutsummaryrefslogtreecommitdiffstats
path: root/lib/active_job
diff options
context:
space:
mode:
authorAbdelkader Boudih <terminale@gmail.com>2014-05-18 20:59:12 +0000
committerAbdelkader Boudih <terminale@gmail.com>2014-05-18 20:59:12 +0000
commit91461dc7a9f0aa879cfff503ea2fdb9a71e0277e (patch)
tree75ba9ac32f1bc59b490f096d61dc8012f3daae8a /lib/active_job
parent68543de83612049e3254f7243b575039f102cd49 (diff)
downloadrails-91461dc7a9f0aa879cfff503ea2fdb9a71e0277e.tar.gz
rails-91461dc7a9f0aa879cfff503ea2fdb9a71e0277e.tar.bz2
rails-91461dc7a9f0aa879cfff503ea2fdb9a71e0277e.zip
Lazy-load adapters, fixes #6
Diffstat (limited to 'lib/active_job')
-rw-r--r--lib/active_job/base.rb23
-rw-r--r--lib/active_job/errors.rb12
-rw-r--r--lib/active_job/job_wrappers/resque_wrapper.rb2
3 files changed, 32 insertions, 5 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
diff --git a/lib/active_job/errors.rb b/lib/active_job/errors.rb
new file mode 100644
index 0000000000..4fc3be6878
--- /dev/null
+++ b/lib/active_job/errors.rb
@@ -0,0 +1,12 @@
+module ActiveJob
+
+ class NotImplementedError < ::NotImplementedError #:nodoc:
+ end
+
+ class Error < ::StandardError #:nodoc:
+ def initialize(message = nil)
+ super(message)
+ end
+ end
+
+end \ No newline at end of file
diff --git a/lib/active_job/job_wrappers/resque_wrapper.rb b/lib/active_job/job_wrappers/resque_wrapper.rb
index 0db9cf144f..cbeee4fb1b 100644
--- a/lib/active_job/job_wrappers/resque_wrapper.rb
+++ b/lib/active_job/job_wrappers/resque_wrapper.rb
@@ -2,7 +2,7 @@ require 'resque'
require 'active_support/core_ext/enumerable'
require 'active_support/core_ext/array/access'
-require 'active_support/core_ext/string/inflections'
+
module ActiveJob