diff options
-rw-r--r-- | Gemfile | 5 | ||||
-rw-r--r-- | Gemfile.lock | 22 | ||||
-rw-r--r-- | Rakefile | 41 | ||||
-rw-r--r-- | lib/active_job/base.rb | 7 | ||||
-rw-r--r-- | lib/active_job/queue_adapters/resque_adapter.rb (renamed from lib/active_job/queue_adapters/inline_queue.rb) | 6 | ||||
-rw-r--r-- | test/adapters/inline.rb | 0 | ||||
-rw-r--r-- | test/adapters/resque.rb | 2 | ||||
-rw-r--r-- | test/helper.rb | 1 | ||||
-rw-r--r-- | test/jobs/hello_job.rb | 2 |
9 files changed, 76 insertions, 10 deletions
@@ -1,3 +1,6 @@ source 'https://rubygems.org' -gemspec
\ No newline at end of file +gemspec + +gem 'resque' + diff --git a/Gemfile.lock b/Gemfile.lock index d4b8ae3df8..213e0b8c10 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -16,12 +16,34 @@ GEM i18n (0.6.9) json (1.8.1) minitest (5.3.4) + mono_logger (1.1.0) + multi_json (1.9.3) + rack (1.5.2) + rack-protection (1.5.2) + rack + redis (3.0.7) + redis-namespace (1.4.1) + redis (~> 3.0.4) + resque (1.24.1) + mono_logger (~> 1.0) + multi_json (~> 1.0) + redis-namespace (~> 1.2) + sinatra (>= 0.9.2) + vegas (~> 0.1.2) + sinatra (1.4.4) + rack (~> 1.4) + rack-protection (~> 1.4) + tilt (~> 1.3, >= 1.3.4) thread_safe (0.3.3) + tilt (1.4.1) tzinfo (1.1.0) thread_safe (~> 0.1) + vegas (0.1.11) + rack (>= 1.0.0) PLATFORMS ruby DEPENDENCIES activejob! + resque @@ -2,13 +2,44 @@ dir = File.dirname(__FILE__) require 'rake/testtask' +def run_without_aborting(*tasks) + errors = [] + + tasks.each do |task| + begin + Rake::Task[task].invoke + rescue Exception + errors << task + end + end + + abort "Errors running #{errors.join(', ')}" if errors.any? +end + + + task :default => :test -Rake::TestTask.new do |t| - t.libs << "test" - t.test_files = Dir.glob("#{dir}/test/cases/**/*_test.rb").sort - t.warning = true - t.verbose = true +desc 'Run all adapter tests' +task :test do + tasks = %w(test_inline test_resque) + run_without_aborting(*tasks) +end + + +%w( inline resque ).each do |adapter| + Rake::TestTask.new("test_#{adapter}") do |t| + t.libs << 'test' + t.test_files = FileList['test/cases/**/*_test.rb'] + t.verbose = true + end + + namespace adapter do + task :test => "test_#{adapter}" + task(:env) { ENV['AJADAPTER'] = adapter } + end + + task "test_#{adapter}" => "#{adapter}:env" end require 'rubygems/package_task' diff --git a/lib/active_job/base.rb b/lib/active_job/base.rb index a404355026..e18c9d4309 100644 --- a/lib/active_job/base.rb +++ b/lib/active_job/base.rb @@ -1,10 +1,13 @@ -require 'active_job/queue_adapters/inline_queue' +require 'active_job/queue_adapters/inline_adapter' +require 'active_job/queue_adapters/resque_adapter' module ActiveJob class Base + cattr_accessor(:queue_adapter) { ActiveJob::QueueAdapters::InlineAdapter } + class << self def enqueue(*args) - ActiveJob::QueueAdapters::InlineQueue.queue self, *args + queue_adapter.queue self, *args end end end diff --git a/lib/active_job/queue_adapters/inline_queue.rb b/lib/active_job/queue_adapters/resque_adapter.rb index dd80c6a5a3..4155cd5bf9 100644 --- a/lib/active_job/queue_adapters/inline_queue.rb +++ b/lib/active_job/queue_adapters/resque_adapter.rb @@ -1,9 +1,11 @@ +require 'resque' + module ActiveJob module QueueAdapters - class InlineQueue + class ResqueAdapter class << self def queue(job, *args) - job.perform *args + Resque.enqueue(job, *args) end end end diff --git a/test/adapters/inline.rb b/test/adapters/inline.rb new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/test/adapters/inline.rb diff --git a/test/adapters/resque.rb b/test/adapters/resque.rb new file mode 100644 index 0000000000..7431d2d742 --- /dev/null +++ b/test/adapters/resque.rb @@ -0,0 +1,2 @@ +ActiveJob::Base.queue_adapter = ActiveJob::QueueAdapters::ResqueAdapter +Resque.inline = true diff --git a/test/helper.rb b/test/helper.rb index 4048ddbd3f..df0a2a53f8 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -4,5 +4,6 @@ Bundler.setup $LOAD_PATH << File.dirname(__FILE__ + "/../lib") require 'active_job' +require "adapters/#{ENV['AJADAPTER'] || 'inline'}" require 'active_support/testing/autorun' diff --git a/test/jobs/hello_job.rb b/test/jobs/hello_job.rb index d0e65f9674..469123fe0a 100644 --- a/test/jobs/hello_job.rb +++ b/test/jobs/hello_job.rb @@ -1,4 +1,6 @@ class HelloJob < ActiveJob::Base + @queue = :greetings + def self.perform(greeter = "David") $BUFFER << "#{greeter} says hello" end |