aspect4r 0.7.1
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/.document +5 -0
- data/.gitignore +22 -0
- data/LICENSE +20 -0
- data/NOTES.rdoc +42 -0
- data/README.rdoc +70 -0
- data/Rakefile +45 -0
- data/VERSION +1 -0
- data/aspect4r.gemspec +108 -0
- data/examples/after_example.rb +30 -0
- data/examples/around_example.rb +29 -0
- data/examples/before_example.rb +62 -0
- data/examples/combined_example.rb +39 -0
- data/lib/aspect4r/after.rb +29 -0
- data/lib/aspect4r/around.rb +29 -0
- data/lib/aspect4r/base.rb +32 -0
- data/lib/aspect4r/before.rb +37 -0
- data/lib/aspect4r/classic.rb +12 -0
- data/lib/aspect4r/errors.rb +5 -0
- data/lib/aspect4r/extensions/class_extension.rb +20 -0
- data/lib/aspect4r/extensions/module_extension.rb +30 -0
- data/lib/aspect4r/helper.rb +171 -0
- data/lib/aspect4r/model/advice.rb +29 -0
- data/lib/aspect4r/model/advice_metadata.rb +27 -0
- data/lib/aspect4r/model/advices_for_method.rb +45 -0
- data/lib/aspect4r/model/aspect_data.rb +19 -0
- data/lib/aspect4r/return_this.rb +9 -0
- data/lib/aspect4r.rb +10 -0
- data/spec/aspect4r/after_spec.rb +121 -0
- data/spec/aspect4r/around_spec.rb +128 -0
- data/spec/aspect4r/before_spec.rb +148 -0
- data/spec/aspect4r/class_inheritance_spec.rb +254 -0
- data/spec/aspect4r/classic_spec.rb +44 -0
- data/spec/aspect4r/helper_spec.rb +117 -0
- data/spec/aspect4r/inheritance_inclusion_combined_spec.rb +98 -0
- data/spec/aspect4r/module_inclusion_spec.rb +208 -0
- data/spec/aspect4r/super_in_method_spec.rb +118 -0
- data/spec/aspect4r_spec.rb +295 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +11 -0
- data/test/after_test.rb +30 -0
- data/test/around_test.rb +28 -0
- data/test/before_test.rb +28 -0
- data/test/combined_test.rb +40 -0
- data/test/method_invocation_test.rb +28 -0
- data/test/test_helper.rb +9 -0
- metadata +147 -0
@@ -0,0 +1,254 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Aspect4r do
|
4
|
+
it "basic inheritance should work" do
|
5
|
+
parent = Class.new do
|
6
|
+
include Aspect4r
|
7
|
+
|
8
|
+
attr :value
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
@value = []
|
12
|
+
end
|
13
|
+
|
14
|
+
def test
|
15
|
+
@value << "test"
|
16
|
+
end
|
17
|
+
|
18
|
+
around :test do |proxy|
|
19
|
+
@value << "around1"
|
20
|
+
a4r_invoke proxy
|
21
|
+
@value << "around2"
|
22
|
+
end
|
23
|
+
|
24
|
+
before :test do
|
25
|
+
@value << "before"
|
26
|
+
end
|
27
|
+
|
28
|
+
after :test do |result|
|
29
|
+
@value << "after"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
child = Class.new(parent)
|
34
|
+
|
35
|
+
o = child.new
|
36
|
+
o.test
|
37
|
+
|
38
|
+
o.value.should == %w(before around1 test around2 after)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "override method" do
|
42
|
+
parent = Class.new do
|
43
|
+
include Aspect4r
|
44
|
+
|
45
|
+
attr :value
|
46
|
+
|
47
|
+
def initialize
|
48
|
+
@value = []
|
49
|
+
end
|
50
|
+
|
51
|
+
def test
|
52
|
+
@value << "test(parent)"
|
53
|
+
end
|
54
|
+
|
55
|
+
before :test do
|
56
|
+
@value << "before"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
child = Class.new(parent) do
|
61
|
+
def test
|
62
|
+
@value << "test"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
o = child.new
|
67
|
+
o.test
|
68
|
+
|
69
|
+
o.value.should == %w(test)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "override method and call super" do
|
73
|
+
parent = Class.new do
|
74
|
+
include Aspect4r
|
75
|
+
|
76
|
+
attr :value
|
77
|
+
|
78
|
+
def initialize
|
79
|
+
@value = []
|
80
|
+
end
|
81
|
+
|
82
|
+
def test
|
83
|
+
@value << "test(parent)"
|
84
|
+
end
|
85
|
+
|
86
|
+
before :test do
|
87
|
+
@value << "before"
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
child = Class.new(parent) do
|
92
|
+
def test
|
93
|
+
super
|
94
|
+
@value << "test"
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
o = child.new
|
99
|
+
o.test
|
100
|
+
|
101
|
+
o.value.should == %w(before test(parent) test)
|
102
|
+
end
|
103
|
+
|
104
|
+
it "override method with advices and call super" do
|
105
|
+
parent = Class.new do
|
106
|
+
include Aspect4r
|
107
|
+
|
108
|
+
attr :value
|
109
|
+
|
110
|
+
def initialize
|
111
|
+
@value = []
|
112
|
+
end
|
113
|
+
|
114
|
+
def test
|
115
|
+
@value << "test(parent)"
|
116
|
+
end
|
117
|
+
|
118
|
+
before :test do
|
119
|
+
@value << "before(parent)"
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
child = Class.new(parent) do
|
124
|
+
include Aspect4r
|
125
|
+
|
126
|
+
def test
|
127
|
+
super
|
128
|
+
@value << "test"
|
129
|
+
end
|
130
|
+
|
131
|
+
before :test do
|
132
|
+
@value << "before"
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
o = child.new
|
137
|
+
o.test
|
138
|
+
|
139
|
+
o.value.should == %w(before before(parent) test(parent) test)
|
140
|
+
end
|
141
|
+
|
142
|
+
it "method+advices in child class and method+advices in parent class" do
|
143
|
+
parent = Class.new do
|
144
|
+
include Aspect4r
|
145
|
+
|
146
|
+
attr :value
|
147
|
+
|
148
|
+
def initialize
|
149
|
+
@value = []
|
150
|
+
end
|
151
|
+
|
152
|
+
def test
|
153
|
+
@value << "test(parent)"
|
154
|
+
end
|
155
|
+
|
156
|
+
before :test do
|
157
|
+
@value << "before(parent)"
|
158
|
+
end
|
159
|
+
|
160
|
+
after :test do |result|
|
161
|
+
@value << "after(parent)"
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
class Child < parent
|
166
|
+
include Aspect4r
|
167
|
+
|
168
|
+
def test
|
169
|
+
@value << "test"
|
170
|
+
end
|
171
|
+
|
172
|
+
before :test do
|
173
|
+
@value << "before"
|
174
|
+
end
|
175
|
+
|
176
|
+
after :test do |result|
|
177
|
+
@value << "after"
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
o = Child.new
|
182
|
+
o.test
|
183
|
+
|
184
|
+
o.value.should == %w(before test after)
|
185
|
+
end
|
186
|
+
|
187
|
+
it "around advice in child class and method in parent class" do
|
188
|
+
parent = Class.new do
|
189
|
+
attr :value
|
190
|
+
|
191
|
+
def initialize
|
192
|
+
@value = []
|
193
|
+
end
|
194
|
+
|
195
|
+
def test
|
196
|
+
@value << "test"
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
class Child1 < parent
|
201
|
+
include Aspect4r
|
202
|
+
|
203
|
+
around :test do |proxy|
|
204
|
+
@value << "around(before)"
|
205
|
+
a4r_invoke proxy
|
206
|
+
@value << "around(after)"
|
207
|
+
end
|
208
|
+
end
|
209
|
+
|
210
|
+
o = Child1.new
|
211
|
+
o.test
|
212
|
+
|
213
|
+
o.value.should == %w(around(before) test around(after))
|
214
|
+
end
|
215
|
+
|
216
|
+
it "around advice in child class and method+advices in parent class" do
|
217
|
+
parent = Class.new do
|
218
|
+
include Aspect4r
|
219
|
+
|
220
|
+
attr :value
|
221
|
+
|
222
|
+
def initialize
|
223
|
+
@value = []
|
224
|
+
end
|
225
|
+
|
226
|
+
def test
|
227
|
+
@value << "test"
|
228
|
+
end
|
229
|
+
|
230
|
+
before :test do
|
231
|
+
@value << "before"
|
232
|
+
end
|
233
|
+
|
234
|
+
after :test do |result|
|
235
|
+
@value << "after"
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
class Child2 < parent
|
240
|
+
include Aspect4r
|
241
|
+
|
242
|
+
around :test do |proxy|
|
243
|
+
@value << "around(before)"
|
244
|
+
a4r_invoke proxy
|
245
|
+
@value << "around(after)"
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
249
|
+
o = Child2.new
|
250
|
+
o.test
|
251
|
+
|
252
|
+
o.value.should == %w(around(before) before test after around(after))
|
253
|
+
end
|
254
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
require 'aspect4r/classic'
|
4
|
+
|
5
|
+
describe Aspect4r::Classic do
|
6
|
+
it "should work" do
|
7
|
+
klass = Class.new do
|
8
|
+
include Aspect4r::Classic
|
9
|
+
|
10
|
+
attr :value
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
@value = []
|
14
|
+
end
|
15
|
+
|
16
|
+
def test
|
17
|
+
@value << "test"
|
18
|
+
end
|
19
|
+
|
20
|
+
a4r_around :test do |proxy_method|
|
21
|
+
@value << "around1"
|
22
|
+
a4r_invoke proxy_method
|
23
|
+
@value << "around2"
|
24
|
+
end
|
25
|
+
|
26
|
+
a4r_before :test do
|
27
|
+
@value << "before"
|
28
|
+
end
|
29
|
+
|
30
|
+
a4r_before_filter :test do
|
31
|
+
@value << "before_filter"
|
32
|
+
end
|
33
|
+
|
34
|
+
a4r_after :test do |result|
|
35
|
+
@value << "after"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
o = klass.new
|
40
|
+
o.test
|
41
|
+
|
42
|
+
o.value.should == %w(before before_filter around1 test around2 after)
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,117 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Aspect4r::Helper do
|
4
|
+
describe "self.find_available_name" do
|
5
|
+
it "should return test0 as first available method" do
|
6
|
+
Aspect4r::Helper.find_available_method_name(Class.new, "test").should =~ /test0/
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should return test1 if find_available_method_name is called once already" do
|
10
|
+
klass = Class.new
|
11
|
+
klass.class_eval do
|
12
|
+
first = Aspect4r::Helper.find_available_method_name(klass, "test")
|
13
|
+
|
14
|
+
define_method first do end
|
15
|
+
|
16
|
+
private first
|
17
|
+
end
|
18
|
+
Aspect4r::Helper.find_available_method_name(klass, "test").should =~ /test1/
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "self.create_method" do
|
23
|
+
before do
|
24
|
+
@klass = Class.new do
|
25
|
+
include Aspect4r
|
26
|
+
|
27
|
+
attr :value
|
28
|
+
|
29
|
+
def initialize
|
30
|
+
@value = []
|
31
|
+
end
|
32
|
+
|
33
|
+
def test
|
34
|
+
@value << "test"
|
35
|
+
end
|
36
|
+
|
37
|
+
def before_test
|
38
|
+
@value << "before_test"
|
39
|
+
end
|
40
|
+
|
41
|
+
def after_test result
|
42
|
+
@value << "after_test"
|
43
|
+
result
|
44
|
+
end
|
45
|
+
|
46
|
+
def around_test proxy
|
47
|
+
@value << "around_test_before"
|
48
|
+
result = a4r_invoke proxy
|
49
|
+
@value << "around_test_after"
|
50
|
+
result
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
it "No advice" do
|
56
|
+
Aspect4r::Helper.create_method @klass, :test
|
57
|
+
|
58
|
+
o = @klass.new
|
59
|
+
o.test
|
60
|
+
|
61
|
+
o.value.should == %w(test)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "before advices" do
|
65
|
+
@klass.before :test, :before_test
|
66
|
+
Aspect4r::Helper.create_method @klass, :test
|
67
|
+
|
68
|
+
o = @klass.new
|
69
|
+
o.test
|
70
|
+
|
71
|
+
o.value.should == %w(before_test test)
|
72
|
+
end
|
73
|
+
|
74
|
+
it "after advices" do
|
75
|
+
@klass.after :test, :after_test
|
76
|
+
Aspect4r::Helper.create_method @klass, :test
|
77
|
+
|
78
|
+
o = @klass.new
|
79
|
+
o.test
|
80
|
+
|
81
|
+
o.value.should == %w(test after_test)
|
82
|
+
end
|
83
|
+
|
84
|
+
it "around advices" do
|
85
|
+
@klass.around :test, :around_test
|
86
|
+
Aspect4r::Helper.create_method @klass, :test
|
87
|
+
|
88
|
+
o = @klass.new
|
89
|
+
o.test
|
90
|
+
|
91
|
+
o.value.should == %w(around_test_before test around_test_after)
|
92
|
+
end
|
93
|
+
|
94
|
+
it "before + after advices" do
|
95
|
+
@klass.before :test, :before_test
|
96
|
+
@klass.after :test, :after_test
|
97
|
+
Aspect4r::Helper.create_method @klass, :test
|
98
|
+
|
99
|
+
o = @klass.new
|
100
|
+
o.test
|
101
|
+
|
102
|
+
o.value.should == %w(before_test test after_test)
|
103
|
+
end
|
104
|
+
|
105
|
+
it "around + before + after advices" do
|
106
|
+
@klass.around :test, :around_test
|
107
|
+
@klass.before :test, :before_test
|
108
|
+
@klass.after :test, :after_test
|
109
|
+
Aspect4r::Helper.create_method @klass, :test
|
110
|
+
|
111
|
+
o = @klass.new
|
112
|
+
o.test
|
113
|
+
|
114
|
+
o.value.should == %w(before_test around_test_before test around_test_after after_test)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Aspect4r do
|
4
|
+
it "inherit from parent class which includes method+advices from module" do
|
5
|
+
module Mod
|
6
|
+
include Aspect4r
|
7
|
+
|
8
|
+
def test
|
9
|
+
@value << "test"
|
10
|
+
end
|
11
|
+
|
12
|
+
around :test do |proxy|
|
13
|
+
@value << "around1"
|
14
|
+
a4r_invoke proxy
|
15
|
+
@value << "around2"
|
16
|
+
end
|
17
|
+
|
18
|
+
before :test do
|
19
|
+
@value << "before"
|
20
|
+
end
|
21
|
+
|
22
|
+
after :test do |result|
|
23
|
+
@value << "after"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
parent = Class.new do
|
28
|
+
include Mod
|
29
|
+
|
30
|
+
attr :value
|
31
|
+
|
32
|
+
def initialize
|
33
|
+
@value = []
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
child = Class.new(parent) do
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
o = child.new
|
42
|
+
o.test
|
43
|
+
|
44
|
+
o.value.should == %w(before around1 test around2 after)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "method+advices in parent class and included modules - modules takes precedence" do
|
48
|
+
module Mod3
|
49
|
+
include Aspect4r
|
50
|
+
|
51
|
+
def test
|
52
|
+
@value << "test(module)"
|
53
|
+
end
|
54
|
+
|
55
|
+
around :test do |proxy|
|
56
|
+
@value << "around1"
|
57
|
+
a4r_invoke proxy
|
58
|
+
@value << "around2"
|
59
|
+
end
|
60
|
+
|
61
|
+
before :test do
|
62
|
+
@value << "before(module)"
|
63
|
+
end
|
64
|
+
|
65
|
+
after :test do |result|
|
66
|
+
@value << "after"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
class Parent3
|
71
|
+
include Aspect4r
|
72
|
+
|
73
|
+
before :test do
|
74
|
+
@value << "before(parent)"
|
75
|
+
end
|
76
|
+
|
77
|
+
attr :value
|
78
|
+
|
79
|
+
def initialize
|
80
|
+
@value = []
|
81
|
+
end
|
82
|
+
|
83
|
+
def test
|
84
|
+
@value << "test(parent)"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
class Child3 < Parent3
|
89
|
+
include Mod3
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
o = Child3.new
|
94
|
+
o.test
|
95
|
+
|
96
|
+
o.value.should == %w(before(module) around1 test(module) around2 after)
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,208 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Aspect4r do
|
4
|
+
it "basic module inclusion should work" do
|
5
|
+
klass = Class.new do
|
6
|
+
attr :value
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@value = []
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
mod = Module.new do
|
14
|
+
include Aspect4r
|
15
|
+
|
16
|
+
def test
|
17
|
+
@value << "test"
|
18
|
+
end
|
19
|
+
|
20
|
+
around :test do |proxy|
|
21
|
+
@value << "around1"
|
22
|
+
a4r_invoke proxy
|
23
|
+
@value << "around2"
|
24
|
+
end
|
25
|
+
|
26
|
+
before :test do
|
27
|
+
@value << "before"
|
28
|
+
end
|
29
|
+
|
30
|
+
after :test do |result|
|
31
|
+
@value << "after"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
klass.send :include, mod
|
36
|
+
|
37
|
+
o = klass.new
|
38
|
+
o.test
|
39
|
+
|
40
|
+
o.value.should == %w(before around1 test around2 after)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "override method" do
|
44
|
+
klass = Class.new do
|
45
|
+
attr :value
|
46
|
+
|
47
|
+
def initialize
|
48
|
+
@value = []
|
49
|
+
end
|
50
|
+
|
51
|
+
def test
|
52
|
+
@value << "test"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
mod = Module.new do
|
57
|
+
include Aspect4r
|
58
|
+
|
59
|
+
def test
|
60
|
+
@value << "test(module)"
|
61
|
+
end
|
62
|
+
|
63
|
+
around :test do |proxy|
|
64
|
+
@value << "around1"
|
65
|
+
send proxy
|
66
|
+
@value << "around2"
|
67
|
+
end
|
68
|
+
|
69
|
+
before :test do
|
70
|
+
@value << "before"
|
71
|
+
end
|
72
|
+
|
73
|
+
after :test do |result|
|
74
|
+
@value << "after"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
klass.send :include, mod
|
79
|
+
|
80
|
+
o = klass.new
|
81
|
+
o.test
|
82
|
+
|
83
|
+
o.value.should == %w(test)
|
84
|
+
end
|
85
|
+
|
86
|
+
it "override method and call super" do
|
87
|
+
klass = Class.new do
|
88
|
+
attr :value
|
89
|
+
|
90
|
+
def initialize
|
91
|
+
@value = []
|
92
|
+
end
|
93
|
+
|
94
|
+
def test
|
95
|
+
super
|
96
|
+
@value << "test"
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
mod = Module.new do
|
101
|
+
include Aspect4r
|
102
|
+
|
103
|
+
def test
|
104
|
+
@value << "test(module)"
|
105
|
+
end
|
106
|
+
|
107
|
+
before :test do
|
108
|
+
@value << "before"
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
klass.send :include, mod
|
113
|
+
|
114
|
+
o = klass.new
|
115
|
+
o.test
|
116
|
+
|
117
|
+
o.value.should == %w(before test(module) test)
|
118
|
+
end
|
119
|
+
|
120
|
+
it "method+advices in child class and method+advices in module" do
|
121
|
+
module AspectMod
|
122
|
+
include Aspect4r
|
123
|
+
|
124
|
+
def test
|
125
|
+
@value << "test(module)"
|
126
|
+
end
|
127
|
+
|
128
|
+
around :test do |proxy|
|
129
|
+
@value << "around1"
|
130
|
+
a4r_invoke proxy
|
131
|
+
@value << "around2"
|
132
|
+
end
|
133
|
+
|
134
|
+
after :test do |result|
|
135
|
+
@value << "after"
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
class AspectMix
|
140
|
+
include Aspect4r
|
141
|
+
include AspectMod
|
142
|
+
|
143
|
+
attr :value
|
144
|
+
|
145
|
+
def initialize
|
146
|
+
@value = []
|
147
|
+
end
|
148
|
+
|
149
|
+
def test
|
150
|
+
@value << "test"
|
151
|
+
end
|
152
|
+
|
153
|
+
before :test do
|
154
|
+
@value << "before"
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
o = AspectMix.new
|
159
|
+
o.test
|
160
|
+
|
161
|
+
o.value.should == %w(before test)
|
162
|
+
end
|
163
|
+
|
164
|
+
it "method+advices in child class and method+advices in module and call super" do
|
165
|
+
module AspectMod1
|
166
|
+
include Aspect4r
|
167
|
+
|
168
|
+
def test
|
169
|
+
@value << "test(module)"
|
170
|
+
end
|
171
|
+
|
172
|
+
around :test do |proxy|
|
173
|
+
@value << "around1"
|
174
|
+
a4r_invoke proxy
|
175
|
+
@value << "around2"
|
176
|
+
end
|
177
|
+
|
178
|
+
after :test do |result|
|
179
|
+
@value << "after"
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
class AspectMix1
|
184
|
+
include Aspect4r
|
185
|
+
include AspectMod1
|
186
|
+
|
187
|
+
attr :value
|
188
|
+
|
189
|
+
def initialize
|
190
|
+
@value = []
|
191
|
+
end
|
192
|
+
|
193
|
+
def test
|
194
|
+
super
|
195
|
+
@value << "test"
|
196
|
+
end
|
197
|
+
|
198
|
+
before :test do
|
199
|
+
@value << "before"
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
o = AspectMix1.new
|
204
|
+
o.test
|
205
|
+
|
206
|
+
o.value.should == %w(before around1 test(module) around2 after test)
|
207
|
+
end
|
208
|
+
end
|