aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Gemfile5
-rw-r--r--Gemfile.lock22
-rw-r--r--Rakefile41
-rw-r--r--lib/active_job/base.rb7
-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.rb0
-rw-r--r--test/adapters/resque.rb2
-rw-r--r--test/helper.rb1
-rw-r--r--test/jobs/hello_job.rb2
9 files changed, 76 insertions, 10 deletions
diff --git a/Gemfile b/Gemfile
index cd8aa9e04c..aad6cc5441 100644
--- a/Gemfile
+++ b/Gemfile
@@ -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
diff --git a/Rakefile b/Rakefile
index 7e9f53ef41..2c94fbcace 100644
--- a/Rakefile
+++ b/Rakefile
@@ -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