wresque_wrapper 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/Gemfile ADDED
@@ -0,0 +1,12 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem "resque", "~> 1.10.0"
4
+ gem "rails", ">= 2.1.0"
5
+
6
+ group :development do
7
+ gem "rspec", ">= 2.0.0"
8
+ gem "mocha", "~> 0.9.10"
9
+ gem "bundler", "~> 1.0.0"
10
+ gem "jeweler", "~> 1.5.2"
11
+ gem "rcov", ">= 0"
12
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,109 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ abstract (1.0.0)
5
+ actionmailer (3.0.3)
6
+ actionpack (= 3.0.3)
7
+ mail (~> 2.2.9)
8
+ actionpack (3.0.3)
9
+ activemodel (= 3.0.3)
10
+ activesupport (= 3.0.3)
11
+ builder (~> 2.1.2)
12
+ erubis (~> 2.6.6)
13
+ i18n (~> 0.4)
14
+ rack (~> 1.2.1)
15
+ rack-mount (~> 0.6.13)
16
+ rack-test (~> 0.5.6)
17
+ tzinfo (~> 0.3.23)
18
+ activemodel (3.0.3)
19
+ activesupport (= 3.0.3)
20
+ builder (~> 2.1.2)
21
+ i18n (~> 0.4)
22
+ activerecord (3.0.3)
23
+ activemodel (= 3.0.3)
24
+ activesupport (= 3.0.3)
25
+ arel (~> 2.0.2)
26
+ tzinfo (~> 0.3.23)
27
+ activeresource (3.0.3)
28
+ activemodel (= 3.0.3)
29
+ activesupport (= 3.0.3)
30
+ activesupport (3.0.3)
31
+ arel (2.0.7)
32
+ builder (2.1.2)
33
+ diff-lcs (1.1.2)
34
+ erubis (2.6.6)
35
+ abstract (>= 1.0.0)
36
+ git (1.2.5)
37
+ i18n (0.5.0)
38
+ jeweler (1.5.2)
39
+ bundler (~> 1.0.0)
40
+ git (>= 1.2.5)
41
+ rake
42
+ json (1.4.6)
43
+ mail (2.2.14)
44
+ activesupport (>= 2.3.6)
45
+ i18n (>= 0.4.0)
46
+ mime-types (~> 1.16)
47
+ treetop (~> 1.4.8)
48
+ mime-types (1.16)
49
+ mocha (0.9.10)
50
+ rake
51
+ polyglot (0.3.1)
52
+ rack (1.2.1)
53
+ rack-mount (0.6.13)
54
+ rack (>= 1.0.0)
55
+ rack-test (0.5.7)
56
+ rack (>= 1.0)
57
+ rails (3.0.3)
58
+ actionmailer (= 3.0.3)
59
+ actionpack (= 3.0.3)
60
+ activerecord (= 3.0.3)
61
+ activeresource (= 3.0.3)
62
+ activesupport (= 3.0.3)
63
+ bundler (~> 1.0)
64
+ railties (= 3.0.3)
65
+ railties (3.0.3)
66
+ actionpack (= 3.0.3)
67
+ activesupport (= 3.0.3)
68
+ rake (>= 0.8.7)
69
+ thor (~> 0.14.4)
70
+ rake (0.8.7)
71
+ rcov (0.9.9)
72
+ redis (2.1.1)
73
+ redis-namespace (0.8.0)
74
+ redis (< 3.0.0)
75
+ resque (1.10.0)
76
+ json (~> 1.4.6)
77
+ redis-namespace (~> 0.8.0)
78
+ sinatra (>= 0.9.2)
79
+ vegas (~> 0.1.2)
80
+ rspec (2.4.0)
81
+ rspec-core (~> 2.4.0)
82
+ rspec-expectations (~> 2.4.0)
83
+ rspec-mocks (~> 2.4.0)
84
+ rspec-core (2.4.0)
85
+ rspec-expectations (2.4.0)
86
+ diff-lcs (~> 1.1.2)
87
+ rspec-mocks (2.4.0)
88
+ sinatra (1.1.2)
89
+ rack (~> 1.1)
90
+ tilt (~> 1.2)
91
+ thor (0.14.6)
92
+ tilt (1.2.2)
93
+ treetop (1.4.9)
94
+ polyglot (>= 0.3.1)
95
+ tzinfo (0.3.24)
96
+ vegas (0.1.8)
97
+ rack (>= 1.0.0)
98
+
99
+ PLATFORMS
100
+ ruby
101
+
102
+ DEPENDENCIES
103
+ bundler (~> 1.0.0)
104
+ jeweler (~> 1.5.2)
105
+ mocha (~> 0.9.10)
106
+ rails (>= 2.1.0)
107
+ rcov
108
+ resque (~> 1.10.0)
109
+ rspec (>= 2.0.0)
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Simon Coffey
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,23 @@
1
+ = wresque_wrapper
2
+
3
+ A simple wrapper to allow inline queueing of arbitrary methods to Resque, e.g.:
4
+
5
+ MyClass.delay(:queue => :bigjobs).some_class_method
6
+
7
+ my_instance.delay(:queue => :jobsworth).some_instance_method
8
+
9
+ == Contributing to wresque_wrapper
10
+
11
+ * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
12
+ * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
13
+ * Fork the project
14
+ * Start a feature/bugfix branch
15
+ * Commit and push until you are happy with your contribution
16
+ * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
17
+ * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
18
+
19
+ == Copyright
20
+
21
+ Copyright (c) 2011 Tribesports Ltd. See LICENSE.txt for
22
+ further details.
23
+
data/Rakefile ADDED
@@ -0,0 +1,55 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'rake'
11
+
12
+ require 'jeweler'
13
+ Jeweler::Tasks.new do |gem|
14
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
15
+ gem.name = "wresque_wrapper"
16
+ gem.homepage = "http://github.com/simon@urbanautomaton.com/wresque_wrapper"
17
+ gem.license = "MIT"
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}
20
+ gem.email = "simon@tribesports.com"
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
+ end
29
+ Jeweler::RubygemsDotOrgTasks.new
30
+
31
+ require 'rake/testtask'
32
+ Rake::TestTask.new(:test) do |test|
33
+ test.libs << 'lib' << 'test'
34
+ test.pattern = 'test/**/test_*.rb'
35
+ test.verbose = true
36
+ end
37
+
38
+ require 'rcov/rcovtask'
39
+ Rcov::RcovTask.new do |test|
40
+ test.libs << 'test'
41
+ test.pattern = 'test/**/test_*.rb'
42
+ test.verbose = true
43
+ end
44
+
45
+ task :default => :test
46
+
47
+ require 'rake/rdoctask'
48
+ Rake::RDocTask.new do |rdoc|
49
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
50
+
51
+ rdoc.rdoc_dir = 'rdoc'
52
+ rdoc.title = "wresque_wrapper #{version}"
53
+ rdoc.rdoc_files.include('README*')
54
+ rdoc.rdoc_files.include('lib/**/*.rb')
55
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
data/init.rb ADDED
@@ -0,0 +1,3 @@
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
@@ -0,0 +1,7 @@
1
+ # Requires supporting ruby files with custom matchers and macros, etc,
2
+ # in spec/support/ and its subdirectories.
3
+ Dir["spec/support/**/*.rb"].each {|f| require f}
4
+
5
+ RSpec.configure do |config|
6
+ config.mock_with :mocha
7
+ end
@@ -0,0 +1,137 @@
1
+ require 'spec_helper'
2
+ require 'wresque_wrapper'
3
+
4
+ describe WresqueWrapper do
5
+
6
+ before(:all) do
7
+ module ActiveRecord
8
+ class Base; end
9
+ end
10
+ end
11
+
12
+ before(:each) do
13
+ class DummyClass
14
+ extend WresqueWrapper
15
+ default_worker_queue :dummy_queue
16
+ def id; 1; end
17
+ end
18
+
19
+ ActiveRecord::Base.stubs(:verify_active_connections!).returns(true)
20
+
21
+ @dummy = DummyClass.new
22
+ end
23
+
24
+ describe "Class methods" do
25
+ describe ".extended" do
26
+ it "should add accessors" do
27
+ DummyClass.should respond_to :queue
28
+ DummyClass.should respond_to :default_queue
29
+ end
30
+
31
+ it "should add the instance methods" do
32
+ @dummy.should respond_to :delay
33
+ end
34
+ end
35
+
36
+ describe ".default_worker_queue" do
37
+ it "should set the default queue" do
38
+ DummyClass.default_worker_queue(:dummier_queue)
39
+ DummyClass.default_queue.should eql :dummier_queue
40
+ end
41
+ end
42
+
43
+ describe ".perform" do
44
+ it "should send the method to an instance if given an id" do
45
+ test_method = :test_method
46
+ test_args = [1,2,3]
47
+ DummyClass.expects(:find).once.returns(@dummy)
48
+ @dummy.expects(:send).with(test_method,*test_args).once.returns(true)
49
+ DummyClass.perform(1,test_method,*test_args)
50
+ end
51
+
52
+ it "should send the method to the class if no id is given" do
53
+ test_method = :test_method
54
+ test_args = [1,2,3]
55
+ DummyClass.expects(:send).with(test_method,*test_args).once.returns(true)
56
+ DummyClass.perform(nil,test_method,*test_args)
57
+ end
58
+ end
59
+
60
+ describe ".delay" do
61
+ it "should return the appropriate proxy object" do
62
+ DummyClass.delay.class.should eql WresqueWrapper::WrapperProxies::Proxy
63
+ end
64
+
65
+ it "should raise an exception if no queue is set" do
66
+ DummyClass.default_queue = nil
67
+ lambda { DummyClass.delay }.should raise_error
68
+ end
69
+ end
70
+ end
71
+
72
+ describe "Instance methods" do
73
+ describe "#delay" do
74
+ it "should return the appropriate proxy object" do
75
+ @dummy.delay.class.should eql WresqueWrapper::WrapperProxies::Proxy
76
+ end
77
+
78
+ it "should raise an exception if no queue is set" do
79
+ DummyClass.default_queue = nil
80
+ lambda { @dummy.delay }.should raise_error
81
+ end
82
+ end
83
+ end
84
+
85
+ describe WresqueWrapper::WrapperProxies do
86
+ describe "Proxy for Class" do
87
+ before(:each) do
88
+ @class_proxy = WresqueWrapper::WrapperProxies::Proxy.new(DummyClass,
89
+ DummyClass,
90
+ nil,
91
+ :new_queue)
92
+ end
93
+
94
+ describe "#initialize" do
95
+ it "should set the target class's queue" do
96
+ DummyClass.queue.should eql :new_queue
97
+ end
98
+
99
+ it "should retain the target class" do
100
+ @class_proxy.target.should eql DummyClass
101
+ end
102
+ end
103
+
104
+ describe "#method_missing" do
105
+ end
106
+
107
+ describe "#respond_to?" do
108
+ end
109
+ end
110
+
111
+ describe "Proxy for instance" do
112
+ before(:each) do
113
+ @instance_proxy = WresqueWrapper::WrapperProxies::Proxy.new(@dummy,
114
+ @dummy.class,
115
+ @dummy.id,
116
+ :new_queue)
117
+ end
118
+
119
+ describe "#initialize" do
120
+ it "should set the target class's queue" do
121
+ DummyClass.queue.should eql :new_queue
122
+ end
123
+
124
+ it "should retain the target instance" do
125
+ @instance_proxy.target.should eql @dummy
126
+ end
127
+ end
128
+
129
+ describe "#method_missing" do
130
+ end
131
+
132
+ describe "#respond_to?" do
133
+ end
134
+ end
135
+ end
136
+
137
+ end
@@ -0,0 +1,79 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{wresque_wrapper}
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Simon Coffey"]
12
+ s.date = %q{2011-02-02}
13
+ s.description = %q{Allows queueing of model methods, e.g. MyModel.delay.some_method}
14
+ s.email = %q{simon@tribesports.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ "Gemfile",
22
+ "Gemfile.lock",
23
+ "LICENSE.txt",
24
+ "README.rdoc",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "init.rb",
28
+ "lib/wresque_wrapper.rb",
29
+ "spec/spec_helper.rb",
30
+ "spec/wresque_wrapper_spec.rb",
31
+ "wresque_wrapper.gemspec"
32
+ ]
33
+ s.homepage = %q{http://github.com/simon@urbanautomaton.com/wresque_wrapper}
34
+ s.licenses = ["MIT"]
35
+ s.require_paths = ["lib"]
36
+ s.rubygems_version = %q{1.5.0}
37
+ s.summary = %q{Async-style queueing of class methods using Resque}
38
+ s.test_files = [
39
+ "spec/spec_helper.rb",
40
+ "spec/wresque_wrapper_spec.rb"
41
+ ]
42
+
43
+ if s.respond_to? :specification_version then
44
+ s.specification_version = 3
45
+
46
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
47
+ s.add_runtime_dependency(%q<resque>, ["~> 1.10.0"])
48
+ s.add_runtime_dependency(%q<rails>, [">= 2.1.0"])
49
+ s.add_development_dependency(%q<rspec>, [">= 2.0.0"])
50
+ s.add_development_dependency(%q<mocha>, ["~> 0.9.10"])
51
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
52
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
53
+ 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
+ else
57
+ s.add_dependency(%q<resque>, ["~> 1.10.0"])
58
+ s.add_dependency(%q<rails>, [">= 2.1.0"])
59
+ s.add_dependency(%q<rspec>, [">= 2.0.0"])
60
+ s.add_dependency(%q<mocha>, ["~> 0.9.10"])
61
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
62
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
63
+ 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
+ end
67
+ else
68
+ s.add_dependency(%q<resque>, ["~> 1.10.0"])
69
+ s.add_dependency(%q<rails>, [">= 2.1.0"])
70
+ s.add_dependency(%q<rspec>, [">= 2.0.0"])
71
+ s.add_dependency(%q<mocha>, ["~> 0.9.10"])
72
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
73
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
74
+ 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
+ end
78
+ end
79
+
metadata ADDED
@@ -0,0 +1,170 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wresque_wrapper
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
6
+ platform: ruby
7
+ authors:
8
+ - Simon Coffey
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-02-02 00:00:00 +00:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: resque
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ~>
22
+ - !ruby/object:Gem::Version
23
+ version: 1.10.0
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: rails
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 2.1.0
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: rspec
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: 2.0.0
46
+ type: :development
47
+ prerelease: false
48
+ version_requirements: *id003
49
+ - !ruby/object:Gem::Dependency
50
+ name: mocha
51
+ requirement: &id004 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: 0.9.10
57
+ type: :development
58
+ prerelease: false
59
+ version_requirements: *id004
60
+ - !ruby/object:Gem::Dependency
61
+ name: bundler
62
+ requirement: &id005 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: 1.0.0
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: *id005
71
+ - !ruby/object:Gem::Dependency
72
+ name: jeweler
73
+ requirement: &id006 !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ version: 1.5.2
79
+ type: :development
80
+ prerelease: false
81
+ version_requirements: *id006
82
+ - !ruby/object:Gem::Dependency
83
+ name: rcov
84
+ requirement: &id007 !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: "0"
90
+ type: :development
91
+ prerelease: false
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
116
+ email: simon@tribesports.com
117
+ executables: []
118
+
119
+ extensions: []
120
+
121
+ extra_rdoc_files:
122
+ - LICENSE.txt
123
+ - README.rdoc
124
+ files:
125
+ - .document
126
+ - Gemfile
127
+ - Gemfile.lock
128
+ - LICENSE.txt
129
+ - README.rdoc
130
+ - Rakefile
131
+ - VERSION
132
+ - init.rb
133
+ - lib/wresque_wrapper.rb
134
+ - spec/spec_helper.rb
135
+ - spec/wresque_wrapper_spec.rb
136
+ - wresque_wrapper.gemspec
137
+ has_rdoc: true
138
+ homepage: http://github.com/simon@urbanautomaton.com/wresque_wrapper
139
+ licenses:
140
+ - MIT
141
+ post_install_message:
142
+ rdoc_options: []
143
+
144
+ require_paths:
145
+ - lib
146
+ required_ruby_version: !ruby/object:Gem::Requirement
147
+ none: false
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ hash: -708839286159703456
152
+ segments:
153
+ - 0
154
+ version: "0"
155
+ required_rubygems_version: !ruby/object:Gem::Requirement
156
+ none: false
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: "0"
161
+ requirements: []
162
+
163
+ rubyforge_project:
164
+ rubygems_version: 1.5.0
165
+ signing_key:
166
+ specification_version: 3
167
+ summary: Async-style queueing of class methods using Resque
168
+ test_files:
169
+ - spec/spec_helper.rb
170
+ - spec/wresque_wrapper_spec.rb