perform_later 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +15 -3
- data/lib/perform_later/version.rb +1 -1
- data/spec/lib/object_perform_later_spec.rb +26 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/support/database_models.rb +4 -0
- data/spec/support/db/test.sqlite3 +0 -0
- metadata +16 -14
data/README.md
CHANGED
@@ -1,13 +1,25 @@
|
|
1
|
-
|
1
|
+
![Anything you can do, I can do later](http://f.cl.ly/items/1C3X0s1h0925390L3T40/Screen%20Shot%202012-02-20%20at%206.18.48%20PM.png)
|
2
|
+
|
3
|
+
[Image Credit](http://http://www.zazzle.com/anything_you_can_do_i_can_do_later_tshirt-235016986673229502)
|
2
4
|
|
3
5
|
## Overview
|
4
6
|
Perform later is a gem meant to work with the [Resque](http://github.com/defunkt/resque) queue system.
|
5
7
|
|
6
8
|
The gem handles queuing tasks without the need to have additional "Worker" classes or with any changes to your original model/object code base.
|
7
9
|
|
8
|
-
The gem
|
10
|
+
The gem will "translate" objects to a serializable (suitable for JSON) versions of those classes.
|
11
|
+
|
12
|
+
## Why?
|
13
|
+
*Why* should you queue something for later?
|
14
|
+
|
15
|
+
You should queue something whenever the method handles some heavy lifting, some timely actions like API, 3rd party HTTP requests and more.
|
16
|
+
|
17
|
+
The basic logic is that whatever you don't need to do NOW, you should do later, this will make your site faster and the users will feel it.
|
18
|
+
|
19
|
+
## Real life use case
|
20
|
+
At [Gogobot](http://gogobot.com) whenever you post a review, there's major score calculation going on, this can take 20-30 seconds sometimes.
|
9
21
|
|
10
|
-
The
|
22
|
+
The user should not wait for this on submit, it can be queued into later execution.
|
11
23
|
|
12
24
|
### Usage
|
13
25
|
You can call the `perform_later` method on any object or active record instance
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ObjectPerformLater do
|
4
|
+
let(:enabled) do
|
5
|
+
{ 'enabled' => true }
|
6
|
+
end
|
7
|
+
let(:disabled) do
|
8
|
+
{ 'enabled' => false }
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should insert a task into resque when the config is enabled" do
|
12
|
+
Resque.redis = $redis
|
13
|
+
|
14
|
+
ResquePerformLater.stub!(:config).and_return(enabled)
|
15
|
+
User.perform_later(:generic, :get_metadata)
|
16
|
+
|
17
|
+
Resque.peek(:generic, 0, 20).length.should == 1
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should send the method on the class when the config is disabled" do
|
21
|
+
ResquePerformLater.stub!(:config).and_return(disabled)
|
22
|
+
|
23
|
+
User.should_receive(:get_metadata)
|
24
|
+
User.perform_later(:generic, :get_metadata)
|
25
|
+
end
|
26
|
+
end
|
data/spec/spec_helper.rb
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: perform_later
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
12
|
+
date: 2012-02-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
16
|
-
requirement: &
|
16
|
+
requirement: &70104348288940 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.0.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70104348288940
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: redis
|
27
|
-
requirement: &
|
27
|
+
requirement: &70104348288200 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70104348288200
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: resque
|
38
|
-
requirement: &
|
38
|
+
requirement: &70104348287740 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70104348287740
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rake
|
49
|
-
requirement: &
|
49
|
+
requirement: &70104348287280 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70104348287280
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rspec
|
60
|
-
requirement: &
|
60
|
+
requirement: &70104348286700 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70104348286700
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: sqlite3
|
71
|
-
requirement: &
|
71
|
+
requirement: &70104348285800 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70104348285800
|
80
80
|
description: Queue any method in any class or instance with no need for additional
|
81
81
|
Worker class and no extra code
|
82
82
|
email:
|
@@ -101,6 +101,7 @@ files:
|
|
101
101
|
- license
|
102
102
|
- perform_later.gemspec
|
103
103
|
- spec/lib/active_record_perform_later_spec.rb
|
104
|
+
- spec/lib/object_perform_later_spec.rb
|
104
105
|
- spec/lib/resque_perform_later_spec.rb
|
105
106
|
- spec/spec_helper.rb
|
106
107
|
- spec/support/database_connection.rb
|
@@ -134,6 +135,7 @@ summary: Queue any method in any class or instance with no need for additional W
|
|
134
135
|
class and no extra code
|
135
136
|
test_files:
|
136
137
|
- spec/lib/active_record_perform_later_spec.rb
|
138
|
+
- spec/lib/object_perform_later_spec.rb
|
137
139
|
- spec/lib/resque_perform_later_spec.rb
|
138
140
|
- spec/spec_helper.rb
|
139
141
|
- spec/support/database_connection.rb
|