tracia 0.2.9 → 0.2.16
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +10 -0
- data/lib/tracia/fake_trace_point.rb +9 -0
- data/lib/tracia/version.rb +1 -1
- data/lib/tracia.rb +12 -11
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b8d300497cc3f967c73f989925819a051d16ab7a9948b38068d37042aef2058d
|
4
|
+
data.tar.gz: 279e441cef317891df0030997cf88078292bee6544975635abf519d4cfc0f006
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 194d257a120813ad1a7a676f12652bb1cd5ff25a226314217d7c0657fe526a2100ebe18b095561371d8dbd9fc1cdcb601cff38674dd89a2eb1c614cf9d2269f3
|
7
|
+
data.tar.gz: 7c4d3c5b3cb21bf6299f1358d1fd40ff450fcb073043de436f43332801e48712820a32f2bb9657cf472f99ad7d2307b5be5aaac9d1e8f0bd7ea84fc9eebf7a5d
|
data/README.md
CHANGED
@@ -76,6 +76,16 @@ Tracia.start(logger: MyLogger.new(db_connection)) do
|
|
76
76
|
end
|
77
77
|
```
|
78
78
|
|
79
|
+
### Log `raise`
|
80
|
+
|
81
|
+
By default, Tracia log `raise` event via `TracePoint`. You can disable this feature by `trace_point: false`
|
82
|
+
|
83
|
+
```ruby
|
84
|
+
Tracia.start(trace_point: false) do
|
85
|
+
# ...
|
86
|
+
end
|
87
|
+
```
|
88
|
+
|
79
89
|
## Development
|
80
90
|
|
81
91
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/lib/tracia/version.rb
CHANGED
data/lib/tracia.rb
CHANGED
@@ -4,6 +4,7 @@ require "tracia/version"
|
|
4
4
|
require "tracia/gem_paths"
|
5
5
|
require "tracia/frame"
|
6
6
|
require "tracia/default_logger"
|
7
|
+
require "tracia/fake_trace_point"
|
7
8
|
|
8
9
|
require "binding_of_callers"
|
9
10
|
|
@@ -52,12 +53,17 @@ class Tracia
|
|
52
53
|
@backtraces = []
|
53
54
|
@level = 0
|
54
55
|
|
55
|
-
enable_trace_point
|
56
|
+
enable_trace_point(opt[:trace_point])
|
56
57
|
end
|
57
58
|
|
58
|
-
def enable_trace_point
|
59
|
+
def enable_trace_point(trace_point_opt)
|
60
|
+
return @trace_point = FakeTracePoint.new if trace_point_opt == false
|
61
|
+
|
59
62
|
current_thread = Thread.current
|
60
63
|
@trace_point = TracePoint.new(:raise) do |point|
|
64
|
+
if Proc === trace_point_opt
|
65
|
+
next if trace_point_opt.call(point, self) == false
|
66
|
+
end
|
61
67
|
bd = point.binding
|
62
68
|
next unless current_thread == bd.eval('Thread.current')
|
63
69
|
backtrace = bd.eval("binding.partial_callers(-#{depth})")
|
@@ -164,22 +170,17 @@ class Tracia
|
|
164
170
|
@frames_to_reject.any?{ |rj| rj =~ raw_frame.file }
|
165
171
|
end
|
166
172
|
|
173
|
+
FAKE_METHOD = Struct.new(:source_location).new([nil, 0])
|
174
|
+
|
167
175
|
def convert_to_frames(callers)
|
168
176
|
callers.map! do |c|
|
169
177
|
_binding = c._binding
|
178
|
+
iseq = _binding.instance_variable_get(:@iseq)
|
170
179
|
klass = c.klass
|
171
180
|
call_symbol = c.call_symbol
|
172
181
|
frame_env = c.frame_env
|
173
182
|
|
174
|
-
|
175
|
-
if _binding.frame_type == :method
|
176
|
-
meth = call_symbol == INSTANCE_METHOD_SHARP ? klass.instance_method(frame_env) : klass.method(frame_env)
|
177
|
-
meth.source_location
|
178
|
-
else
|
179
|
-
_binding.source_location
|
180
|
-
end
|
181
|
-
|
182
|
-
Frame.new(klass, call_symbol, frame_env, source_location[0], source_location[1])
|
183
|
+
Frame.new(klass, call_symbol, frame_env, iseq.path, iseq.first_lineno)
|
183
184
|
end
|
184
185
|
|
185
186
|
callers
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tracia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ken
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-09-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -80,6 +80,7 @@ files:
|
|
80
80
|
- Rakefile
|
81
81
|
- lib/tracia.rb
|
82
82
|
- lib/tracia/default_logger.rb
|
83
|
+
- lib/tracia/fake_trace_point.rb
|
83
84
|
- lib/tracia/frame.rb
|
84
85
|
- lib/tracia/gem_paths.rb
|
85
86
|
- lib/tracia/version.rb
|