提交 91461dc7 编写于 作者: A Abdelkader Boudih

Lazy-load adapters, fixes #6

上级 68543de8
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 @@ class << self
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
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
......@@ -2,7 +2,7 @@
require 'active_support/core_ext/enumerable'
require 'active_support/core_ext/array/access'
require 'active_support/core_ext/string/inflections'
module ActiveJob
......
ActiveJob::Base.adapter = :inline
\ No newline at end of file
ActiveJob::Base.queue_adapter = ActiveJob::QueueAdapters::ResqueAdapter
ActiveJob::Base.adapter = :resque
Resque.inline = true
require 'sidekiq/testing/inline'
ActiveJob::Base.queue_adapter = ActiveJob::QueueAdapters::SidekiqAdapter
ActiveJob::Base.adapter = :sidekiq
require 'sucker_punch/testing/inline'
ActiveJob::Base.queue_adapter = ActiveJob::QueueAdapters::SuckerPunchAdapter
ActiveJob::Base.adapter = :sucker_punch
require 'helper'
class AdapterTest < ActiveSupport::TestCase
def setup
@old_adapter = ActiveJob::Base.queue_adapter
end
test 'should load inline adapter' do
ActiveJob::Base.adapter = :inline
assert_equal ActiveJob::QueueAdapters::InlineAdapter, ActiveJob::Base.queue_adapter
end
test 'should load resque adapter' do
ActiveJob::Base.adapter = :resque
assert_equal ActiveJob::QueueAdapters::ResqueAdapter, ActiveJob::Base.queue_adapter
end
test 'should load sidekiq adapter' do
ActiveJob::Base.adapter = :sidekiq
assert_equal ActiveJob::QueueAdapters::SidekiqAdapter, ActiveJob::Base.queue_adapter
end
test 'should load sucker punch adapter' do
ActiveJob::Base.adapter = :sucker_punch
assert_equal ActiveJob::QueueAdapters::SuckerPunchAdapter, ActiveJob::Base.queue_adapter
end
def teardown
ActiveJob::Base.queue_adapter = @old_adapter
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册