wresque_wrapper 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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"