- Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathlogging_aspect.rb
36 lines (29 loc) · 866 Bytes
/
logging_aspect.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__),'..','lib'))
require'aspector'
# Example class to which we will apply our aspects
classExampleClass
deftest(input)
input.upcase
end
end
# Aspect used as a logging hookup
classLoggingAspect < Aspector::Base
ALL_METHODS=/.*/
aroundALL_METHODS,except: :class,method_arg: truedo |method,proxy, *args, &block|
class_method="#{self.class}.#{method}"
puts"Entering #{class_method}: #{args.join(',')}"
result=proxy.call(*args, &block)
puts"Exiting #{class_method}: #{result}"
result
end
end
LoggingAspect.apply(ExampleClass)
puts'LoggingAspect is applied'
instance=ExampleClass.new
instance.test'input'
LoggingAspect.disable!
puts'LoggingAspect is disabled'
instance.test'input'
LoggingAspect.enable!
puts'LoggingAspect is enabled'
instance.test'input'