diff options
author | David Heinemeier Hansson <david@basecamp.com> | 2014-05-20 17:50:51 +0200 |
---|---|---|
committer | David Heinemeier Hansson <david@basecamp.com> | 2014-05-20 17:50:51 +0200 |
commit | 207ca309463e6d443082452b5ff7a8a63c2f54f7 (patch) | |
tree | 62375f684556f66ab9e3e7021364725d2692fcbf | |
parent | be3b805ad08a417d69f0b5293f36ea34d605bf43 (diff) | |
parent | 243afc061cf527bebf6c76956c53c5cb637876c6 (diff) | |
download | rails-207ca309463e6d443082452b5ff7a8a63c2f54f7.tar.gz rails-207ca309463e6d443082452b5ff7a8a63c2f54f7.tar.bz2 rails-207ca309463e6d443082452b5ff7a8a63c2f54f7.zip |
Merge pull request #43 from mytrile/master
Adding backburner(beanstalks client) adapter
-rw-r--r-- | Gemfile | 3 | ||||
-rw-r--r-- | Gemfile.lock | 6 | ||||
-rw-r--r-- | Rakefile | 4 | ||||
-rw-r--r-- | lib/active_job/queue_adapters/backburner_adapter.rb | 21 | ||||
-rw-r--r-- | test/adapters/backburner.rb | 3 | ||||
-rw-r--r-- | test/cases/adapter_test.rb | 5 | ||||
-rw-r--r-- | test/support/backburner/inline.rb | 8 |
7 files changed, 47 insertions, 3 deletions
@@ -9,4 +9,5 @@ gem 'sucker_punch' gem 'delayed_job' gem 'queue_classic' gem 'sneakers', '0.1.1.pre' -gem 'que'
\ No newline at end of file +gem 'que' +gem 'backburner' diff --git a/Gemfile.lock b/Gemfile.lock index ff4e994b44..74758c73fe 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -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) @@ -86,6 +91,7 @@ PLATFORMS DEPENDENCIES activejob! + backburner delayed_job que queue_classic @@ -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'] diff --git a/lib/active_job/queue_adapters/backburner_adapter.rb b/lib/active_job/queue_adapters/backburner_adapter.rb new file mode 100644 index 0000000000..0ac745c7f2 --- /dev/null +++ b/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 diff --git a/test/adapters/backburner.rb b/test/adapters/backburner.rb new file mode 100644 index 0000000000..65d05f850b --- /dev/null +++ b/test/adapters/backburner.rb @@ -0,0 +1,3 @@ +require 'support/backburner/inline' + +ActiveJob::Base.queue_adapter = :backburner
\ No newline at end of file diff --git a/test/cases/adapter_test.rb b/test/cases/adapter_test.rb index 1a08fa2617..703058dacb 100644 --- a/test/cases/adapter_test.rb +++ b/test/cases/adapter_test.rb @@ -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 diff --git a/test/support/backburner/inline.rb b/test/support/backburner/inline.rb new file mode 100644 index 0000000000..f761b53e27 --- /dev/null +++ b/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
\ No newline at end of file |