From a712c07c7ff312aca9c72e9720baf59f779e0cc2 Mon Sep 17 00:00:00 2001 From: Abdelkader Boudih Date: Sun, 18 May 2014 19:02:02 +0000 Subject: Add Sidekiq adapter/wrapper fixes #3 --- Gemfile | 2 +- Rakefile | 4 ++-- lib/active_job/base.rb | 1 + lib/active_job/job_wrappers/sidekiq_wrapper.rb | 11 +++++++++++ lib/active_job/queue_adapters/sidekiq_adapter.rb | 14 ++++++++++++++ test/adapters/sidekiq.rb | 2 ++ 6 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 lib/active_job/job_wrappers/sidekiq_wrapper.rb create mode 100644 lib/active_job/queue_adapters/sidekiq_adapter.rb create mode 100644 test/adapters/sidekiq.rb diff --git a/Gemfile b/Gemfile index aad6cc5441..c0c7f2da83 100644 --- a/Gemfile +++ b/Gemfile @@ -3,4 +3,4 @@ source 'https://rubygems.org' gemspec gem 'resque' - +gem 'sidekiq' diff --git a/Rakefile b/Rakefile index 2c94fbcace..82522f4a89 100644 --- a/Rakefile +++ b/Rakefile @@ -22,12 +22,12 @@ task :default => :test desc 'Run all adapter tests' task :test do - tasks = %w(test_inline test_resque) + tasks = %w(test_inline test_resque test_sidekiq) run_without_aborting(*tasks) end -%w( inline resque ).each do |adapter| +%w( inline resque sidekiq ).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/base.rb b/lib/active_job/base.rb index 341ea6158b..d1fff27a3a 100644 --- a/lib/active_job/base.rb +++ b/lib/active_job/base.rb @@ -1,5 +1,6 @@ require 'active_job/queue_adapters/inline_adapter' require 'active_job/queue_adapters/resque_adapter' +require 'active_job/queue_adapters/sidekiq_adapter' module ActiveJob class Base diff --git a/lib/active_job/job_wrappers/sidekiq_wrapper.rb b/lib/active_job/job_wrappers/sidekiq_wrapper.rb new file mode 100644 index 0000000000..fb728ae0fd --- /dev/null +++ b/lib/active_job/job_wrappers/sidekiq_wrapper.rb @@ -0,0 +1,11 @@ +module ActiveJob + module JobWrappers + class SidekiqWrapper + include Sidekiq::Worker + + def perform(job_name, *args) + job_name.constantize.perform(*args) + end + end + end +end diff --git a/lib/active_job/queue_adapters/sidekiq_adapter.rb b/lib/active_job/queue_adapters/sidekiq_adapter.rb new file mode 100644 index 0000000000..70c4377a23 --- /dev/null +++ b/lib/active_job/queue_adapters/sidekiq_adapter.rb @@ -0,0 +1,14 @@ +require 'sidekiq' +require 'active_job/job_wrappers/sidekiq_wrapper' + +module ActiveJob + module QueueAdapters + class SidekiqAdapter + class << self + def queue(job, *args) + JobWrappers::SidekiqWrapper.perform_async(job, *args) + end + end + end + end +end diff --git a/test/adapters/sidekiq.rb b/test/adapters/sidekiq.rb new file mode 100644 index 0000000000..74ce808d55 --- /dev/null +++ b/test/adapters/sidekiq.rb @@ -0,0 +1,2 @@ +require 'sidekiq/testing/inline' +ActiveJob::Base.queue_adapter = ActiveJob::QueueAdapters::SidekiqAdapter -- cgit v1.2.3 From 53f08f98686942a0335a1b5d5362dc442461bc2f Mon Sep 17 00:00:00 2001 From: Abdelkader Boudih Date: Sun, 18 May 2014 19:11:03 +0000 Subject: Correct typo in version.rb --- lib/active_job/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/active_job/version.rb b/lib/active_job/version.rb index 0add9779d9..7e646fa3c4 100644 --- a/lib/active_job/version.rb +++ b/lib/active_job/version.rb @@ -1,7 +1,7 @@ require_relative 'gem_version' module ActiveJob - # Returns the version of the currently loaded ActiveRecord as a Gem::Version + # Returns the version of the currently loaded ActiveJob as a Gem::Version def self.version gem_version end -- cgit v1.2.3 From 68543de83612049e3254f7243b575039f102cd49 Mon Sep 17 00:00:00 2001 From: Abdelkader Boudih Date: Sun, 18 May 2014 19:20:06 +0000 Subject: Add Sucker Punch adapter/wrapper --- Gemfile | 1 + Rakefile | 4 ++-- lib/active_job/base.rb | 1 + lib/active_job/job_wrappers/sucker_punch_wrapper.rb | 11 +++++++++++ lib/active_job/queue_adapters/sucker_punch_adapter.rb | 14 ++++++++++++++ test/adapters/sucker_punch.rb | 2 ++ 6 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 lib/active_job/job_wrappers/sucker_punch_wrapper.rb create mode 100644 lib/active_job/queue_adapters/sucker_punch_adapter.rb create mode 100644 test/adapters/sucker_punch.rb diff --git a/Gemfile b/Gemfile index c0c7f2da83..e9b5ee9c8b 100644 --- a/Gemfile +++ b/Gemfile @@ -4,3 +4,4 @@ gemspec gem 'resque' gem 'sidekiq' +gem 'sucker_punch' \ No newline at end of file diff --git a/Rakefile b/Rakefile index 82522f4a89..7f38657160 100644 --- a/Rakefile +++ b/Rakefile @@ -22,12 +22,12 @@ task :default => :test desc 'Run all adapter tests' task :test do - tasks = %w(test_inline test_resque test_sidekiq) + tasks = %w(test_inline test_resque test_sidekiq test_sucker_punch) run_without_aborting(*tasks) end -%w( inline resque sidekiq ).each do |adapter| +%w( inline resque sidekiq sucker_punch).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/base.rb b/lib/active_job/base.rb index d1fff27a3a..6cce770466 100644 --- a/lib/active_job/base.rb +++ b/lib/active_job/base.rb @@ -1,6 +1,7 @@ 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' module ActiveJob class Base diff --git a/lib/active_job/job_wrappers/sucker_punch_wrapper.rb b/lib/active_job/job_wrappers/sucker_punch_wrapper.rb new file mode 100644 index 0000000000..80648792ca --- /dev/null +++ b/lib/active_job/job_wrappers/sucker_punch_wrapper.rb @@ -0,0 +1,11 @@ +module ActiveJob + module JobWrappers + class SuckerPunchWrapper + include SuckerPunch::Job + + def perform(job_name, *args) + job_name.perform(*args) + end + end + end +end diff --git a/lib/active_job/queue_adapters/sucker_punch_adapter.rb b/lib/active_job/queue_adapters/sucker_punch_adapter.rb new file mode 100644 index 0000000000..8191e5a1df --- /dev/null +++ b/lib/active_job/queue_adapters/sucker_punch_adapter.rb @@ -0,0 +1,14 @@ +require 'sucker_punch' +require 'active_job/job_wrappers/sucker_punch_wrapper' + +module ActiveJob + module QueueAdapters + class SuckerPunchAdapter + class << self + def queue(job, *args) + JobWrappers::SuckerPunchWrapper.new.async.perform(job, *args) + end + end + end + end +end diff --git a/test/adapters/sucker_punch.rb b/test/adapters/sucker_punch.rb new file mode 100644 index 0000000000..a373552262 --- /dev/null +++ b/test/adapters/sucker_punch.rb @@ -0,0 +1,2 @@ +require 'sucker_punch/testing/inline' +ActiveJob::Base.queue_adapter = ActiveJob::QueueAdapters::SuckerPunchAdapter -- cgit v1.2.3