ayl-rails 0.1.2 → 0.1.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/VERSION +1 -1
- data/ayl-rails.gemspec +2 -2
- data/lib/ayl-rails/railtie.rb +13 -1
- data/spec/rails_extensions_spec.rb +44 -0
- metadata +17 -17
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.3
|
data/ayl-rails.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "ayl-rails"
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["j0hnds@gmail.com"]
|
12
|
-
s.date = "2011-
|
12
|
+
s.date = "2011-12-03"
|
13
13
|
s.description = "Partner to ayl to allow ActiveRecord after_* hooks to be made asynchronous."
|
14
14
|
s.email = "j0hnds@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/ayl-rails/railtie.rb
CHANGED
@@ -28,6 +28,18 @@ module Ayl
|
|
28
28
|
class_eval(method_code, __FILE__, __LINE__ - 1)
|
29
29
|
end
|
30
30
|
|
31
|
+
def skip_ayl_hooks
|
32
|
+
@ayl_skip_hooks ||= Hash.new(false)
|
33
|
+
end
|
34
|
+
|
35
|
+
def skip_ayl_callback(hook)
|
36
|
+
skip_ayl_hooks[hook] = true
|
37
|
+
end
|
38
|
+
|
39
|
+
def skip_ayl_callbacks
|
40
|
+
HOOKS.each { | hook | skip_ayl_callback(hook) }
|
41
|
+
end
|
42
|
+
|
31
43
|
def add_ayl_hook(hook, *args, &block)
|
32
44
|
if args && args.first.is_a?(Symbol)
|
33
45
|
method = args.shift
|
@@ -66,7 +78,7 @@ module Ayl
|
|
66
78
|
# So, the self.class target for the ayl_send is because we
|
67
79
|
# need to call the ayl_send method at the singleton level.
|
68
80
|
#
|
69
|
-
send(hook_key, *args) { |o| self.class.ayl_send_opts(ahook, message_options, o) }
|
81
|
+
send(hook_key, *args) { |o| self.class.ayl_send_opts(ahook, message_options, o) unless self.class.skip_ayl_hooks[hook_key] }
|
70
82
|
|
71
83
|
# This is for the worker's benefit
|
72
84
|
#
|
@@ -69,6 +69,31 @@ class MessageOptions::MyModel < ActiveRecord::Base
|
|
69
69
|
|
70
70
|
end
|
71
71
|
|
72
|
+
module AllCallbacks; end
|
73
|
+
|
74
|
+
class AllCallbacks::MyModel < ActiveRecord::Base
|
75
|
+
ayl_after_save :handle_after_save
|
76
|
+
|
77
|
+
ayl_after_create :handle_after_create
|
78
|
+
|
79
|
+
ayl_after_update :handle_after_update
|
80
|
+
|
81
|
+
private
|
82
|
+
|
83
|
+
def handle_after_save
|
84
|
+
WhatHappened.instance << "handle after save"
|
85
|
+
end
|
86
|
+
|
87
|
+
def handle_after_create
|
88
|
+
WhatHappened.instance << "handle after create"
|
89
|
+
end
|
90
|
+
|
91
|
+
def handle_after_update
|
92
|
+
WhatHappened.instance << "handle after save"
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
96
|
+
|
72
97
|
module ConditionalCallbacks; end
|
73
98
|
|
74
99
|
class ConditionalCallbacks::MyModel < ActiveRecord::Base
|
@@ -155,6 +180,25 @@ describe "Rails Extensions" do
|
|
155
180
|
WhatHappened.instance.what_ran.should be_nil
|
156
181
|
end
|
157
182
|
|
183
|
+
it "should not allow the callbacks to be run when the skip_ayl_callback is specified" do
|
184
|
+
AfterCreate::MyModel.skip_ayl_callback(:after_create)
|
185
|
+
|
186
|
+
model = AfterCreate::MyModel.new(:name => 'spud')
|
187
|
+
model.save.should be_true
|
188
|
+
|
189
|
+
WhatHappened.instance.what_ran.should_not be_present
|
190
|
+
end
|
191
|
+
|
192
|
+
it "should not allow any callbacks to be run when the skip_ayl_callbacks is specified" do
|
193
|
+
AllCallbacks::MyModel.skip_ayl_callbacks
|
194
|
+
|
195
|
+
model = AllCallbacks::MyModel.new(:name => 'spud')
|
196
|
+
model.save.should be_true
|
197
|
+
model.update_attribute(:name, 'joan')
|
198
|
+
|
199
|
+
WhatHappened.instance.what_ran.should_not be_present
|
200
|
+
end
|
201
|
+
|
158
202
|
end
|
159
203
|
|
160
204
|
context "when using the instance extensions" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ayl-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
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: 2011-
|
12
|
+
date: 2011-12-03 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ayl
|
16
|
-
requirement: &
|
16
|
+
requirement: &89533120 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.1.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *89533120
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rails
|
27
|
-
requirement: &
|
27
|
+
requirement: &89532820 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 3.0.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *89532820
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &89532470 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 2.3.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *89532470
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
|
-
requirement: &
|
49
|
+
requirement: &89532060 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.0.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *89532060
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: jeweler
|
60
|
-
requirement: &
|
60
|
+
requirement: &89531510 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 1.6.4
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *89531510
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rcov
|
71
|
-
requirement: &
|
71
|
+
requirement: &89531100 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *89531100
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: sqlite3
|
82
|
-
requirement: &
|
82
|
+
requirement: &89501540 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *89501540
|
91
91
|
description: Partner to ayl to allow ActiveRecord after_* hooks to be made asynchronous.
|
92
92
|
email: j0hnds@gmail.com
|
93
93
|
executables: []
|
@@ -126,7 +126,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
126
126
|
version: '0'
|
127
127
|
segments:
|
128
128
|
- 0
|
129
|
-
hash:
|
129
|
+
hash: 454924691
|
130
130
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
131
|
none: false
|
132
132
|
requirements:
|