pry-state 0.1.4 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +9 -1
- data/lib/pry-state.rb +1 -1
- data/lib/pry-state/hook_action.rb +34 -43
- data/lib/pry-state/printer.rb +36 -0
- data/lib/pry-state/version.rb +1 -1
- data/pry-state.gemspec +5 -4
- metadata +59 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 520ba178a70a9cab1929c9368b5ce0664b49fc2f
|
4
|
+
data.tar.gz: ae440f7fbf8ef7d606d9dff0b165efa0098bd1df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 48f95903fd105d8fa9fb979f35aa6788ae2c6c8a01a922cc8019c5b207ff6eb37431da9cf06adb9ff23aa254a508869defde467c5bd4ddd349fef4f2b8e36db1
|
7
|
+
data.tar.gz: d71c27d2503db830047624a2fe26871b0bbbe23a3e17477cd515631f793442eb7160cbf8e8b64d4bc3c351269f3e804fb6dd7337386cba966b01f3f25a9ea206
|
data/README.md
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
# Pry-State
|
2
2
|
|
3
|
+
Why?
|
4
|
+
When you are debugging, you care about the state of your program. You want to inspect which value is nil or which array is still empty or something similar. The default pry session doesn't give you all these info. You have to evaluate the variables in the prompt to really see what's going on. It is this problem that this extension of pry is trying to solve.
|
5
|
+
|
3
6
|
Pry state is an extension of pry. With pry state you can see the values of the instance and local variables in a pry session.
|
4
7
|
|
5
|
-
![SCREENSHOT] (https://cloud.githubusercontent.com/assets/1620848/
|
8
|
+
![SCREENSHOT] (https://cloud.githubusercontent.com/assets/1620848/9140567/d57047a4-3d4f-11e5-901e-d508c01c8d52.png)
|
6
9
|
|
7
10
|
## Installation
|
8
11
|
|
@@ -30,6 +33,11 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
|
|
30
33
|
|
31
34
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
32
35
|
|
36
|
+
## Roadmap
|
37
|
+
|
38
|
+
1. Indicate the CHANGE in value between pry sessions by different color.
|
39
|
+
2. Associate the variables with numbers, and support command to evaluate the variable through these numbers. eg. command 's1' will show the value of first variable and so on.
|
40
|
+
|
33
41
|
## Contributing
|
34
42
|
|
35
43
|
1. Fork it ( https://github.com/[my-github-username]/pry-state/fork )
|
data/lib/pry-state.rb
CHANGED
@@ -1,66 +1,57 @@
|
|
1
|
+
require 'pry-state/printer'
|
2
|
+
|
1
3
|
class HookAction
|
2
4
|
IGNORABLE_LOCAL_VARS = [:__, :_, :_ex_, :_pry_, :_out_, :_in_, :_dir_, :_file_]
|
3
|
-
IGNORABLE_INSTANCE_VARS = [:@_request, :@_response, :@_routes]
|
4
5
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
CONTROLLER_INSTANCE_VARIABLES = [:@_request, :@_response, :@_routes]
|
7
|
+
RSPEC_INSTANCE_VARIABLES = [:@__inspect_output, :@__memoized]
|
8
|
+
IGNORABLE_INSTANCE_VARS = CONTROLLER_INSTANCE_VARIABLES + RSPEC_INSTANCE_VARIABLES
|
9
|
+
|
10
|
+
def initialize binding, pry
|
11
|
+
@binding, @pry = binding, pry
|
12
|
+
|
9
13
|
end
|
10
14
|
|
11
15
|
def act
|
12
|
-
|
13
|
-
|
16
|
+
# when using guard, locals :e, :lib, :pry_state_prev get printed.
|
17
|
+
# this 'if' cuts them off.
|
18
|
+
if @binding.eval("self.class") == Object
|
19
|
+
return
|
20
|
+
end
|
21
|
+
|
22
|
+
(binding.eval('instance_variables') - IGNORABLE_INSTANCE_VARS).each do |var|
|
23
|
+
eval_and_print var, var_color: 'green'
|
14
24
|
end
|
15
25
|
|
16
|
-
(local_variables - IGNORABLE_LOCAL_VARS).each do |var|
|
17
|
-
eval_and_print var, 'cyan'
|
26
|
+
(binding.eval('local_variables') - IGNORABLE_LOCAL_VARS).each do |var|
|
27
|
+
eval_and_print var, var_color: 'cyan'
|
18
28
|
end
|
19
29
|
end
|
20
30
|
|
21
31
|
private
|
22
|
-
attr_reader :binding, :
|
32
|
+
attr_reader :binding, :pry
|
23
33
|
|
24
|
-
def eval_and_print var,
|
25
|
-
var_name_adjusted = var.to_s.ljust(25)
|
26
|
-
print Pry::Helpers::Text.send(color, truncate(var_name_adjusted, 25) )
|
34
|
+
def eval_and_print var, var_color: 'green', value_color: 'white'
|
27
35
|
value = binding.eval(var.to_s)
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
def print_stringified_val_or_nil value
|
32
|
-
value = stringify_value value
|
33
|
-
if value.empty?
|
34
|
-
print Pry::Helpers::Text.red 'nil'
|
35
|
-
else
|
36
|
-
print truncate(value, 60)
|
36
|
+
if value_changed? var, value
|
37
|
+
var_color = "bright_#{var_color}"; value_color = 'bright_yellow'
|
37
38
|
end
|
38
|
-
|
39
|
+
Printer.trunc_and_print var, value, var_color, value_color
|
40
|
+
stick_value! var, value # to refer the value in next
|
39
41
|
end
|
40
42
|
|
41
|
-
def
|
42
|
-
|
43
|
-
"\"#{value}\""
|
44
|
-
elsif value.class == Array
|
45
|
-
"len:#{value.count} #{value}"
|
46
|
-
else
|
47
|
-
value.to_s
|
48
|
-
end
|
43
|
+
def value_changed? var, value
|
44
|
+
prev_state[var] and prev_state[var] != value
|
49
45
|
end
|
50
46
|
|
51
|
-
def
|
52
|
-
|
53
|
-
l = length - "...".chars.to_a.size
|
54
|
-
(text.chars.to_a.size > length ? text.chars.to_a[0...l].join + "..." : text).to_s
|
47
|
+
def stick_value! var, value
|
48
|
+
prev_state[var] = value
|
55
49
|
end
|
56
50
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
# print "prev value of #{var} is #{value.to_s.truncate(20)}"
|
63
|
-
# value
|
64
|
-
# end
|
51
|
+
def prev_state
|
52
|
+
# init a hash to store state to be used in next session
|
53
|
+
# in finding diff
|
54
|
+
pry.config.extra_sticky_locals[:pry_state_prev] ||= {}
|
55
|
+
end
|
65
56
|
|
66
57
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Printer
|
2
|
+
extend self
|
3
|
+
|
4
|
+
def trunc_and_print var, value, var_color, value_color
|
5
|
+
var_name_adjusted = var.to_s.ljust(25)
|
6
|
+
print Pry::Helpers::Text.send(var_color, truncate(var_name_adjusted, 25) )
|
7
|
+
print_stringified_val_or_nil value, value_color
|
8
|
+
print "\n"
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
def truncate text, length
|
13
|
+
if text.nil? then return end
|
14
|
+
l = length - "...".chars.to_a.size
|
15
|
+
(text.chars.to_a.size > length ? text.chars.to_a[0...l].join + "..." : text).to_s
|
16
|
+
end
|
17
|
+
|
18
|
+
def print_stringified_val_or_nil value, color
|
19
|
+
value = stringify_value value
|
20
|
+
if value.empty?
|
21
|
+
print Pry::Helpers::Text.red 'nil'
|
22
|
+
else
|
23
|
+
print Pry::Helpers::Text.send(color, truncate(value, 60) )
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def stringify_value value
|
28
|
+
if value.class == String
|
29
|
+
"\"#{value}\""
|
30
|
+
elsif value.class == Array
|
31
|
+
"len:#{value.count} #{value}"
|
32
|
+
else
|
33
|
+
value.to_s
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/pry-state/version.rb
CHANGED
data/pry-state.gemspec
CHANGED
@@ -20,10 +20,11 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.9"
|
22
22
|
spec.add_development_dependency "rake", "~> 10.0"
|
23
|
-
spec.add_development_dependency 'rspec', '~> 0'
|
23
|
+
spec.add_development_dependency 'rspec', '~> 3.3', '>= 3.3.0'
|
24
|
+
spec.add_development_dependency 'rspec-core', '~> 3.3', '>= 3.3.2'
|
25
|
+
spec.add_development_dependency 'pry-nav', '~> 0.2.4'
|
26
|
+
spec.add_development_dependency 'guard', '~> 2.13', '>= 2.13.0'
|
27
|
+
spec.add_development_dependency 'guard-rspec', '~> 4.6', '>= 4.6.3'
|
24
28
|
spec.add_runtime_dependency 'pry', '>= 0.9.10', '< 0.11.0'
|
25
|
-
spec.add_development_dependency "pry-nav", '~> 0'
|
26
|
-
spec.add_development_dependency "guard", '~> 0'
|
27
|
-
spec.add_development_dependency "guard-rspec", '~> 0'
|
28
29
|
|
29
30
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pry-state
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sudhagar
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -44,76 +44,114 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '3.3'
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 3.3.0
|
48
51
|
type: :development
|
49
52
|
prerelease: false
|
50
53
|
version_requirements: !ruby/object:Gem::Requirement
|
51
54
|
requirements:
|
52
55
|
- - "~>"
|
53
56
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
57
|
+
version: '3.3'
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 3.3.0
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
62
|
+
name: rspec-core
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
58
64
|
requirements:
|
59
|
-
- - "
|
65
|
+
- - "~>"
|
60
66
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
62
|
-
- - "
|
67
|
+
version: '3.3'
|
68
|
+
- - ">="
|
63
69
|
- !ruby/object:Gem::Version
|
64
|
-
version:
|
65
|
-
type: :
|
70
|
+
version: 3.3.2
|
71
|
+
type: :development
|
66
72
|
prerelease: false
|
67
73
|
version_requirements: !ruby/object:Gem::Requirement
|
68
74
|
requirements:
|
69
|
-
- - "
|
75
|
+
- - "~>"
|
70
76
|
- !ruby/object:Gem::Version
|
71
|
-
version:
|
72
|
-
- - "
|
77
|
+
version: '3.3'
|
78
|
+
- - ">="
|
73
79
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
80
|
+
version: 3.3.2
|
75
81
|
- !ruby/object:Gem::Dependency
|
76
82
|
name: pry-nav
|
77
83
|
requirement: !ruby/object:Gem::Requirement
|
78
84
|
requirements:
|
79
85
|
- - "~>"
|
80
86
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
87
|
+
version: 0.2.4
|
82
88
|
type: :development
|
83
89
|
prerelease: false
|
84
90
|
version_requirements: !ruby/object:Gem::Requirement
|
85
91
|
requirements:
|
86
92
|
- - "~>"
|
87
93
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
94
|
+
version: 0.2.4
|
89
95
|
- !ruby/object:Gem::Dependency
|
90
96
|
name: guard
|
91
97
|
requirement: !ruby/object:Gem::Requirement
|
92
98
|
requirements:
|
93
99
|
- - "~>"
|
94
100
|
- !ruby/object:Gem::Version
|
95
|
-
version: '
|
101
|
+
version: '2.13'
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: 2.13.0
|
96
105
|
type: :development
|
97
106
|
prerelease: false
|
98
107
|
version_requirements: !ruby/object:Gem::Requirement
|
99
108
|
requirements:
|
100
109
|
- - "~>"
|
101
110
|
- !ruby/object:Gem::Version
|
102
|
-
version: '
|
111
|
+
version: '2.13'
|
112
|
+
- - ">="
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: 2.13.0
|
103
115
|
- !ruby/object:Gem::Dependency
|
104
116
|
name: guard-rspec
|
105
117
|
requirement: !ruby/object:Gem::Requirement
|
106
118
|
requirements:
|
107
119
|
- - "~>"
|
108
120
|
- !ruby/object:Gem::Version
|
109
|
-
version: '
|
121
|
+
version: '4.6'
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 4.6.3
|
110
125
|
type: :development
|
111
126
|
prerelease: false
|
112
127
|
version_requirements: !ruby/object:Gem::Requirement
|
113
128
|
requirements:
|
114
129
|
- - "~>"
|
115
130
|
- !ruby/object:Gem::Version
|
116
|
-
version: '
|
131
|
+
version: '4.6'
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: 4.6.3
|
135
|
+
- !ruby/object:Gem::Dependency
|
136
|
+
name: pry
|
137
|
+
requirement: !ruby/object:Gem::Requirement
|
138
|
+
requirements:
|
139
|
+
- - ">="
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: 0.9.10
|
142
|
+
- - "<"
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: 0.11.0
|
145
|
+
type: :runtime
|
146
|
+
prerelease: false
|
147
|
+
version_requirements: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - ">="
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: 0.9.10
|
152
|
+
- - "<"
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: 0.11.0
|
117
155
|
description: Pry state lets you to see the values of the instance and local variables
|
118
156
|
in a pry session
|
119
157
|
email:
|
@@ -134,6 +172,7 @@ files:
|
|
134
172
|
- bin/setup
|
135
173
|
- lib/pry-state.rb
|
136
174
|
- lib/pry-state/hook_action.rb
|
175
|
+
- lib/pry-state/printer.rb
|
137
176
|
- lib/pry-state/version.rb
|
138
177
|
- pry-state.gemspec
|
139
178
|
homepage: https://github.com/SudhagarS/pry-state
|