perform_later 0.0.3 → 0.0.4
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.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
|
+

|
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
|