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 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
- module Jobs
16
- class ExampleJob < Struct.new(:foo)
17
- def perform
18
- # perform magically delicious task
19
- end
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,13 @@
1
+ module ActiveQueue
2
+ module Adapter
3
+
4
+ class DefaultAdapter
5
+ def adapter_name
6
+ "insta-queue"
7
+ end
8
+ def enqueue(job_klass, options = { })
9
+ job_klass.perform
10
+ end
11
+ end
12
+ end
13
+ 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
- def self.adapters
7
- ActiveQueue::Adapters
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
- version: 0.0.6
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-04-04 00:00:00 -04:00
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/adapters/delayed_job_adapter.rb
26
- - lib/active_queue/adapters/dummy_adapter.rb
27
- - lib/active_queue/adapters/resque_adapter.rb
28
- - lib/active_queue/job_runner.rb
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.5
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
@@ -1,9 +0,0 @@
1
- module ActiveQueue
2
- # A convinient way to get at Merb::Cache
3
- def self.job_runner
4
- ActiveQueue::JobRunner
5
- end
6
- module JobRunner
7
-
8
- end
9
- end