dbg-rb 0.3.2 β 0.4.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/README.md +26 -0
- data/inline/dbg_rb.rb +47 -5
- data/lbg_logs.png +0 -0
- data/lib/dbg-rb.rb +47 -5
- data/lib/dbg_rb/version.rb +1 -1
- data/spec/inline_spec.rb +95 -0
- data/spec/main_spec.rb +95 -0
- 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: 05a2b90f0904d6bfdbcb0a03099b305364cecdb9cd49a833e1d55338b9fb6c80
|
4
|
+
data.tar.gz: db531071fce82b46b52b12bc4b97e1b563acc38621fb83d191ef58bcdaa4b5b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 12f8fd0a098e18b73d66fda695ecc87d99d9b73661a130c92866dfbf143380d71f2645ec8a7cc7e773f7bd4fa8d383af25625c853133fafd7d2d787e614c4342
|
7
|
+
data.tar.gz: 774daf99ccc4c44cf23e9c2c8188bbf0bf1fc760cbc1e37f5e8128cf14ffc17512e59bfdc65efedb83b1a28e85f3f2330bcf094db5c7c1cf91a77bc4bbe26378
|
data/README.md
CHANGED
@@ -34,6 +34,7 @@ dbg(User.last.id)
|
|
34
34
|
|
35
35
|
It appends a caller file, line info and source expression to the debug output.
|
36
36
|
|
37
|
+
|
37
38
|
Hash values are pretty printed:
|
38
39
|
|
39
40
|
```ruby
|
@@ -85,6 +86,31 @@ DbgRb.highlight!("πππ£πΊππ§¨ππ€―π₯³ππ¦")
|
|
85
86
|
|
86
87
|

|
87
88
|
|
89
|
+
## Logs integration
|
90
|
+
|
91
|
+

|
92
|
+
|
93
|
+
Use `lbg` to send debug output through a logger instead of `stdio`:
|
94
|
+
|
95
|
+
```ruby
|
96
|
+
require "dbg-rb"
|
97
|
+
|
98
|
+
lbg(User.last.id)
|
99
|
+
# Sends to Rails.logger.debug: [web/user_sessions_controller.rb:37] User.last.id = 1972
|
100
|
+
```
|
101
|
+
|
102
|
+
The `lbg` method:
|
103
|
+
- Uses `Rails.logger` by default when Rails is available
|
104
|
+
- Falls back to regular `dbg` behavior if no logger is configured
|
105
|
+
- Uses `:debug` log level by default
|
106
|
+
|
107
|
+
You can configure a custom logger and log level:
|
108
|
+
|
109
|
+
```ruby
|
110
|
+
DbgRb.logger = MyLogger.new
|
111
|
+
DbgRb.log_level = :info
|
112
|
+
```
|
113
|
+
|
88
114
|
## Status
|
89
115
|
|
90
116
|
Contributions & ideas very welcome!
|
data/inline/dbg_rb.rb
CHANGED
@@ -35,13 +35,27 @@ module DbgRb
|
|
35
35
|
Impl.highlight!(wrapper)
|
36
36
|
end
|
37
37
|
|
38
|
+
def self.logger=(val)
|
39
|
+
Impl.logger = val
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.log_level=(val)
|
43
|
+
Impl.log_level = val
|
44
|
+
end
|
45
|
+
|
38
46
|
def self.dbg(*msgs)
|
39
47
|
Impl.new.dbg(*msgs)
|
40
48
|
end
|
41
49
|
|
50
|
+
def self.lbg(*msgs)
|
51
|
+
Impl.new.lbg(*msgs)
|
52
|
+
end
|
53
|
+
|
42
54
|
class Impl
|
43
55
|
@@color_code = nil
|
44
56
|
@@highlight = false
|
57
|
+
@@logger = defined?(Rails) ? Rails.logger : nil
|
58
|
+
@@log_level = :debug
|
45
59
|
|
46
60
|
def self.color_code=(val)
|
47
61
|
@@color_code = val
|
@@ -51,8 +65,16 @@ module DbgRb
|
|
51
65
|
@@highlight = wrapper
|
52
66
|
end
|
53
67
|
|
54
|
-
def
|
55
|
-
|
68
|
+
def self.logger=(val)
|
69
|
+
@@logger = val
|
70
|
+
end
|
71
|
+
|
72
|
+
def self.log_level=(val)
|
73
|
+
@@log_level = val
|
74
|
+
end
|
75
|
+
|
76
|
+
def dbg_base(value)
|
77
|
+
loc = caller_locations.first(4).last
|
56
78
|
source_file = if (path = loc.absolute_path)
|
57
79
|
path.split("/").last(2).join("/")
|
58
80
|
else
|
@@ -60,7 +82,7 @@ module DbgRb
|
|
60
82
|
end
|
61
83
|
|
62
84
|
file = if (path = loc.absolute_path)
|
63
|
-
path
|
85
|
+
path
|
64
86
|
else
|
65
87
|
nil
|
66
88
|
end
|
@@ -71,7 +93,11 @@ module DbgRb
|
|
71
93
|
File.open(file) do |f|
|
72
94
|
f.each_line.with_index do |line, i|
|
73
95
|
if i == loc.lineno - 1
|
74
|
-
splitby, remove_parantheses = if line.include?("
|
96
|
+
splitby, remove_parantheses = if line.include?("lbg(")
|
97
|
+
["lbg(", true]
|
98
|
+
elsif line.include?("lbg ")
|
99
|
+
["lbg ", false]
|
100
|
+
elsif line.include?("dbg(")
|
75
101
|
["dbg(", true]
|
76
102
|
else
|
77
103
|
["dbg ", false]
|
@@ -104,8 +130,20 @@ module DbgRb
|
|
104
130
|
if @@color_code != nil
|
105
131
|
output = colorize(output, @@color_code)
|
106
132
|
end
|
133
|
+
|
134
|
+
output
|
135
|
+
end
|
107
136
|
|
108
|
-
|
137
|
+
def dbg(value)
|
138
|
+
puts dbg_base(value)
|
139
|
+
end
|
140
|
+
|
141
|
+
def lbg(value)
|
142
|
+
if @@logger.nil?
|
143
|
+
puts dbg_base(value)
|
144
|
+
else
|
145
|
+
@@logger.send(@@log_level, dbg_base(value))
|
146
|
+
end
|
109
147
|
end
|
110
148
|
|
111
149
|
private
|
@@ -159,4 +197,8 @@ def dbg(value)
|
|
159
197
|
DbgRb.dbg(value)
|
160
198
|
end
|
161
199
|
|
200
|
+
def lbg(value)
|
201
|
+
DbgRb.lbg(value)
|
202
|
+
end
|
203
|
+
|
162
204
|
DbgRb.color_code = 33 # yellow
|
data/lbg_logs.png
ADDED
Binary file
|
data/lib/dbg-rb.rb
CHANGED
@@ -11,13 +11,27 @@ module DbgRb
|
|
11
11
|
Impl.highlight!(wrapper)
|
12
12
|
end
|
13
13
|
|
14
|
+
def self.logger=(val)
|
15
|
+
Impl.logger = val
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.log_level=(val)
|
19
|
+
Impl.log_level = val
|
20
|
+
end
|
21
|
+
|
14
22
|
def self.dbg(*msgs)
|
15
23
|
Impl.new.dbg(*msgs)
|
16
24
|
end
|
17
25
|
|
26
|
+
def self.lbg(*msgs)
|
27
|
+
Impl.new.lbg(*msgs)
|
28
|
+
end
|
29
|
+
|
18
30
|
class Impl
|
19
31
|
@@color_code = nil
|
20
32
|
@@highlight = false
|
33
|
+
@@logger = defined?(Rails) ? Rails.logger : nil
|
34
|
+
@@log_level = :debug
|
21
35
|
|
22
36
|
def self.color_code=(val)
|
23
37
|
@@color_code = val
|
@@ -27,8 +41,16 @@ module DbgRb
|
|
27
41
|
@@highlight = wrapper
|
28
42
|
end
|
29
43
|
|
30
|
-
def
|
31
|
-
|
44
|
+
def self.logger=(val)
|
45
|
+
@@logger = val
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.log_level=(val)
|
49
|
+
@@log_level = val
|
50
|
+
end
|
51
|
+
|
52
|
+
def dbg_base(value)
|
53
|
+
loc = caller_locations.first(4).last
|
32
54
|
source_file = if (path = loc.absolute_path)
|
33
55
|
path.split("/").last(2).join("/")
|
34
56
|
else
|
@@ -36,7 +58,7 @@ module DbgRb
|
|
36
58
|
end
|
37
59
|
|
38
60
|
file = if (path = loc.absolute_path)
|
39
|
-
path
|
61
|
+
path
|
40
62
|
else
|
41
63
|
nil
|
42
64
|
end
|
@@ -47,7 +69,11 @@ module DbgRb
|
|
47
69
|
File.open(file) do |f|
|
48
70
|
f.each_line.with_index do |line, i|
|
49
71
|
if i == loc.lineno - 1
|
50
|
-
splitby, remove_parantheses = if line.include?("
|
72
|
+
splitby, remove_parantheses = if line.include?("lbg(")
|
73
|
+
["lbg(", true]
|
74
|
+
elsif line.include?("lbg ")
|
75
|
+
["lbg ", false]
|
76
|
+
elsif line.include?("dbg(")
|
51
77
|
["dbg(", true]
|
52
78
|
else
|
53
79
|
["dbg ", false]
|
@@ -80,8 +106,20 @@ module DbgRb
|
|
80
106
|
if @@color_code != nil
|
81
107
|
output = colorize(output, @@color_code)
|
82
108
|
end
|
109
|
+
|
110
|
+
output
|
111
|
+
end
|
83
112
|
|
84
|
-
|
113
|
+
def dbg(value)
|
114
|
+
puts dbg_base(value)
|
115
|
+
end
|
116
|
+
|
117
|
+
def lbg(value)
|
118
|
+
if @@logger.nil?
|
119
|
+
puts dbg_base(value)
|
120
|
+
else
|
121
|
+
@@logger.send(@@log_level, dbg_base(value))
|
122
|
+
end
|
85
123
|
end
|
86
124
|
|
87
125
|
private
|
@@ -135,4 +173,8 @@ def dbg(value)
|
|
135
173
|
DbgRb.dbg(value)
|
136
174
|
end
|
137
175
|
|
176
|
+
def lbg(value)
|
177
|
+
DbgRb.lbg(value)
|
178
|
+
end
|
179
|
+
|
138
180
|
DbgRb.color_code = 33 # yellow
|
data/lib/dbg_rb/version.rb
CHANGED
data/spec/inline_spec.rb
CHANGED
@@ -124,4 +124,99 @@ describe DbgRb do
|
|
124
124
|
dbg(random_bytes)
|
125
125
|
end.not_to raise_error
|
126
126
|
end
|
127
|
+
|
128
|
+
describe "lbg" do
|
129
|
+
let(:mock_logger) do
|
130
|
+
Class.new do
|
131
|
+
attr_reader :logged_messages, :logged_levels
|
132
|
+
|
133
|
+
def initialize
|
134
|
+
@logged_messages = []
|
135
|
+
@logged_levels = []
|
136
|
+
end
|
137
|
+
|
138
|
+
def debug(message)
|
139
|
+
@logged_levels << :debug
|
140
|
+
@logged_messages << message
|
141
|
+
end
|
142
|
+
|
143
|
+
def info(message)
|
144
|
+
@logged_levels << :info
|
145
|
+
@logged_messages << message
|
146
|
+
end
|
147
|
+
|
148
|
+
def warn(message)
|
149
|
+
@logged_levels << :warn
|
150
|
+
@logged_messages << message
|
151
|
+
end
|
152
|
+
|
153
|
+
def error(message)
|
154
|
+
@logged_levels << :error
|
155
|
+
@logged_messages << message
|
156
|
+
end
|
157
|
+
end.new
|
158
|
+
end
|
159
|
+
|
160
|
+
before do
|
161
|
+
DbgRb.logger = nil
|
162
|
+
DbgRb.log_level = :debug
|
163
|
+
end
|
164
|
+
|
165
|
+
it "falls back to dbg when no logger is configured" do
|
166
|
+
expect do
|
167
|
+
lbg("test")
|
168
|
+
end.to output("[spec/inline_spec.rb:167] \"test\"\n").to_stdout
|
169
|
+
end
|
170
|
+
|
171
|
+
it "uses logger when configured" do
|
172
|
+
DbgRb.logger = mock_logger
|
173
|
+
|
174
|
+
lbg("test message")
|
175
|
+
|
176
|
+
expect(mock_logger.logged_messages).to eq(["[spec/inline_spec.rb:174] \"test message\""])
|
177
|
+
expect(mock_logger.logged_levels).to eq([:debug])
|
178
|
+
end
|
179
|
+
|
180
|
+
it "uses custom log level" do
|
181
|
+
DbgRb.logger = mock_logger
|
182
|
+
DbgRb.log_level = :info
|
183
|
+
|
184
|
+
lbg("test message")
|
185
|
+
|
186
|
+
expect(mock_logger.logged_messages).to eq(["[spec/inline_spec.rb:184] \"test message\""])
|
187
|
+
expect(mock_logger.logged_levels).to eq([:info])
|
188
|
+
end
|
189
|
+
|
190
|
+
it "logs variables with logger" do
|
191
|
+
DbgRb.logger = mock_logger
|
192
|
+
test_var = 42
|
193
|
+
|
194
|
+
lbg(test_var)
|
195
|
+
|
196
|
+
expect(mock_logger.logged_messages).to eq(["[spec/inline_spec.rb:194] test_var = 42"])
|
197
|
+
expect(mock_logger.logged_levels).to eq([:debug])
|
198
|
+
end
|
199
|
+
|
200
|
+
it "logs complex objects with logger" do
|
201
|
+
DbgRb.logger = mock_logger
|
202
|
+
test_hash = { a: 1, b: "test" }
|
203
|
+
|
204
|
+
lbg(test_hash)
|
205
|
+
|
206
|
+
expected_message = "[spec/inline_spec.rb:204] test_hash = {\n \"a\": 1,\n \"b\": \"test\"\n}"
|
207
|
+
expect(mock_logger.logged_messages).to eq([expected_message])
|
208
|
+
expect(mock_logger.logged_levels).to eq([:debug])
|
209
|
+
end
|
210
|
+
|
211
|
+
it "respects color and highlight settings with logger" do
|
212
|
+
DbgRb.logger = mock_logger
|
213
|
+
DbgRb.color_code = 31
|
214
|
+
DbgRb.highlight!("!!!")
|
215
|
+
|
216
|
+
lbg("styled")
|
217
|
+
|
218
|
+
expected_message = "\e[31m!!!\n[spec/inline_spec.rb:216] \"styled\"\n!!!\e[0m"
|
219
|
+
expect(mock_logger.logged_messages).to eq([expected_message])
|
220
|
+
end
|
221
|
+
end
|
127
222
|
end
|
data/spec/main_spec.rb
CHANGED
@@ -124,4 +124,99 @@ describe DbgRb do
|
|
124
124
|
dbg(random_bytes)
|
125
125
|
end.not_to raise_error
|
126
126
|
end
|
127
|
+
|
128
|
+
describe "lbg" do
|
129
|
+
let(:mock_logger) do
|
130
|
+
Class.new do
|
131
|
+
attr_reader :logged_messages, :logged_levels
|
132
|
+
|
133
|
+
def initialize
|
134
|
+
@logged_messages = []
|
135
|
+
@logged_levels = []
|
136
|
+
end
|
137
|
+
|
138
|
+
def debug(message)
|
139
|
+
@logged_levels << :debug
|
140
|
+
@logged_messages << message
|
141
|
+
end
|
142
|
+
|
143
|
+
def info(message)
|
144
|
+
@logged_levels << :info
|
145
|
+
@logged_messages << message
|
146
|
+
end
|
147
|
+
|
148
|
+
def warn(message)
|
149
|
+
@logged_levels << :warn
|
150
|
+
@logged_messages << message
|
151
|
+
end
|
152
|
+
|
153
|
+
def error(message)
|
154
|
+
@logged_levels << :error
|
155
|
+
@logged_messages << message
|
156
|
+
end
|
157
|
+
end.new
|
158
|
+
end
|
159
|
+
|
160
|
+
before do
|
161
|
+
DbgRb.logger = nil
|
162
|
+
DbgRb.log_level = :debug
|
163
|
+
end
|
164
|
+
|
165
|
+
it "falls back to dbg when no logger is configured" do
|
166
|
+
expect do
|
167
|
+
lbg("test")
|
168
|
+
end.to output("[spec/main_spec.rb:167] \"test\"\n").to_stdout
|
169
|
+
end
|
170
|
+
|
171
|
+
it "uses logger when configured" do
|
172
|
+
DbgRb.logger = mock_logger
|
173
|
+
|
174
|
+
lbg("test message")
|
175
|
+
|
176
|
+
expect(mock_logger.logged_messages).to eq(["[spec/main_spec.rb:174] \"test message\""])
|
177
|
+
expect(mock_logger.logged_levels).to eq([:debug])
|
178
|
+
end
|
179
|
+
|
180
|
+
it "uses custom log level" do
|
181
|
+
DbgRb.logger = mock_logger
|
182
|
+
DbgRb.log_level = :info
|
183
|
+
|
184
|
+
lbg("test message")
|
185
|
+
|
186
|
+
expect(mock_logger.logged_messages).to eq(["[spec/main_spec.rb:184] \"test message\""])
|
187
|
+
expect(mock_logger.logged_levels).to eq([:info])
|
188
|
+
end
|
189
|
+
|
190
|
+
it "logs variables with logger" do
|
191
|
+
DbgRb.logger = mock_logger
|
192
|
+
test_var = 42
|
193
|
+
|
194
|
+
lbg(test_var)
|
195
|
+
|
196
|
+
expect(mock_logger.logged_messages).to eq(["[spec/main_spec.rb:194] test_var = 42"])
|
197
|
+
expect(mock_logger.logged_levels).to eq([:debug])
|
198
|
+
end
|
199
|
+
|
200
|
+
it "logs complex objects with logger" do
|
201
|
+
DbgRb.logger = mock_logger
|
202
|
+
test_hash = { a: 1, b: "test" }
|
203
|
+
|
204
|
+
lbg(test_hash)
|
205
|
+
|
206
|
+
expected_message = "[spec/main_spec.rb:204] test_hash = {\n \"a\": 1,\n \"b\": \"test\"\n}"
|
207
|
+
expect(mock_logger.logged_messages).to eq([expected_message])
|
208
|
+
expect(mock_logger.logged_levels).to eq([:debug])
|
209
|
+
end
|
210
|
+
|
211
|
+
it "respects color and highlight settings with logger" do
|
212
|
+
DbgRb.logger = mock_logger
|
213
|
+
DbgRb.color_code = 31
|
214
|
+
DbgRb.highlight!("!!!")
|
215
|
+
|
216
|
+
lbg("styled")
|
217
|
+
|
218
|
+
expected_message = "\e[31m!!!\n[spec/main_spec.rb:216] \"styled\"\n!!!\e[0m"
|
219
|
+
expect(mock_logger.logged_messages).to eq([expected_message])
|
220
|
+
end
|
221
|
+
end
|
127
222
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dbg-rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- pawurb
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-08-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -99,6 +99,7 @@ files:
|
|
99
99
|
- dbg_emoji.png
|
100
100
|
- inline/dbg_rb.rb
|
101
101
|
- inline/sync.rb
|
102
|
+
- lbg_logs.png
|
102
103
|
- lib/dbg-rb.rb
|
103
104
|
- lib/dbg_rb/version.rb
|
104
105
|
- spec/inline_spec.rb
|