Skip to content

Commit

Permalink
Adds backburner adapter
Browse files Browse the repository at this point in the history
  • Loading branch information
mytrile committed May 20, 2014
1 parent 2d19c71 commit 243afc0
Show file tree
Hide file tree
Showing 7 changed files with 47 additions and 3 deletions.
3 changes: 2 additions & 1 deletion Gemfile
Expand Up @@ -9,4 +9,5 @@ gem 'sucker_punch'
gem 'delayed_job'
gem 'queue_classic'
gem 'sneakers', '0.1.1.pre'
gem 'que'
gem 'que'
gem 'backburner'
6 changes: 6 additions & 0 deletions Gemfile.lock
Expand Up @@ -21,12 +21,17 @@ GEM
thread_safe (~> 0.1)
tzinfo (~> 1.1)
amq-protocol (1.9.2)
backburner (0.4.5)
beaneater (~> 0.3.1)
dante (~> 0.1.5)
beaneater (0.3.2)
builder (3.2.2)
bunny (1.1.9)
amq-protocol (>= 1.9.2)
celluloid (0.15.2)
timers (~> 1.1.0)
connection_pool (2.0.0)
dante (0.1.5)
delayed_job (4.0.1)
activesupport (>= 3.0, < 4.2)
i18n (0.6.9)
Expand Down Expand Up @@ -86,6 +91,7 @@ PLATFORMS

DEPENDENCIES
activejob!
backburner
delayed_job
que
queue_classic
Expand Down
4 changes: 2 additions & 2 deletions Rakefile
Expand Up @@ -20,11 +20,11 @@ task :default => :test

desc 'Run all adapter tests'
task :test do
tasks = %w(test_inline test_delayed_job test_que test_queue_classic test_resque test_sidekiq test_sneakers test_sucker_punch)
tasks = %w(test_inline test_delayed_job test_que test_queue_classic test_resque test_sidekiq test_sneakers test_sucker_punch test_backburner)
run_without_aborting(*tasks)
end

%w(inline delayed_job que queue_classic resque sidekiq sneakers sucker_punch).each do |adapter|
%w(inline delayed_job que queue_classic resque sidekiq sneakers sucker_punch backburner).each do |adapter|
Rake::TestTask.new("test_#{adapter}") do |t|
t.libs << 'test'
t.test_files = FileList['test/cases/**/*_test.rb']
Expand Down
21 changes: 21 additions & 0 deletions lib/active_job/queue_adapters/backburner_adapter.rb
@@ -0,0 +1,21 @@
require 'backburner'

module ActiveJob
module QueueAdapters
class BackburnerAdapter
class << self
def queue(job, *args)
Backburner::Worker.enqueue JobWrapper, [ job.name, *args ], queue: job.queue_name
end
end

class JobWrapper
class << self
def perform(job_name, *args)
job_name.constantize.new.perform *Parameters.deserialize(args)
end
end
end
end
end
end
3 changes: 3 additions & 0 deletions test/adapters/backburner.rb
@@ -0,0 +1,3 @@
require 'support/backburner/inline'

ActiveJob::Base.queue_adapter = :backburner
5 changes: 5 additions & 0 deletions test/cases/adapter_test.rb
Expand Up @@ -43,4 +43,9 @@ class AdapterTest < ActiveSupport::TestCase
ActiveJob::Base.queue_adapter = :sneakers
assert_equal ActiveJob::QueueAdapters::SneakersAdapter, ActiveJob::Base.queue_adapter
end

test 'should load Backburner adapter' do
ActiveJob::Base.queue_adapter = :backburner
assert_equal ActiveJob::QueueAdapters::BackburnerAdapter, ActiveJob::Base.queue_adapter
end
end
8 changes: 8 additions & 0 deletions test/support/backburner/inline.rb
@@ -0,0 +1,8 @@
require 'backburner'

Backburner::Worker.class_eval do
class << self; alias_method :original_enqueue, :enqueue; end
def self.enqueue(job_class, args=[], opts={})
job_class.perform(*args)
end
end

0 comments on commit 243afc0

Please sign in to comment.