aspect4r 0.9.1 → 0.10.0
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.rdoc +10 -34
- data/VERSION +1 -1
- data/aspect4r.gemspec +2 -37
- data/examples/advices_on_class_method_example.rb +3 -3
- data/examples/around_example.rb +5 -5
- data/examples/before_example.rb +4 -4
- data/examples/combined_example.rb +5 -5
- data/examples/test_advices_example.rb +8 -17
- data/lib/aspect4r/base.rb +1 -1
- data/lib/aspect4r/helper.rb +4 -4
- data/spec/aspect4r/advice_on_class_method_spec.rb +4 -4
- data/spec/aspect4r/before_spec.rb +5 -5
- data/spec/aspect4r_spec.rb +4 -4
- metadata +7 -39
data/README.rdoc
CHANGED
|
@@ -7,31 +7,29 @@ Aspect Oriented Programming support for Ruby
|
|
|
7
7
|
* extract common logic from multiple methods into before, after, around advices
|
|
8
8
|
* before_filter as method filters (work like before_filters in web application)
|
|
9
9
|
* advices can be customized (e.g. to take an optional method name argument)
|
|
10
|
-
*
|
|
10
|
+
* well-tested and optimized
|
|
11
11
|
|
|
12
12
|
== Usage
|
|
13
13
|
|
|
14
|
-
API documentation:
|
|
14
|
+
API documentation: https://github.com/gcao/aspect4r/wiki/Api
|
|
15
15
|
|
|
16
16
|
class A
|
|
17
17
|
include Aspect4r
|
|
18
18
|
|
|
19
|
-
around
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
before :test do |value|
|
|
24
|
-
puts "entering test(#{value})"
|
|
19
|
+
around /test/ do |*args, &block|
|
|
20
|
+
...
|
|
21
|
+
block.call *args
|
|
22
|
+
...
|
|
25
23
|
end
|
|
26
24
|
|
|
27
25
|
before :test, :do_something
|
|
28
26
|
|
|
29
|
-
before_filter :test do |
|
|
30
|
-
|
|
27
|
+
before_filter :test do |*args|
|
|
28
|
+
authorized?
|
|
31
29
|
end
|
|
32
30
|
|
|
33
|
-
after :test do |result,
|
|
34
|
-
puts "test(#{
|
|
31
|
+
after :test do |result, *args|
|
|
32
|
+
puts "test(#{*args}) returned #{result}"
|
|
35
33
|
result
|
|
36
34
|
end
|
|
37
35
|
|
|
@@ -59,28 +57,6 @@ Execution model: http://gcao.posterous.com/aspect4r-documentation-advice-executi
|
|
|
59
57
|
|
|
60
58
|
See github issues http://github.com/gcao/aspect4r/issues
|
|
61
59
|
|
|
62
|
-
Support regular expression on methods to be advised. When such an advice is defined, methods defined before it
|
|
63
|
-
will not be processed, only new methods are.
|
|
64
|
-
|
|
65
|
-
Advices are stored in an array. Whenever a method is created, the whole array is checked to find the advices that
|
|
66
|
-
are applicable to it. Those applicable advices are used to construct the new method. This provides a lot
|
|
67
|
-
flexibilities but can be a performance burden.
|
|
68
|
-
|
|
69
|
-
One way to improve performance is to use array to store advices that use regular expression. Advices specific to
|
|
70
|
-
methods are stored in hash. (Do this only when performance is proved to be a problem in real world scenarios)
|
|
71
|
-
|
|
72
|
-
Advice name: each advice can take a :name option. If no name is given, the advice method name is used as the advice
|
|
73
|
-
name. If advice logic is in a block and :name is not set, the advice will not have a name. Multiple advices can
|
|
74
|
-
have same name.
|
|
75
|
-
What use can this bring? skip advice for specific methods. debugging purpose. testing purpose.
|
|
76
|
-
|
|
77
|
-
Inherit advices: add option :inherit to all advices. Advices whose :inherit options are set to true will be copied to
|
|
78
|
-
child modules/classes. By default :inherit is set to false.
|
|
79
|
-
This adds a lot complexity and might not be a good idea.
|
|
80
|
-
This can be achieved by putting advices in ModuleX.included or ClassY.inherited
|
|
81
|
-
|
|
82
|
-
a4r_remove_advices: will remove advices with given names. If no name is given, all advices are removed.
|
|
83
|
-
|
|
84
60
|
== Note on Patches/Pull Requests
|
|
85
61
|
|
|
86
62
|
* Fork the project.
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.10.0
|
data/aspect4r.gemspec
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{aspect4r}
|
|
8
|
-
s.version = "0.
|
|
8
|
+
s.version = "0.10.0"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["Guoliang Cao"]
|
|
12
|
-
s.date = %q{2011-
|
|
12
|
+
s.date = %q{2011-09-01}
|
|
13
13
|
s.description = %q{AOP for ruby - use before, after and around to trim your fat methods and reduce code duplication}
|
|
14
14
|
s.email = %q{gcao99@gmail.com}
|
|
15
15
|
s.extra_rdoc_files = [
|
|
@@ -75,41 +75,6 @@ Gem::Specification.new do |s|
|
|
|
75
75
|
s.require_paths = ["lib"]
|
|
76
76
|
s.rubygems_version = %q{1.4.2}
|
|
77
77
|
s.summary = %q{Aspect Oriented Programming for ruby}
|
|
78
|
-
s.test_files = [
|
|
79
|
-
"examples/advices_on_class_method_example.rb",
|
|
80
|
-
"examples/after_example.rb",
|
|
81
|
-
"examples/around_example.rb",
|
|
82
|
-
"examples/before_example.rb",
|
|
83
|
-
"examples/combined_example.rb",
|
|
84
|
-
"examples/test_advices_example.rb",
|
|
85
|
-
"spec/aspect4r/advice_on_class_method_spec.rb",
|
|
86
|
-
"spec/aspect4r/advice_scope_spec.rb",
|
|
87
|
-
"spec/aspect4r/advice_test_spec.rb",
|
|
88
|
-
"spec/aspect4r/after_spec.rb",
|
|
89
|
-
"spec/aspect4r/around_spec.rb",
|
|
90
|
-
"spec/aspect4r/before_spec.rb",
|
|
91
|
-
"spec/aspect4r/class_inheritance_spec.rb",
|
|
92
|
-
"spec/aspect4r/classic_spec.rb",
|
|
93
|
-
"spec/aspect4r/helper_spec.rb",
|
|
94
|
-
"spec/aspect4r/include_advices_from_module_spec.rb",
|
|
95
|
-
"spec/aspect4r/inheritance_inclusion_combined_spec.rb",
|
|
96
|
-
"spec/aspect4r/method_added_spec.rb",
|
|
97
|
-
"spec/aspect4r/model/advice_group_spec.rb",
|
|
98
|
-
"spec/aspect4r/model/advice_spec.rb",
|
|
99
|
-
"spec/aspect4r/model/method_matcher_spec.rb",
|
|
100
|
-
"spec/aspect4r/module_inclusion_spec.rb",
|
|
101
|
-
"spec/aspect4r/regexp_methods_spec.rb",
|
|
102
|
-
"spec/aspect4r/singleton_method_added_spec.rb",
|
|
103
|
-
"spec/aspect4r/super_in_method_spec.rb",
|
|
104
|
-
"spec/aspect4r_spec.rb",
|
|
105
|
-
"spec/spec_helper.rb",
|
|
106
|
-
"test/after_test.rb",
|
|
107
|
-
"test/around_test.rb",
|
|
108
|
-
"test/before_test.rb",
|
|
109
|
-
"test/combined_test.rb",
|
|
110
|
-
"test/method_invocation_test.rb",
|
|
111
|
-
"test/test_helper.rb"
|
|
112
|
-
]
|
|
113
78
|
|
|
114
79
|
if s.respond_to? :specification_version then
|
|
115
80
|
s.specification_version = 3
|
|
@@ -3,9 +3,9 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
|
3
3
|
require 'aspect4r'
|
|
4
4
|
|
|
5
5
|
class A
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
include Aspect4r
|
|
7
|
+
|
|
8
|
+
class << self
|
|
9
9
|
around :test do |input, &block|
|
|
10
10
|
puts 'around test (before)'
|
|
11
11
|
result = block.call input
|
data/examples/around_example.rb
CHANGED
|
@@ -5,17 +5,17 @@ require 'aspect4r'
|
|
|
5
5
|
class A
|
|
6
6
|
include Aspect4r
|
|
7
7
|
|
|
8
|
-
def test value
|
|
9
|
-
puts 'test'
|
|
10
|
-
value
|
|
11
|
-
end
|
|
12
|
-
|
|
13
8
|
around :test do |value, &block|
|
|
14
9
|
puts 'before test'
|
|
15
10
|
result = block.call value
|
|
16
11
|
puts 'after test'
|
|
17
12
|
result
|
|
18
13
|
end
|
|
14
|
+
|
|
15
|
+
def test value
|
|
16
|
+
puts 'test'
|
|
17
|
+
value
|
|
18
|
+
end
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
puts "Example 1:"
|
data/examples/before_example.rb
CHANGED
|
@@ -5,10 +5,6 @@ require 'aspect4r'
|
|
|
5
5
|
class A
|
|
6
6
|
include Aspect4r
|
|
7
7
|
|
|
8
|
-
def test value
|
|
9
|
-
puts 'test'
|
|
10
|
-
end
|
|
11
|
-
|
|
12
8
|
before :test do |value|
|
|
13
9
|
puts 'before test'
|
|
14
10
|
end
|
|
@@ -17,6 +13,10 @@ class A
|
|
|
17
13
|
puts 'check before test'
|
|
18
14
|
value >= 0
|
|
19
15
|
end
|
|
16
|
+
|
|
17
|
+
def test value
|
|
18
|
+
puts 'test'
|
|
19
|
+
end
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
puts "Example 1:"
|
|
@@ -5,11 +5,6 @@ require 'aspect4r'
|
|
|
5
5
|
class A
|
|
6
6
|
include Aspect4r
|
|
7
7
|
|
|
8
|
-
def test value
|
|
9
|
-
puts 'test'
|
|
10
|
-
value
|
|
11
|
-
end
|
|
12
|
-
|
|
13
8
|
around :test do |value, &block|
|
|
14
9
|
puts 'around test 1'
|
|
15
10
|
result = block.call value
|
|
@@ -25,6 +20,11 @@ class A
|
|
|
25
20
|
puts 'after test'
|
|
26
21
|
result
|
|
27
22
|
end
|
|
23
|
+
|
|
24
|
+
def test value
|
|
25
|
+
puts 'test'
|
|
26
|
+
value
|
|
27
|
+
end
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
puts "Example 1:"
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
2
2
|
|
|
3
3
|
require 'rubygems'
|
|
4
|
+
require 'mocha'
|
|
4
5
|
require 'spec'
|
|
5
6
|
require 'spec/autorun'
|
|
6
7
|
|
|
@@ -48,22 +49,22 @@ end
|
|
|
48
49
|
# =============================== Tests start here ===========================
|
|
49
50
|
describe Klass do
|
|
50
51
|
it "number of advices" do
|
|
51
|
-
Klass.a4r_data
|
|
52
|
+
Klass.a4r_data.advices_for_method(:test).size.should == 4
|
|
52
53
|
end
|
|
53
54
|
|
|
54
55
|
it "around advice" do
|
|
55
|
-
advice = Klass.a4r_data
|
|
56
|
+
advice = Klass.a4r_data.advices_for_method(:test)[0]
|
|
56
57
|
advice.around?.should be_true
|
|
57
58
|
|
|
58
59
|
o = Klass.new
|
|
59
60
|
|
|
60
|
-
advice.invoke(o,
|
|
61
|
+
advice.invoke(o, 1) {}
|
|
61
62
|
|
|
62
63
|
o.value.should == %w(around(before) around(after))
|
|
63
64
|
end
|
|
64
65
|
|
|
65
66
|
it "before advice" do
|
|
66
|
-
advice = Klass.a4r_data
|
|
67
|
+
advice = Klass.a4r_data.advices_for_method(:test)[1]
|
|
67
68
|
advice.before?.should be_true
|
|
68
69
|
|
|
69
70
|
o = Klass.new
|
|
@@ -71,19 +72,9 @@ describe Klass do
|
|
|
71
72
|
|
|
72
73
|
o.value.should == %w(before)
|
|
73
74
|
end
|
|
74
|
-
|
|
75
|
-
it "before advice retrieved by name" do
|
|
76
|
-
advice = Klass.a4r_data[:test][:before_advice]
|
|
77
|
-
advice.before?.should be_true
|
|
78
|
-
|
|
79
|
-
o = Klass.new
|
|
80
|
-
advice.invoke(o, 1)
|
|
81
75
|
|
|
82
|
-
o.value.should == %w(before)
|
|
83
|
-
end
|
|
84
|
-
|
|
85
76
|
it "before_filter advice returns true if input is not negative" do
|
|
86
|
-
advice = Klass.a4r_data
|
|
77
|
+
advice = Klass.a4r_data.advices_for_method(:test)[2]
|
|
87
78
|
advice.before_filter?.should be_true
|
|
88
79
|
|
|
89
80
|
o = Klass.new
|
|
@@ -93,14 +84,14 @@ describe Klass do
|
|
|
93
84
|
end
|
|
94
85
|
|
|
95
86
|
it "before_filter advice returns false if input is negative" do
|
|
96
|
-
advice = Klass.a4r_data
|
|
87
|
+
advice = Klass.a4r_data.advices_for_method(:test)[2]
|
|
97
88
|
|
|
98
89
|
o = Klass.new
|
|
99
90
|
advice.invoke(o, -1).should be_false
|
|
100
91
|
end
|
|
101
92
|
|
|
102
93
|
it "after advice" do
|
|
103
|
-
advice = Klass.a4r_data
|
|
94
|
+
advice = Klass.a4r_data.advices_for_method(:test)[3]
|
|
104
95
|
advice.after?.should be_true
|
|
105
96
|
|
|
106
97
|
o = Klass.new
|
data/lib/aspect4r/base.rb
CHANGED
|
@@ -78,7 +78,7 @@ module Aspect4r
|
|
|
78
78
|
ensure
|
|
79
79
|
methods.each do |method|
|
|
80
80
|
method_with_advices = "#{method}_with_advices"
|
|
81
|
-
next unless instance_methods.
|
|
81
|
+
next unless instance_methods.detect {|method| method.to_s == method_with_advices }
|
|
82
82
|
|
|
83
83
|
send :alias_method, method, method_with_advices
|
|
84
84
|
self.send :remove_method, method_with_advices
|
data/lib/aspect4r/helper.rb
CHANGED
|
@@ -4,8 +4,8 @@ module Aspect4r
|
|
|
4
4
|
module Helper
|
|
5
5
|
def self.find_available_method_name klass, method_name_prefix
|
|
6
6
|
0.upto(10000) do |i|
|
|
7
|
-
m = "#{method_name_prefix}#{i}_#{klass.hash}"
|
|
8
|
-
return m unless klass.private_instance_methods(false).
|
|
7
|
+
m = "#{method_name_prefix}#{i}_#{klass.hash.abs}"
|
|
8
|
+
return m unless klass.private_instance_methods(false).detect {|method| method.to_s == m }
|
|
9
9
|
end
|
|
10
10
|
end
|
|
11
11
|
|
|
@@ -54,11 +54,11 @@ module Aspect4r
|
|
|
54
54
|
|
|
55
55
|
wrapped_method = a4r_data.wrapped_methods[method]
|
|
56
56
|
|
|
57
|
-
if not wrapped_method and klass_or_module.instance_methods.
|
|
57
|
+
if not wrapped_method and klass_or_module.instance_methods.detect {|m| m.to_s == method }
|
|
58
58
|
wrapped_method = klass_or_module.instance_method(method)
|
|
59
59
|
a4r_data.wrapped_methods[method] = wrapped_method
|
|
60
60
|
end
|
|
61
|
-
|
|
61
|
+
|
|
62
62
|
create_method klass_or_module, method if wrapped_method
|
|
63
63
|
end
|
|
64
64
|
end
|
|
@@ -21,7 +21,7 @@ describe "Advices on singleton method (also known as class method)" do
|
|
|
21
21
|
value << "before"
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
-
after :test do
|
|
24
|
+
after :test do |result|
|
|
25
25
|
value << "after"
|
|
26
26
|
end
|
|
27
27
|
|
|
@@ -38,9 +38,9 @@ describe "Advices on singleton method (also known as class method)" do
|
|
|
38
38
|
it "module singleton method" do
|
|
39
39
|
module AdvicesOnModuleSingletonMethod
|
|
40
40
|
include Aspect4r
|
|
41
|
-
|
|
41
|
+
|
|
42
42
|
class << self
|
|
43
|
-
|
|
43
|
+
|
|
44
44
|
def value
|
|
45
45
|
@value ||= []
|
|
46
46
|
end
|
|
@@ -55,7 +55,7 @@ describe "Advices on singleton method (also known as class method)" do
|
|
|
55
55
|
value << "before"
|
|
56
56
|
end
|
|
57
57
|
|
|
58
|
-
after :test do
|
|
58
|
+
after :test do |result|
|
|
59
59
|
value << "after"
|
|
60
60
|
end
|
|
61
61
|
|
|
@@ -86,7 +86,7 @@ describe Aspect4r::Before do
|
|
|
86
86
|
|
|
87
87
|
o = @klass.new
|
|
88
88
|
o.test('something')
|
|
89
|
-
|
|
89
|
+
|
|
90
90
|
o.value.should == 'something'
|
|
91
91
|
end
|
|
92
92
|
|
|
@@ -101,7 +101,7 @@ describe Aspect4r::Before do
|
|
|
101
101
|
|
|
102
102
|
o = @klass.new
|
|
103
103
|
o.test('something')
|
|
104
|
-
|
|
104
|
+
|
|
105
105
|
s.should == 'test'
|
|
106
106
|
end
|
|
107
107
|
|
|
@@ -110,7 +110,7 @@ describe Aspect4r::Before do
|
|
|
110
110
|
def do_something value
|
|
111
111
|
Aspect4r::ReturnThis.new('do_something')
|
|
112
112
|
end
|
|
113
|
-
|
|
113
|
+
|
|
114
114
|
before :test, :do_something
|
|
115
115
|
end
|
|
116
116
|
|
|
@@ -122,7 +122,7 @@ describe Aspect4r::Before do
|
|
|
122
122
|
|
|
123
123
|
it "should skip original method if before_filter advice returned false" do
|
|
124
124
|
@klass.class_eval do
|
|
125
|
-
before_filter :test do
|
|
125
|
+
before_filter :test do |value|
|
|
126
126
|
false
|
|
127
127
|
end
|
|
128
128
|
end
|
|
@@ -135,7 +135,7 @@ describe Aspect4r::Before do
|
|
|
135
135
|
|
|
136
136
|
it "should not skip original method if before_filter did not return false or nil" do
|
|
137
137
|
@klass.class_eval do
|
|
138
|
-
before_filter :test do
|
|
138
|
+
before_filter :test do |value|
|
|
139
139
|
true
|
|
140
140
|
end
|
|
141
141
|
end
|
data/spec/aspect4r_spec.rb
CHANGED
|
@@ -126,7 +126,7 @@ describe "Aspect4r execution order" do
|
|
|
126
126
|
@value << "after1"
|
|
127
127
|
end
|
|
128
128
|
|
|
129
|
-
after :test do
|
|
129
|
+
after :test do |result|
|
|
130
130
|
@value << "after2"
|
|
131
131
|
end
|
|
132
132
|
end
|
|
@@ -232,7 +232,7 @@ describe "Aspect4r chaining (add advice to advice method)" do
|
|
|
232
232
|
@value << "before(do_something)"
|
|
233
233
|
end
|
|
234
234
|
|
|
235
|
-
after :do_something do
|
|
235
|
+
after :do_something do |result|
|
|
236
236
|
@value << "after(do_something)"
|
|
237
237
|
end
|
|
238
238
|
|
|
@@ -242,11 +242,11 @@ describe "Aspect4r chaining (add advice to advice method)" do
|
|
|
242
242
|
|
|
243
243
|
after :test, :process_result
|
|
244
244
|
|
|
245
|
-
before :process_result do
|
|
245
|
+
before :process_result do |result|
|
|
246
246
|
@value << "before(process_result)"
|
|
247
247
|
end
|
|
248
248
|
|
|
249
|
-
after :process_result do
|
|
249
|
+
after :process_result do |result, *args|
|
|
250
250
|
@value << "after(process_result)"
|
|
251
251
|
end
|
|
252
252
|
end
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: aspect4r
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 55
|
|
5
5
|
prerelease:
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
version: 0.
|
|
8
|
+
- 10
|
|
9
|
+
- 0
|
|
10
|
+
version: 0.10.0
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Guoliang Cao
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2011-
|
|
18
|
+
date: 2011-09-01 00:00:00 -04:00
|
|
19
19
|
default_executable:
|
|
20
20
|
dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|
|
@@ -131,37 +131,5 @@ rubygems_version: 1.4.2
|
|
|
131
131
|
signing_key:
|
|
132
132
|
specification_version: 3
|
|
133
133
|
summary: Aspect Oriented Programming for ruby
|
|
134
|
-
test_files:
|
|
135
|
-
|
|
136
|
-
- examples/after_example.rb
|
|
137
|
-
- examples/around_example.rb
|
|
138
|
-
- examples/before_example.rb
|
|
139
|
-
- examples/combined_example.rb
|
|
140
|
-
- examples/test_advices_example.rb
|
|
141
|
-
- spec/aspect4r/advice_on_class_method_spec.rb
|
|
142
|
-
- spec/aspect4r/advice_scope_spec.rb
|
|
143
|
-
- spec/aspect4r/advice_test_spec.rb
|
|
144
|
-
- spec/aspect4r/after_spec.rb
|
|
145
|
-
- spec/aspect4r/around_spec.rb
|
|
146
|
-
- spec/aspect4r/before_spec.rb
|
|
147
|
-
- spec/aspect4r/class_inheritance_spec.rb
|
|
148
|
-
- spec/aspect4r/classic_spec.rb
|
|
149
|
-
- spec/aspect4r/helper_spec.rb
|
|
150
|
-
- spec/aspect4r/include_advices_from_module_spec.rb
|
|
151
|
-
- spec/aspect4r/inheritance_inclusion_combined_spec.rb
|
|
152
|
-
- spec/aspect4r/method_added_spec.rb
|
|
153
|
-
- spec/aspect4r/model/advice_group_spec.rb
|
|
154
|
-
- spec/aspect4r/model/advice_spec.rb
|
|
155
|
-
- spec/aspect4r/model/method_matcher_spec.rb
|
|
156
|
-
- spec/aspect4r/module_inclusion_spec.rb
|
|
157
|
-
- spec/aspect4r/regexp_methods_spec.rb
|
|
158
|
-
- spec/aspect4r/singleton_method_added_spec.rb
|
|
159
|
-
- spec/aspect4r/super_in_method_spec.rb
|
|
160
|
-
- spec/aspect4r_spec.rb
|
|
161
|
-
- spec/spec_helper.rb
|
|
162
|
-
- test/after_test.rb
|
|
163
|
-
- test/around_test.rb
|
|
164
|
-
- test/before_test.rb
|
|
165
|
-
- test/combined_test.rb
|
|
166
|
-
- test/method_invocation_test.rb
|
|
167
|
-
- test/test_helper.rb
|
|
134
|
+
test_files: []
|
|
135
|
+
|