call_logger 0.1.0 → 0.2.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.
- 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
|