tracia 0.2.0 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6db85d92c978e016973febaede7a1365f0c6f1c56da05d5eeda4e4e72f7d4228
4
- data.tar.gz: 25180162f25501cb45a9e72c549db166c9b3b493655a4cf1fee3fc459e13c684
3
+ metadata.gz: 34b3cdfc3aa852818abd808ccb2f108d3999d52ee35168856e2255849d2a5087
4
+ data.tar.gz: 5c54033d24d401aeb28b174c3d05b4762850cd72526c594b2b2b108c639f2452
5
5
  SHA512:
6
- metadata.gz: bf1293d617f0e8c94feaca3dccf0cd826a8cb745993cadb5d9281d25baaf5a1308666e75828c6e1ec25ef7d3c5c38ce7e8aeb17e8c0b2da1dafa973f306e984a
7
- data.tar.gz: 1ba8344769fe6b565bfdd405b3f68ad5aec0c08584d13f12e06725c68020b68f3bc531c92dcb848e7767ae88868fbb4cb635eee7169042f0c195c47cbc707e27
6
+ metadata.gz: a2c36aea77f0cdc14839d69d71d20844c73f11dc5941138b50cb3c87c1d78da95176d18c5f187846980ffcef49467c55fe91a4a85ed3a329b7a4ee7ab3cbfdfa
7
+ data.tar.gz: ac94cda876214cc85709a8e8f8a4e834a1b3cb601b08befc38e242bd27e1d35591926552d5943a16d6eb55642e771a19017950905b91c4c1920d24d299fb3414
data/README.md CHANGED
@@ -42,7 +42,17 @@ end
42
42
 
43
43
  ### Custom Logger
44
44
 
45
- A Template to make custom logger
45
+ By default, Tracia writes result to STDOUT, you can set it somewhere else
46
+
47
+ ```ruby
48
+ file = File.new('/path/to/log.txt', 'w+')
49
+
50
+ Tracia.start(logger: Tracia::DefaultLogger.new(out: file)) do
51
+ # ...
52
+ end
53
+ ```
54
+
55
+ Or you can make a logger class which responds to `call`
46
56
 
47
57
  ```ruby
48
58
  class MyLogger
@@ -50,6 +60,7 @@ class MyLogger
50
60
  @database = database
51
61
  end
52
62
 
63
+ # callback method for Tracia
53
64
  def call(root)
54
65
  # ...
55
66
  @database.insert(root)
@@ -57,7 +68,7 @@ class MyLogger
57
68
  end
58
69
  ```
59
70
 
60
- Pass the custom logger to Tracia
71
+ Then pass that logger to Tracia
61
72
 
62
73
  ```ruby
63
74
  Tracia.start(logger: MyLogger.new(db_connection)) do
@@ -20,6 +20,9 @@ class Tracia
20
20
 
21
21
  def call(root)
22
22
  @out.puts root.tree_graph
23
+ rescue => e
24
+ @out.puts e.message
25
+ @out.puts e.backtrace
23
26
  end
24
27
  end
25
28
  end
data/lib/tracia/frame.rb CHANGED
@@ -4,14 +4,14 @@ class Tracia
4
4
  class Frame
5
5
  include TreeGraph
6
6
 
7
- attr_reader :klass, :call_sym, :method_name, :children, :file
7
+ attr_reader :klass, :call_sym, :method_name, :children, :file, :lineno
8
8
 
9
9
  def initialize(klass, call_sym, method_name, file, lineno)
10
- @file = file
11
- @lineno = lineno
12
10
  @klass = klass
13
11
  @call_sym = call_sym
14
12
  @method_name = method_name
13
+ @file = file
14
+ @lineno = lineno
15
15
  @children = []
16
16
  end
17
17
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Tracia
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.3"
5
5
  end
data/lib/tracia.rb CHANGED
@@ -18,7 +18,7 @@ class Tracia
18
18
  def start(**opt)
19
19
  trc = (Thread.current[:_tracia_] ||= new(**opt))
20
20
  trc.level += 1
21
- trc.depth = binding.frame_count - 4
21
+ trc.depth = binding.frame_count + 1
22
22
  yield
23
23
  rescue StandardError => e
24
24
  trc.error = e
@@ -36,7 +36,7 @@ class Tracia
36
36
  trc = Thread.current[:_tracia_]
37
37
  return unless trc
38
38
 
39
- backtrace = binding.of_callers(binding.frame_count - trc.depth)
39
+ backtrace = binding.partial_callers(-trc.depth)
40
40
  backtrace.reverse!
41
41
  backtrace.pop
42
42
  trc.add(backtrace, info)
@@ -59,7 +59,7 @@ class Tracia
59
59
  @trace_point = TracePoint.new(:raise) do |point|
60
60
  bd = point.binding
61
61
  next unless current_thread == bd.eval('Thread.current')
62
- backtrace = bd.eval("binding.of_callers(binding.frame_count - #{depth})")
62
+ backtrace = bd.eval("binding.partial_callers(-#{depth})")
63
63
  raiser = backtrace[0]
64
64
  next if raiser.klass == Tracia && raiser.frame_env == 'rescue in start'
65
65
  backtrace.reverse!
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.0
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - ken
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-14 00:00:00.000000000 Z
11
+ date: 2022-05-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -44,15 +44,15 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.2.1
47
+ version: 0.2.3
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.2.1
55
- description:
54
+ version: 0.2.3
55
+ description:
56
56
  email:
57
57
  - block24block@gmail.com
58
58
  executables: []
@@ -74,7 +74,7 @@ homepage: https://github.com/turnon/tracia
74
74
  licenses:
75
75
  - MIT
76
76
  metadata: {}
77
- post_install_message:
77
+ post_install_message:
78
78
  rdoc_options: []
79
79
  require_paths:
80
80
  - lib
@@ -89,8 +89,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
89
  - !ruby/object:Gem::Version
90
90
  version: '0'
91
91
  requirements: []
92
- rubygems_version: 3.1.6
93
- signing_key:
92
+ rubygems_version: 3.3.7
93
+ signing_key:
94
94
  specification_version: 4
95
95
  summary: bottum-up tracing
96
96
  test_files: []