wresque_wrapper 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -2,10 +2,22 @@
2
2
 
3
3
  A simple wrapper to allow inline queueing of arbitrary methods to Resque, e.g.:
4
4
 
5
- MyClass.delay(:queue => :bigjobs).some_class_method
5
+ MyClass.delay(:queue => :big_jobs).some_class_method
6
6
 
7
7
  my_instance.delay(:queue => :jobsworth).some_instance_method
8
8
 
9
+ It shares the limitations of Resque with respect to queueable tasks; only methods whose arguments can be serialized as JSON objects can be queued.
10
+
11
+ == Usage
12
+
13
+ Any class derived from ActiveRecord::Base can use the delay method, optionally specifying a queue. Models can also specify a default queue using the #default_worker_queue class method:
14
+
15
+ class MyModel < ActiveRecord::Base
16
+ default_worker_queue :big_jobs
17
+ end
18
+
19
+ If a default queue is not specified for a class, then the queue must be given in any delay call made with that class or instances thereof.
20
+
9
21
  == Contributing to wresque_wrapper
10
22
 
11
23
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
data/Rakefile CHANGED
@@ -16,15 +16,9 @@ Jeweler::Tasks.new do |gem|
16
16
  gem.homepage = "http://github.com/simon@urbanautomaton.com/wresque_wrapper"
17
17
  gem.license = "MIT"
18
18
  gem.summary = %Q{Async-style queueing of class methods using Resque}
19
- gem.description = %Q{Allows queueing of model methods, e.g. MyModel.delay.some_method}
19
+ gem.description = %Q{Allows inline queueing of model methods to Resque, e.g. MyModel.delay.some_method, or some_instance.delay(:queue => :bigjobs).another_method}
20
20
  gem.email = "simon@tribesports.com"
21
21
  gem.authors = ["Simon Coffey"]
22
- # Include your dependencies below. Runtime dependencies are required when using your gem,
23
- # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
24
- # gem.add_runtime_dependency 'jabber4r', '> 0.1'
25
- # gem.add_development_dependency 'rspec', '> 1.2.3'
26
- gem.add_runtime_dependency 'resque', '~> 1.10.0'
27
- gem.add_runtime_dependency 'rails', '>= 2.1.0'
28
22
  end
29
23
  Jeweler::RubygemsDotOrgTasks.new
30
24
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
data/init.rb CHANGED
@@ -1,3 +1 @@
1
1
  require 'wresque_wrapper'
2
-
3
- ActiveRecord::Base.extend(WresqueWrapper)
@@ -0,0 +1,66 @@
1
+ module WresqueWrapper
2
+ def self.extended(base)
3
+ base.extend(ClassMethods)
4
+ base.send(:include, InstanceMethods)
5
+ end
6
+
7
+ module ClassMethods
8
+ def queue; @queue; end
9
+ def queue=(queue); @queue = queue; end
10
+
11
+ def default_queue; @default_queue; end
12
+ def default_queue=(queue); @default_queue = queue; end
13
+
14
+ def default_worker_queue(queue)
15
+ @default_queue = queue
16
+ end
17
+
18
+ def perform(id, method, *args)
19
+ ActiveRecord::Base.verify_active_connections!
20
+ if id
21
+ self.find(id).send(method, *args)
22
+ else
23
+ self.send(method, *args)
24
+ end
25
+ end
26
+
27
+ def delay(opts={})
28
+ WresqueWrapper::WrapperProxies::Proxy.new(self,self,nil,opts[:queue])
29
+ end
30
+ end
31
+
32
+ module InstanceMethods
33
+ def delay(opts={})
34
+ WresqueWrapper::WrapperProxies::Proxy.new(self,self.class,self.id,opts[:queue])
35
+ end
36
+ end
37
+
38
+ module WrapperProxies
39
+ class Proxy
40
+ attr_reader :target
41
+
42
+ def initialize(target,klass,target_id,queue)
43
+ queue ||= klass.default_queue
44
+ unless queue
45
+ raise RuntimeError, "No queue specified, and target class has no default queue", caller
46
+ end
47
+ @target = target
48
+ @klass = klass
49
+ @target_id = target_id
50
+ @klass.queue = queue
51
+ end
52
+
53
+ def method_missing(method,*args)
54
+ if @target.respond_to?(method)
55
+ Resque.enqueue(@target,@target_id,method,*args)
56
+ else
57
+ @target.send(method,*args)
58
+ end
59
+ end
60
+
61
+ def respond_to?(method)
62
+ super || @target.respond_to?(method)
63
+ end
64
+ end
65
+ end
66
+ end
@@ -1,66 +1,3 @@
1
- module WresqueWrapper
2
- def self.extended(base)
3
- base.extend(ClassMethods)
4
- base.send(:include, InstanceMethods)
5
- end
1
+ require File.dirname(__FILE__) + '/wrapper/wrapper'
6
2
 
7
- module ClassMethods
8
- def queue; @queue; end
9
- def queue=(queue); @queue = queue; end
10
-
11
- def default_queue; @default_queue; end
12
- def default_queue=(queue); @default_queue = queue; end
13
-
14
- def default_worker_queue(queue)
15
- @default_queue = queue
16
- end
17
-
18
- def perform(id, method, *args)
19
- ActiveRecord::Base.verify_active_connections!
20
- if id
21
- self.find(id).send(method, *args)
22
- else
23
- self.send(method, *args)
24
- end
25
- end
26
-
27
- def delay(opts={})
28
- WresqueWrapper::WrapperProxies::Proxy.new(self,self,nil,opts[:queue])
29
- end
30
- end
31
-
32
- module InstanceMethods
33
- def delay(opts={})
34
- WresqueWrapper::WrapperProxies::Proxy.new(self,self.class,self.id,opts[:queue])
35
- end
36
- end
37
-
38
- module WrapperProxies
39
- class Proxy
40
- attr_reader :target
41
-
42
- def initialize(target,klass,target_id,queue)
43
- queue ||= klass.default_queue
44
- unless queue
45
- raise RuntimeError, "No queue specified, and target class has no default queue", caller
46
- end
47
- @target = target
48
- @klass = klass
49
- @target_id = target_id
50
- @klass.queue = queue
51
- end
52
-
53
- def method_missing(method,*args)
54
- if @target.respond_to?(method)
55
- Resque.enqueue(@target,@target_id,method,*args)
56
- else
57
- @target.send(method,*args)
58
- end
59
- end
60
-
61
- def respond_to?(method)
62
- super || @target.respond_to?(method)
63
- end
64
- end
65
- end
66
- end
3
+ ActiveRecord::Base.extend(WresqueWrapper)
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
- require 'wresque_wrapper'
2
+ require 'wrapper/wrapper'
3
3
 
4
4
  describe WresqueWrapper do
5
5
 
@@ -5,12 +5,12 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{wresque_wrapper}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Simon Coffey"]
12
12
  s.date = %q{2011-02-02}
13
- s.description = %q{Allows queueing of model methods, e.g. MyModel.delay.some_method}
13
+ s.description = %q{Allows inline queueing of model methods to Resque, e.g. MyModel.delay.some_method, or some_instance.delay(:queue => :bigjobs).another_method}
14
14
  s.email = %q{simon@tribesports.com}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
@@ -25,6 +25,7 @@ Gem::Specification.new do |s|
25
25
  "Rakefile",
26
26
  "VERSION",
27
27
  "init.rb",
28
+ "lib/wrapper/wrapper.rb",
28
29
  "lib/wresque_wrapper.rb",
29
30
  "spec/spec_helper.rb",
30
31
  "spec/wresque_wrapper_spec.rb",
@@ -51,8 +52,6 @@ Gem::Specification.new do |s|
51
52
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
52
53
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
53
54
  s.add_development_dependency(%q<rcov>, [">= 0"])
54
- s.add_runtime_dependency(%q<resque>, ["~> 1.10.0"])
55
- s.add_runtime_dependency(%q<rails>, [">= 2.1.0"])
56
55
  else
57
56
  s.add_dependency(%q<resque>, ["~> 1.10.0"])
58
57
  s.add_dependency(%q<rails>, [">= 2.1.0"])
@@ -61,8 +60,6 @@ Gem::Specification.new do |s|
61
60
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
62
61
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
63
62
  s.add_dependency(%q<rcov>, [">= 0"])
64
- s.add_dependency(%q<resque>, ["~> 1.10.0"])
65
- s.add_dependency(%q<rails>, [">= 2.1.0"])
66
63
  end
67
64
  else
68
65
  s.add_dependency(%q<resque>, ["~> 1.10.0"])
@@ -72,8 +69,6 @@ Gem::Specification.new do |s|
72
69
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
73
70
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
74
71
  s.add_dependency(%q<rcov>, [">= 0"])
75
- s.add_dependency(%q<resque>, ["~> 1.10.0"])
76
- s.add_dependency(%q<rails>, [">= 2.1.0"])
77
72
  end
78
73
  end
79
74
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: wresque_wrapper
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.0
5
+ version: 0.1.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Simon Coffey
@@ -90,29 +90,7 @@ dependencies:
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: *id007
93
- - !ruby/object:Gem::Dependency
94
- name: resque
95
- requirement: &id008 !ruby/object:Gem::Requirement
96
- none: false
97
- requirements:
98
- - - ~>
99
- - !ruby/object:Gem::Version
100
- version: 1.10.0
101
- type: :runtime
102
- prerelease: false
103
- version_requirements: *id008
104
- - !ruby/object:Gem::Dependency
105
- name: rails
106
- requirement: &id009 !ruby/object:Gem::Requirement
107
- none: false
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: 2.1.0
112
- type: :runtime
113
- prerelease: false
114
- version_requirements: *id009
115
- description: Allows queueing of model methods, e.g. MyModel.delay.some_method
93
+ description: Allows inline queueing of model methods to Resque, e.g. MyModel.delay.some_method, or some_instance.delay(:queue => :bigjobs).another_method
116
94
  email: simon@tribesports.com
117
95
  executables: []
118
96
 
@@ -130,6 +108,7 @@ files:
130
108
  - Rakefile
131
109
  - VERSION
132
110
  - init.rb
111
+ - lib/wrapper/wrapper.rb
133
112
  - lib/wresque_wrapper.rb
134
113
  - spec/spec_helper.rb
135
114
  - spec/wresque_wrapper_spec.rb
@@ -148,7 +127,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
148
127
  requirements:
149
128
  - - ">="
150
129
  - !ruby/object:Gem::Version
151
- hash: -708839286159703456
130
+ hash: 2893642383965527989
152
131
  segments:
153
132
  - 0
154
133
  version: "0"