dexc 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/dexc.rb +43 -2
- data/lib/dexc/version.rb +1 -1
- metadata +9 -19
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 22ffadb2a8fd9aeabe0d5582aafe1231bcdb24b8
|
4
|
+
data.tar.gz: aa1f0adb35679ae4a24b4e17de3b3bec224a058a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5e77c775cac363ccb8f6b8d10b375e7e6d95c15f6112d0a5f1d369e8f6227b1d719649c5d0884ed8c692f5febfcb3c34f2c1303894e669419c574c8a09819a2b
|
7
|
+
data.tar.gz: 42c204ebb02bdc796217d8b38608f39214e83236aa398dd96d212ee41a83c9ba7b680cf7bf2c0aebacd7d91dd3d1a4b384c20b4f8b93dc7469103b8a06ce7dbf
|
data/lib/dexc.rb
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
#
|
3
3
|
# Copyright (C) 2013 Kazuki Tsujimoto, All rights reserved.
|
4
4
|
|
5
|
+
raise LoadError, "TracePoint is undefined. Use Ruby 2.0.0 or later." unless defined? TracePoint
|
6
|
+
|
5
7
|
require 'dexc/version'
|
6
8
|
|
7
9
|
module Dexc
|
@@ -27,6 +29,38 @@ module Dexc
|
|
27
29
|
RaiseEvent = Struct.new(:event, :raised_exception)
|
28
30
|
ReturnEvent = Struct.new(:event, :lineno, :path, :defined_class, :method_id, :return_value)
|
29
31
|
|
32
|
+
# See MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
|
33
|
+
# to know why SystemExit is used
|
34
|
+
class ExceptionWrapper < SystemExit
|
35
|
+
attr_reader :wrapped_exception
|
36
|
+
|
37
|
+
def initialize(wrapped_exception)
|
38
|
+
super(nil)
|
39
|
+
@wrapped_exception = wrapped_exception
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
module MiniTestPassThroughException
|
44
|
+
def run_test(*)
|
45
|
+
super
|
46
|
+
rescue => e
|
47
|
+
raise ExceptionWrapper, e
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
class ::Object
|
52
|
+
prepend Module.new {
|
53
|
+
def require(path)
|
54
|
+
super
|
55
|
+
if path == 'minitest/unit'
|
56
|
+
MiniTest::Unit::TestCase.class_eval do
|
57
|
+
prepend MiniTestPassThroughException
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
}
|
62
|
+
end
|
63
|
+
|
30
64
|
def start
|
31
65
|
events = RingBuffer.new(30)
|
32
66
|
|
@@ -42,6 +76,9 @@ module Dexc
|
|
42
76
|
|
43
77
|
at_exit do
|
44
78
|
exc = $!
|
79
|
+
if exc.kind_of?(ExceptionWrapper)
|
80
|
+
exc = exc.wrapped_exception
|
81
|
+
end
|
45
82
|
tp.disable
|
46
83
|
b = exc.instance_variable_get(EXC_BINDING_VAR)
|
47
84
|
if exc.kind_of?(StandardError) and b
|
@@ -62,13 +99,17 @@ module Dexc
|
|
62
99
|
|
63
100
|
begin
|
64
101
|
require 'pry'
|
102
|
+
Pry.config.hooks.add_hook(:when_started, :dexc_init_ex) do |_, _, pry|
|
103
|
+
pry.last_exception = exc
|
104
|
+
pry.backtrace = (exc.backtrace || [])
|
105
|
+
end
|
65
106
|
b.pry
|
66
107
|
rescue LoadError
|
67
108
|
require 'irb'
|
68
|
-
IRB::Irb.
|
109
|
+
IRB::Irb.class_eval do
|
69
110
|
alias_method :eval_input_orig, :eval_input
|
70
111
|
define_method(:eval_input) do
|
71
|
-
IRB::Irb.
|
112
|
+
IRB::Irb.class_eval { alias_method :eval_input, :eval_input_orig }
|
72
113
|
require 'irb/ext/multi-irb'
|
73
114
|
IRB.irb(nil, b)
|
74
115
|
end
|
data/lib/dexc/version.rb
CHANGED
metadata
CHANGED
@@ -1,30 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dexc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Kazuki Tsujimoto
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-08-18 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
description: Automatically start the REPL and show trace on an exception to debug.
|
@@ -47,6 +44,7 @@ files:
|
|
47
44
|
- test/test_dexc.rb
|
48
45
|
homepage: https://github.com/k-tsj/dexc
|
49
46
|
licenses: []
|
47
|
+
metadata: {}
|
50
48
|
post_install_message:
|
51
49
|
rdoc_options:
|
52
50
|
- --main
|
@@ -54,27 +52,19 @@ rdoc_options:
|
|
54
52
|
require_paths:
|
55
53
|
- lib
|
56
54
|
required_ruby_version: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
55
|
requirements:
|
59
|
-
- -
|
56
|
+
- - '>='
|
60
57
|
- !ruby/object:Gem::Version
|
61
58
|
version: '0'
|
62
|
-
segments:
|
63
|
-
- 0
|
64
|
-
hash: 2613877154168346120
|
65
59
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
60
|
requirements:
|
68
|
-
- -
|
61
|
+
- - '>='
|
69
62
|
- !ruby/object:Gem::Version
|
70
63
|
version: '0'
|
71
|
-
segments:
|
72
|
-
- 0
|
73
|
-
hash: 2613877154168346120
|
74
64
|
requirements: []
|
75
65
|
rubyforge_project:
|
76
|
-
rubygems_version:
|
66
|
+
rubygems_version: 2.0.3
|
77
67
|
signing_key:
|
78
|
-
specification_version:
|
68
|
+
specification_version: 4
|
79
69
|
summary: A library that helps you to debug an exception
|
80
70
|
test_files: []
|