activeasync 0.0.2 → 0.0.3
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/CHANGELOG.md +4 -0
- data/README.md +7 -8
- data/lib/active_async.rb +30 -0
- data/lib/active_async/rspec.rb +12 -4
- data/lib/active_async/version.rb +1 -1
- data/spec/active_async/rspec_spec.rb +23 -0
- data/spec/active_async_spec.rb +34 -0
- metadata +112 -68
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## 0.0.3 (2012-02-07)
|
2
|
+
* Ability to set ActiveAsync.background via ActiveAsync.mode = :resque or :fake_resque
|
3
|
+
* RSpec around blocks: :enable_resque, :stub_resque
|
4
|
+
|
1
5
|
## 0.0.2 (2012-01-26)
|
2
6
|
* railtie for initializing activeasync in rails
|
3
7
|
* rspec module for use in testing
|
data/README.md
CHANGED
@@ -5,6 +5,11 @@ and ruby classes to run methods asynchronously.
|
|
5
5
|
|
6
6
|
ActiveAsync currently depends on Resque and ActiveSupport.
|
7
7
|
|
8
|
+
Ruby support:
|
9
|
+
- 1.8.7
|
10
|
+
- 1.9.2
|
11
|
+
- 1.9.3
|
12
|
+
|
8
13
|
[](http://travis-ci.org/challengepost/activeasync)
|
9
14
|
|
10
15
|
## Install
|
@@ -28,10 +33,9 @@ require 'active_async'
|
|
28
33
|
class HeavyLifter
|
29
34
|
include ActiveAsync::Async
|
30
35
|
|
31
|
-
def lift(*stuff)
|
36
|
+
def self.lift(*stuff)
|
32
37
|
# heavy lifting
|
33
38
|
end
|
34
|
-
|
35
39
|
end
|
36
40
|
|
37
41
|
HeavyLifter.async(:lift, 1, 2, 3)
|
@@ -45,11 +49,9 @@ require 'active_async/railtie'
|
|
45
49
|
|
46
50
|
# app/models/risky_business.rb
|
47
51
|
class RiskyBusiness < ActiveRecord::Base
|
48
|
-
|
49
52
|
def party_time
|
50
53
|
# all night long
|
51
54
|
end
|
52
|
-
|
53
55
|
end
|
54
56
|
|
55
57
|
business = RiskyBusiness.last
|
@@ -65,7 +67,6 @@ class LateNite < ActiveRecord::Base
|
|
65
67
|
def drive_home
|
66
68
|
# traffic jam
|
67
69
|
end
|
68
|
-
|
69
70
|
end
|
70
71
|
|
71
72
|
late_nite = LateNite.last
|
@@ -77,15 +78,13 @@ late_nite.save # runs late_night#drive_home asynchronously after
|
|
77
78
|
ActiveAsync comes with some helpers support for RSpec.
|
78
79
|
|
79
80
|
To remove Resque dependency from some of your specs, use the :stub_resque option in
|
80
|
-
|
81
|
+
selected spec blocks. Async methods will run in the foreground.
|
81
82
|
|
82
83
|
``` ruby
|
83
84
|
# spec/spec_helper.rb
|
84
|
-
|
85
85
|
require 'active_async/rspec'
|
86
86
|
|
87
87
|
# spec/models/late_nite_spec.rb
|
88
|
-
|
89
88
|
it "drive home after late nite save", :stub_resque do
|
90
89
|
# all methods run in foreground
|
91
90
|
end
|
data/lib/active_async.rb
CHANGED
@@ -7,6 +7,8 @@ require "active_async/callbacks"
|
|
7
7
|
module ActiveAsync
|
8
8
|
extend self
|
9
9
|
|
10
|
+
class ModeNotSupportedError < StandardError; end
|
11
|
+
|
10
12
|
def background
|
11
13
|
@background ||= ::Resque
|
12
14
|
end
|
@@ -15,8 +17,36 @@ module ActiveAsync
|
|
15
17
|
@background = background
|
16
18
|
end
|
17
19
|
|
20
|
+
def enqueue(*args)
|
21
|
+
background.enqueue(*args)
|
22
|
+
end
|
23
|
+
|
18
24
|
def reset!
|
19
25
|
@background = nil
|
26
|
+
@mode = nil
|
27
|
+
end
|
28
|
+
|
29
|
+
def mode=(mode)
|
30
|
+
set_background_for_mode(mode)
|
31
|
+
@mode = mode
|
32
|
+
end
|
33
|
+
|
34
|
+
def mode
|
35
|
+
@mode || (mode = :resque)
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def set_background_for_mode(mode)
|
41
|
+
case mode
|
42
|
+
when :resque
|
43
|
+
@background = ::Resque
|
44
|
+
when :fake_resque
|
45
|
+
require 'active_async/fake_resque'
|
46
|
+
@background = FakeResque
|
47
|
+
else
|
48
|
+
raise ModeNotSupportedError
|
49
|
+
end
|
20
50
|
end
|
21
51
|
|
22
52
|
end
|
data/lib/active_async/rspec.rb
CHANGED
@@ -3,11 +3,19 @@ require 'active_async/fake_resque'
|
|
3
3
|
|
4
4
|
RSpec.configure do |config|
|
5
5
|
config.treat_symbols_as_metadata_keys_with_true_values = true
|
6
|
-
|
7
|
-
|
6
|
+
|
7
|
+
config.around(:each, :stub_resque) do |example|
|
8
|
+
async_mode = ActiveAsync.mode
|
9
|
+
ActiveAsync.mode = :fake_resque
|
10
|
+
example.run
|
11
|
+
ActiveAsync.mode = async_mode
|
8
12
|
end
|
9
13
|
|
10
|
-
config.
|
11
|
-
|
14
|
+
config.around(:each, :enable_resque) do |example|
|
15
|
+
async_mode = ActiveAsync.mode
|
16
|
+
ActiveAsync.mode = :resque
|
17
|
+
example.run
|
18
|
+
ActiveAsync.mode = async_mode
|
12
19
|
end
|
20
|
+
|
13
21
|
end
|
data/lib/active_async/version.rb
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "ActiveAsync::RSpec" do
|
4
|
+
|
5
|
+
describe ":stub_resque block" do
|
6
|
+
|
7
|
+
it "should set async mode to ::Resque in example", :stub_resque do
|
8
|
+
ActiveAsync.mode.should == :fake_resque
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should stub_resque in example", :stub_resque do
|
12
|
+
ActiveAsync.background.should == ActiveAsync::FakeResque
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should set async mode to ActiveAsync::FakeResque in example", :enable_resque do
|
16
|
+
ActiveAsync.mode.should == :resque
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should set async mode to ActiveAsync::FakeResque in example", :enable_resque do
|
20
|
+
ActiveAsync.background.should == ::Resque
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/spec/active_async_spec.rb
CHANGED
@@ -16,4 +16,38 @@ describe ActiveAsync do
|
|
16
16
|
ActiveAsync.background.should == ActiveAsync::FakeResque
|
17
17
|
end
|
18
18
|
end
|
19
|
+
|
20
|
+
describe "enqueue", :stub_resque do
|
21
|
+
|
22
|
+
it "should call enqueue on background strategy" do
|
23
|
+
ActiveAsync::FakeResque.should_receive(:enqueue).with(:args)
|
24
|
+
ActiveAsync.enqueue(:args)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "mode=" do
|
29
|
+
before(:each) do
|
30
|
+
ActiveAsync.reset!
|
31
|
+
end
|
32
|
+
|
33
|
+
it "setting to :fake_resque enables FakeResque" do
|
34
|
+
ActiveAsync.mode = :fake_resque
|
35
|
+
ActiveAsync.background.should == ActiveAsync::FakeResque
|
36
|
+
end
|
37
|
+
|
38
|
+
it "setting to :resque enables Resque" do
|
39
|
+
ActiveAsync.mode = :resque
|
40
|
+
ActiveAsync.background.should == ::Resque
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should raise ModeNotSupportedError otherwise" do
|
44
|
+
lambda { ActiveAsync.mode = :mode_doesnt_exist }.should raise_error(ActiveAsync::ModeNotSupportedError)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should return mode" do
|
48
|
+
ActiveAsync.mode = :fake_resque
|
49
|
+
ActiveAsync.mode.should == :fake_resque
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
19
53
|
end
|
metadata
CHANGED
@@ -1,90 +1,123 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: activeasync
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Ross Kaffenberger
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
+
|
18
|
+
date: 2012-02-07 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
17
22
|
none: false
|
18
|
-
requirements:
|
23
|
+
requirements:
|
19
24
|
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
hash: 27
|
27
|
+
segments:
|
28
|
+
- 1
|
29
|
+
- 10
|
30
|
+
version: "1.10"
|
31
|
+
requirement: *id001
|
32
|
+
prerelease: false
|
33
|
+
name: resque
|
22
34
|
type: :runtime
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
37
|
+
none: false
|
38
|
+
requirements:
|
39
|
+
- - ~>
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
hash: 7
|
42
|
+
segments:
|
43
|
+
- 3
|
44
|
+
- 0
|
45
|
+
version: "3.0"
|
46
|
+
requirement: *id002
|
23
47
|
prerelease: false
|
24
|
-
version_requirements: *70145636764700
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
48
|
name: activesupport
|
27
|
-
|
49
|
+
type: :runtime
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
28
52
|
none: false
|
29
|
-
requirements:
|
53
|
+
requirements:
|
30
54
|
- - ~>
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
|
33
|
-
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
hash: 7
|
57
|
+
segments:
|
58
|
+
- 3
|
59
|
+
- 0
|
60
|
+
version: "3.0"
|
61
|
+
requirement: *id003
|
34
62
|
prerelease: false
|
35
|
-
version_requirements: *70145636764160
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
63
|
name: rails
|
38
|
-
requirement: &70145636763680 !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
40
|
-
requirements:
|
41
|
-
- - ~>
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: '3.0'
|
44
64
|
type: :development
|
45
|
-
|
46
|
-
version_requirements:
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: rspec
|
49
|
-
requirement: &70145636763200 !ruby/object:Gem::Requirement
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
50
67
|
none: false
|
51
|
-
requirements:
|
68
|
+
requirements:
|
52
69
|
- - ~>
|
53
|
-
- !ruby/object:Gem::Version
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
hash: 47
|
72
|
+
segments:
|
73
|
+
- 2
|
74
|
+
- 8
|
75
|
+
- 0
|
54
76
|
version: 2.8.0
|
55
|
-
|
77
|
+
requirement: *id004
|
56
78
|
prerelease: false
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
79
|
+
name: rspec
|
80
|
+
type: :development
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
61
83
|
none: false
|
62
|
-
requirements:
|
84
|
+
requirements:
|
63
85
|
- - ~>
|
64
|
-
- !ruby/object:Gem::Version
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
hash: 3
|
88
|
+
segments:
|
89
|
+
- 0
|
90
|
+
- 7
|
91
|
+
- 0
|
65
92
|
version: 0.7.0
|
93
|
+
requirement: *id005
|
94
|
+
prerelease: false
|
95
|
+
name: database_cleaner
|
66
96
|
type: :development
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
99
|
+
none: false
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
hash: 3
|
104
|
+
segments:
|
105
|
+
- 0
|
106
|
+
version: "0"
|
107
|
+
requirement: *id006
|
67
108
|
prerelease: false
|
68
|
-
version_requirements: *70145636762700
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
109
|
name: sqlite3
|
71
|
-
requirement: &70145636762300 !ruby/object:Gem::Requirement
|
72
|
-
none: false
|
73
|
-
requirements:
|
74
|
-
- - ! '>='
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: '0'
|
77
110
|
type: :development
|
78
|
-
|
79
|
-
|
80
|
-
description: ! 'Provides async methods ruby objects for queuing background jobs. Currently
|
81
|
-
supports Resque. Bonus: callback hooks for ActiveRecord objects'
|
82
|
-
email:
|
111
|
+
description: "Provides async methods ruby objects for queuing background jobs. Currently supports Resque. Bonus: callback hooks for ActiveRecord objects"
|
112
|
+
email:
|
83
113
|
- rosskaff@gmail.com
|
84
114
|
executables: []
|
115
|
+
|
85
116
|
extensions: []
|
117
|
+
|
86
118
|
extra_rdoc_files: []
|
87
|
-
|
119
|
+
|
120
|
+
files:
|
88
121
|
- .gitignore
|
89
122
|
- .travis.yml
|
90
123
|
- CHANGELOG.md
|
@@ -105,6 +138,7 @@ files:
|
|
105
138
|
- spec/active_async/async_spec.rb
|
106
139
|
- spec/active_async/callbacks_spec.rb
|
107
140
|
- spec/active_async/fake_resque_spec.rb
|
141
|
+
- spec/active_async/rspec_spec.rb
|
108
142
|
- spec/active_async_spec.rb
|
109
143
|
- spec/dummy/.gitignore
|
110
144
|
- spec/dummy/Rakefile
|
@@ -137,28 +171,38 @@ files:
|
|
137
171
|
- spec/dummy/log/.gitkeep
|
138
172
|
- spec/dummy/script/rails
|
139
173
|
- spec/spec_helper.rb
|
140
|
-
homepage:
|
174
|
+
homepage: ""
|
141
175
|
licenses: []
|
176
|
+
|
142
177
|
post_install_message:
|
143
178
|
rdoc_options: []
|
144
|
-
|
179
|
+
|
180
|
+
require_paths:
|
145
181
|
- lib
|
146
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
182
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
147
183
|
none: false
|
148
|
-
requirements:
|
149
|
-
- -
|
150
|
-
- !ruby/object:Gem::Version
|
151
|
-
|
152
|
-
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
hash: 3
|
188
|
+
segments:
|
189
|
+
- 0
|
190
|
+
version: "0"
|
191
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
192
|
none: false
|
154
|
-
requirements:
|
155
|
-
- -
|
156
|
-
- !ruby/object:Gem::Version
|
157
|
-
|
193
|
+
requirements:
|
194
|
+
- - ">="
|
195
|
+
- !ruby/object:Gem::Version
|
196
|
+
hash: 3
|
197
|
+
segments:
|
198
|
+
- 0
|
199
|
+
version: "0"
|
158
200
|
requirements: []
|
201
|
+
|
159
202
|
rubyforge_project: activeasync
|
160
|
-
rubygems_version: 1.8.
|
203
|
+
rubygems_version: 1.8.10
|
161
204
|
signing_key:
|
162
205
|
specification_version: 3
|
163
206
|
summary: Add async support to ruby objects
|
164
207
|
test_files: []
|
208
|
+
|