call_logger 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +15 -5
- data/lib/call_logger/call_logger.rb +7 -4
- data/lib/call_logger/formatter.rb +6 -2
- data/lib/call_logger/version.rb +1 -1
- data/lib/call_logger.rb +8 -3
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 86ff0a5285a0155ffe5c9bf31253c7208ec6d4e22b32e04388bada594abd3726
|
4
|
+
data.tar.gz: 97c3aba959d1d3864d667213f4a6709e599669323abb453185e834982856cc60
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8781225032feeb50ecef93f2e1e2753b16762fe3ea50f3da1ad01189ab0e7e23932fa8b2abf8c483bf3bcdbf2143709979bdedf66f75284fb247be32f0e184a1
|
7
|
+
data.tar.gz: b0cca1e74771fc882fc4645b691bbbbdd8f53e2e6a799ac59e81ebbc02e537214f08269df2782f9b7f1804c62400bf3d7cb6bf10fd38d445ee26b96305fa7791
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# CallLogger
|
2
2
|
|
3
|
-
A debugging tool that
|
3
|
+
A debugging tool that lets you log method usage.
|
4
4
|
|
5
5
|
```
|
6
6
|
class Calculator
|
@@ -9,12 +9,21 @@ class Calculator
|
|
9
9
|
log def times(a, b)
|
10
10
|
a*b
|
11
11
|
end
|
12
|
+
|
13
|
+
log def div(a, b)
|
14
|
+
a/b
|
15
|
+
end
|
12
16
|
end
|
13
17
|
|
14
18
|
Calculator.new.times(3,4)
|
15
|
-
# times(
|
19
|
+
# times(3, 4)
|
16
20
|
# times => 6
|
17
21
|
# => 7
|
22
|
+
|
23
|
+
Calculator.new.div(3,0)
|
24
|
+
# div(3, 0)
|
25
|
+
# div !! divided by 0
|
26
|
+
# ZeroDivisionError: divided by 0
|
18
27
|
```
|
19
28
|
|
20
29
|
## Installation
|
@@ -74,9 +83,10 @@ end
|
|
74
83
|
```
|
75
84
|
|
76
85
|
* `Logger` should provide a `#call` method accepting a single paramter.
|
77
|
-
* `Formatter` should provide
|
78
|
-
* `#
|
79
|
-
* `#
|
86
|
+
* `Formatter` should provide following methods:
|
87
|
+
* `#before(method, args)` - accepting method name and it's arguments; called before method execution
|
88
|
+
* `#after(method, result)` - accepting method name and it's result; called after method execution
|
89
|
+
* `#error(method, exception)` - accepting method name and an exception; called when error is raised
|
80
90
|
|
81
91
|
## TODO
|
82
92
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module CallLogger
|
2
|
-
class
|
2
|
+
class MethodWrapper
|
3
3
|
attr_reader :formatter, :logger
|
4
4
|
|
5
5
|
def initialize(formatter:, logger: )
|
@@ -7,11 +7,14 @@ module CallLogger
|
|
7
7
|
@logger = logger
|
8
8
|
end
|
9
9
|
|
10
|
-
def
|
11
|
-
logger.call(formatter.
|
10
|
+
def call(method, args)
|
11
|
+
logger.call(formatter.before(method, args))
|
12
12
|
result = yield
|
13
|
-
logger.call(formatter.
|
13
|
+
logger.call(formatter.after(method, result))
|
14
14
|
result
|
15
|
+
rescue StandardError => e
|
16
|
+
logger.call(formatter.error(method, e))
|
17
|
+
raise
|
15
18
|
end
|
16
19
|
end
|
17
20
|
end
|
@@ -1,12 +1,16 @@
|
|
1
1
|
module CallLogger
|
2
2
|
class Formatter
|
3
|
-
def
|
3
|
+
def before(method, args)
|
4
4
|
"#{method}(#{args.join(', ')})"
|
5
5
|
end
|
6
6
|
|
7
7
|
# args?
|
8
|
-
def
|
8
|
+
def after(method, result)
|
9
9
|
"#{method} => #{result}"
|
10
10
|
end
|
11
|
+
|
12
|
+
def error(method, exception)
|
13
|
+
"#{method} !! #{exception}"
|
14
|
+
end
|
11
15
|
end
|
12
16
|
end
|
data/lib/call_logger/version.rb
CHANGED
data/lib/call_logger.rb
CHANGED
@@ -16,12 +16,17 @@ module CallLogger
|
|
16
16
|
|
17
17
|
def self.configure
|
18
18
|
self.configuration ||= Configuration.new
|
19
|
-
yield(configuration)
|
19
|
+
yield(configuration) if block_given?
|
20
20
|
end
|
21
|
+
configure # set defaults
|
21
22
|
|
22
23
|
def log(method, args, &block)
|
23
|
-
|
24
|
-
|
24
|
+
logger = ::CallLogger.configuration.logger
|
25
|
+
formatter = ::CallLogger.configuration.formatter
|
26
|
+
method_wrapper = ::CallLogger::MethodWrapper.new(
|
27
|
+
logger: logger, formatter: formatter
|
28
|
+
)
|
29
|
+
method_wrapper.call(method, args, &block)
|
25
30
|
end
|
26
31
|
|
27
32
|
module ClassMethods
|