activequeue 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +10 -6
- data/lib/active_queue/adapter/delayed_job_adapter.rb +19 -0
- data/lib/active_queue/adapter/resque_adapter.rb +19 -0
- data/lib/active_queue/adapter.rb +13 -0
- data/lib/active_queue/job.rb +34 -0
- data/lib/activequeue.rb +3 -32
- metadata +16 -9
- data/lib/active_queue/adapters/delayed_job_adapter.rb +0 -19
- data/lib/active_queue/adapters/dummy_adapter.rb +0 -19
- data/lib/active_queue/adapters/resque_adapter.rb +0 -22
- data/lib/active_queue/job_runner.rb +0 -9
data/README.markdown
CHANGED
@@ -10,15 +10,19 @@ Overview
|
|
10
10
|
ActiveQueue allows you to create jobs and place them on whatever queue you have set as a requirement in
|
11
11
|
environment.rb. The first cut of this gem only supports DelayedJob and Resque. Background jobs can be any Ruby class or module that responds to perform. Your existing classes can easily be converted to background jobs or you can create new classes specifically to do work. Or, you can do both.
|
12
12
|
|
13
|
-
I place job classes withina Jobs module in models/jobs.rb and like so:
|
14
13
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
14
|
+
class EmailNotificationJob
|
15
|
+
attr_accessor :user_id
|
16
|
+
def initialize(options)
|
17
|
+
self.user_id = options[:user_id]
|
18
|
+
end
|
19
|
+
def perform
|
20
|
+
puts user_id
|
20
21
|
end
|
21
22
|
end
|
23
|
+
emailNote = EmailNotificationJob.new({:user_id => 1})
|
24
|
+
job = ActiveQueue::Job.new(emailNote, :adapter => "resque", :queue_name => :file_queue)
|
25
|
+
|
22
26
|
|
23
27
|
With ActiveQueue you can send any job to the configured queue like so
|
24
28
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# unless defined? Delayed
|
2
|
+
# require 'delayed_job'
|
3
|
+
# end
|
4
|
+
module ActiveQueue
|
5
|
+
module Adapter
|
6
|
+
|
7
|
+
class DelayedJobAdapter
|
8
|
+
def initialize(options = {})
|
9
|
+
@options = options
|
10
|
+
end
|
11
|
+
def adapter_name
|
12
|
+
"delayed_job"
|
13
|
+
end
|
14
|
+
def enqueue(job_klass, options = { })
|
15
|
+
Delayed::Job.enqueue(job_klass.new(options))
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
unless defined? Resque
|
2
|
+
require 'resque'
|
3
|
+
end
|
4
|
+
module ActiveQueue
|
5
|
+
module Adapter
|
6
|
+
|
7
|
+
class ResqueAdapter
|
8
|
+
def initialize(options = {})
|
9
|
+
@options = options
|
10
|
+
end
|
11
|
+
def adapter_name
|
12
|
+
"resque"
|
13
|
+
end
|
14
|
+
def enqueue(job_klass, options = { })
|
15
|
+
Resque.enqueue(job_klass, options)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
|
2
|
+
module ActiveQueue
|
3
|
+
|
4
|
+
class Job
|
5
|
+
@queue = :file_queue
|
6
|
+
attr_accessor :value, :options, :queue_adapter, :queue_name, :perform_action
|
7
|
+
def initialize(options = {})
|
8
|
+
@options = options
|
9
|
+
@value = options[:value]
|
10
|
+
@queue = options[:queue_name] ? options[:queue_name].to_sym : :file_queue
|
11
|
+
@queue_adapter = options[:adapter] ? options[:adapter] : Adapter::DefaultAdapter.new
|
12
|
+
if @queue_adapter.class == String
|
13
|
+
@queue_adapter = adapters[@queue_adapter] ? adapters[@queue_adapter].new : nil
|
14
|
+
end
|
15
|
+
end
|
16
|
+
def enqueue
|
17
|
+
@queue_adapter.enqueue(self.class, options)
|
18
|
+
end
|
19
|
+
def perform(options = nil)
|
20
|
+
success = true
|
21
|
+
begin
|
22
|
+
@value.perform(options)
|
23
|
+
rescue Exception => e
|
24
|
+
success = false
|
25
|
+
end
|
26
|
+
success
|
27
|
+
end
|
28
|
+
def adapters
|
29
|
+
{ "resque" => ActiveQueue::Adapter::ResqueAdapter,
|
30
|
+
"delayed" => ActiveQueue::Adapter::DelayedJobAdapter }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
data/lib/activequeue.rb
CHANGED
@@ -1,35 +1,6 @@
|
|
1
1
|
|
2
|
-
Dir[File.join(File.dirname(__FILE__), 'active_queue','adapters','*.rb')].each{|f| require f }
|
3
|
-
|
4
2
|
module ActiveQueue
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
end
|
9
|
-
module Adapters
|
10
|
-
def self.included(base) # :nodoc:
|
11
|
-
|
12
|
-
base.class_eval do
|
13
|
-
|
14
|
-
if defined? Delayed
|
15
|
-
include ActiveQueue::Adapters::DelayedJobAdapter
|
16
|
-
elsif defined? Resque
|
17
|
-
include ActiveQueue::Adapters::ResqueAdapter
|
18
|
-
else
|
19
|
-
include ActiveQueue::Adapters::DummyAdapter
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
class Queue
|
28
|
-
include Adapters
|
29
|
-
@queue = :file_queue
|
30
|
-
|
31
|
-
end
|
32
|
-
#Dir[File.join(File.dirname(__FILE__), 'active_queue', '*','*.rb')].each{|f| require f }
|
33
|
-
|
34
|
-
|
3
|
+
autoload :Adapter, 'active_queue/adapter'
|
4
|
+
autoload :Job, 'active_queue/job'
|
5
|
+
Dir[File.join(File.dirname(__FILE__), 'active_queue', 'adapter','*.rb')].each{|f| require f }
|
35
6
|
end
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activequeue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 7
|
9
|
+
version: 0.0.7
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Matthew Jording
|
@@ -9,7 +14,7 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-
|
17
|
+
date: 2010-05-19 00:00:00 -04:00
|
13
18
|
default_executable:
|
14
19
|
dependencies: []
|
15
20
|
|
@@ -22,10 +27,10 @@ extensions: []
|
|
22
27
|
extra_rdoc_files:
|
23
28
|
- README.markdown
|
24
29
|
files:
|
25
|
-
- lib/active_queue/
|
26
|
-
- lib/active_queue/
|
27
|
-
- lib/active_queue/
|
28
|
-
- lib/active_queue/
|
30
|
+
- lib/active_queue/adapter.rb
|
31
|
+
- lib/active_queue/adapter/delayed_job_adapter.rb
|
32
|
+
- lib/active_queue/adapter/resque_adapter.rb
|
33
|
+
- lib/active_queue/job.rb
|
29
34
|
- lib/activequeue.rb
|
30
35
|
- README.markdown
|
31
36
|
has_rdoc: true
|
@@ -41,18 +46,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
41
46
|
requirements:
|
42
47
|
- - ">="
|
43
48
|
- !ruby/object:Gem::Version
|
49
|
+
segments:
|
50
|
+
- 0
|
44
51
|
version: "0"
|
45
|
-
version:
|
46
52
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
47
53
|
requirements:
|
48
54
|
- - ">="
|
49
55
|
- !ruby/object:Gem::Version
|
56
|
+
segments:
|
57
|
+
- 0
|
50
58
|
version: "0"
|
51
|
-
version:
|
52
59
|
requirements: []
|
53
60
|
|
54
61
|
rubyforge_project:
|
55
|
-
rubygems_version: 1.3.
|
62
|
+
rubygems_version: 1.3.6
|
56
63
|
signing_key:
|
57
64
|
specification_version: 3
|
58
65
|
summary: ActiveQueue is a Rails abstraction of queue configuration and background job creation/specification.
|
@@ -1,19 +0,0 @@
|
|
1
|
-
|
2
|
-
module ActiveQueue::Adapters::DelayedJobAdapter
|
3
|
-
#Background jobs can be any Ruby class or module that responds to perform.
|
4
|
-
#Your existing classes can easily be converted to background jobs or
|
5
|
-
#you can create new classes specifically to do work.
|
6
|
-
#Or, you can do both.
|
7
|
-
def self.included(base)
|
8
|
-
base.extend(ClassMethods)
|
9
|
-
end
|
10
|
-
module ClassMethods
|
11
|
-
def adapter_name
|
12
|
-
"delayed"
|
13
|
-
end
|
14
|
-
def enqueue(job_runner_klass, options = { })
|
15
|
-
Delayed::Job.enqueue(job_runner_klass.new(options))
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module ActiveQueue::Adapters::DummyAdapter
|
2
|
-
|
3
|
-
#Background jobs can be any Ruby class or module that responds to perform.
|
4
|
-
#Your existing classes can easily be converted to background jobs or
|
5
|
-
#you can create new classes specifically to do work.
|
6
|
-
#Or, you can do both.
|
7
|
-
def self.included(base)
|
8
|
-
base.extend(ClassMethods)
|
9
|
-
end
|
10
|
-
module ClassMethods
|
11
|
-
def adapter_name
|
12
|
-
"dummy"
|
13
|
-
end
|
14
|
-
def enqueue(job_runner_klass, options = { })
|
15
|
-
true
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'resque'
|
2
|
-
|
3
|
-
module ActiveQueue::Adapters::ResqueAdapter
|
4
|
-
|
5
|
-
#Background jobs can be any Ruby class or module that responds to perform.
|
6
|
-
#Your existing classes can easily be converted to background jobs or
|
7
|
-
#you can create new classes specifically to do work.
|
8
|
-
#Or, you can do both.
|
9
|
-
def self.included(base)
|
10
|
-
base.extend(ClassMethods)
|
11
|
-
end
|
12
|
-
module ClassMethods
|
13
|
-
def adapter_name
|
14
|
-
"resque"
|
15
|
-
end
|
16
|
-
def enqueue(job_runner_klass, options = { })
|
17
|
-
|
18
|
-
Resque.enqueue(job_runner_klass, options)
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
end
|