puts_debuggerer 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +55 -20
  3. data/lib/puts_debuggerer.rb +23 -10
  4. metadata +11 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a76ad1423ec2f3a99ddc81f5180ff557bbef1a8b
4
- data.tar.gz: 86c7f3bec6285fa098500f7135da7b3cefd3df0f
3
+ metadata.gz: 88d9830281a5e05522ae9d8e5b897f16f9be2d83
4
+ data.tar.gz: 3be27b32cbb31b1e0c1b31d987c8ee99dcbd197a
5
5
  SHA512:
6
- metadata.gz: c9e6a0d82247b43c84370708b98629ba19da1eaef472ae0980940e04ac4b6e4a1785fbe010aa14026ce35a63de95cb14160c62d9c9b89782eb0b1276519592f7
7
- data.tar.gz: 236fd33a65d78794613d5a0de3e26afcf784cf88c9592773eba76e9ee4ceb17020a6eb2176c6a8e793d71b05e75933a596447f00ce3d86bb468514d330e9af01
6
+ metadata.gz: fb1d343228ff5550b5b9371db25e33ae5d3d36d0d6cf22c6ba8680adf17122e89678467065d27e730bbb2011c7e106a76c675092c57ae6a1948d436b238858d8
7
+ data.tar.gz: f9dd158281412769600f08a2b31fe4a1b313bfbb5eb5f04a3c17a22c0d27ea167973cd89c56b4c0c760aa783f56dff82c68eeda4079a403bae2a2358846176f2
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # puts_debuggerer v0.5.0
1
+ # puts_debuggerer v0.5.1
2
2
  [![Gem Version](https://badge.fury.io/rb/puts_debuggerer.svg)](http://badge.fury.io/rb/puts_debuggerer)
3
3
  [![Build Status](https://travis-ci.org/AndyObtiva/puts_debuggerer.svg?branch=master)](https://travis-ci.org/AndyObtiva/puts_debuggerer)
4
4
  [![Coverage Status](https://coveralls.io/repos/github/AndyObtiva/puts_debuggerer/badge.svg?branch=master)](https://coveralls.io/github/AndyObtiva/puts_debuggerer?branch=master)
@@ -8,7 +8,7 @@ statements like an umbrella in a stormy day.
8
8
  Why not make it official and have puts debugging become its own perfectly
9
9
  legitimate thing?!!
10
10
 
11
- And thus, puts_debuggerer was born. A guilt-free puts debugger Ruby gem FTW!
11
+ Enter puts_debuggerer. A guilt-free puts debugger Ruby gem FTW!
12
12
 
13
13
  In other words, puts_debuggerer is a Ruby library for improved puts debugging, automatically displaying bonus useful information such as source line number and source code.
14
14
 
@@ -16,22 +16,26 @@ Partially inspired (only partially ;) by this blog post:
16
16
  https://tenderlovemaking.com/2016/02/05/i-am-a-puts-debuggerer.html
17
17
  (Credit to Tenderlove.)
18
18
 
19
+ Love PD?! Why not promote with [merchandise](https://www.zazzle.com/i+heart+pd+gifts)?
20
+
19
21
  ## Instructions
20
22
 
21
- ### Bundler
23
+ ### Option 1: Bundler
22
24
 
23
25
  Add the following to bundler's `Gemfile`.
24
26
 
25
27
  ```ruby
26
- gem 'puts_debuggerer', '~> 0.5.0'
28
+ gem 'puts_debuggerer', '~> 0.5.1'
27
29
  ```
28
30
 
29
- ### Manual
31
+ This is the recommended way for [Rails](rubyonrails.org) apps. Optionally, you may create an initializer under `config/initializers` named `puts_debuggerer_options.rb` to enable further customizations as per the [Options](#options) section below.
32
+
33
+ ### Option 2: Manual
30
34
 
31
35
  Or manually install and require library.
32
36
 
33
37
  ```bash
34
- gem install puts_debuggerer -v0.5.0
38
+ gem install puts_debuggerer -v0.5.1
35
39
  ```
36
40
 
37
41
  ```ruby
@@ -61,19 +65,23 @@ Happy puts_debuggerering!
61
65
  Example Code:
62
66
 
63
67
  ```ruby
64
- # /Users/User/finance_calculator_app/pd_test.rb # line 1
65
- bug = 'beattle' # line 2
66
- pd "Show me the source of the bug: #{bug}" # line 3
67
- pd 'What line number am I?' # line 4
68
+ # /Users/User/finance_calculator_app/pd_test.rb # line 1
69
+ bug = 'beattle' # line 2
70
+ pd 'Debugging Info:' # line 3 (literal)
71
+ pd "Show me the source of the bug: #{bug}" # line 4
72
+ pd "Show me the result of the calculation: #{(12.0/3.0)}" # line 5
68
73
  ```
69
74
 
70
75
  Example Printout:
71
76
 
72
77
  ```bash
73
- [PD] /Users/User/finance_calculator_app/pd_test.rb:3
78
+ [PD] /Users/User/finance_calculator_app/pd_test.rb:3 "Debugging Info:"
79
+ [PD] /Users/User/finance_calculator_app/pd_test.rb:4
74
80
  > pd "Show me the source of the bug: #{bug}"
75
81
  => "Show me the source of the bug: beattle"
76
- [PD] /Users/User/finance_calculator_app/pd_test.rb:4 "What line number am I?"
82
+ [PD] /Users/User/finance_calculator_app/pd_test.rb:5
83
+ > pd "Show me the result of the calculation: #{(12.0/3.0)}"
84
+ => "Show me the result of the calculation: 4.0"
77
85
  ```
78
86
 
79
87
  ### Options
@@ -87,7 +95,24 @@ Global configuration is done via `PutsDebuggerer` module attribute writers.
87
95
  On the other hand, piecemeal options can be passed to the `pd` global method as
88
96
  the second argument.
89
97
 
90
- Example:
98
+ Example 1:
99
+
100
+ ```ruby
101
+ # File Name: /Users/User/project/piecemeal.rb
102
+ data = [1, [2, 3]]
103
+ pd data, header: true
104
+ ```
105
+
106
+ Prints out:
107
+
108
+ ```bash
109
+ ********************************************************************************
110
+ [PD] /Users/User/project/piecemeal.rb:3
111
+ > pd data, header: true
112
+ => [1, [2, 3]]
113
+ ```
114
+
115
+ Example 2:
91
116
 
92
117
  ```ruby
93
118
  # File Name: /Users/User/project/piecemeal.rb
@@ -101,7 +126,7 @@ Prints out:
101
126
  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
102
127
  -<[PD]>-
103
128
  /Users/User/project/piecemeal.rb:3
104
- > pd data
129
+ > pd data, header: '>'*80, footer: '<'*80, announcer: " -<[PD]>-\n "
105
130
  => [1, [2, 3]]
106
131
  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
107
132
  ```
@@ -184,11 +209,10 @@ Prints out:
184
209
  #### `PutsDebuggerer.print_engine`
185
210
  (default = `:p`)
186
211
 
187
- Print engine to use in object printout (e.g. `p`, `ap`, `pp`).
188
- It is represented by the print engine's global method name as a symbol
189
- (e.g. `:ap` for [awesome_print](https://github.com/awesome-print/awesome_print)).
212
+ Print engine is a global method symbol or lambda expression to use in object printout. Examples of global methods are `:p`, `:ap`, and `:pp`. An example of a lambda expression is `lambda {|o| Rails.logger.info(o)}`
213
+
190
214
  Defaults to Ruby's built-in `p` method identified by the symbol `:p`.
191
- If it finds [awesome_print](https://github.com/awesome-print/awesome_print) loaded, it defaults to `ap` as `:ap` instead.
215
+ If it finds [awesome_print](https://github.com/awesome-print/awesome_print) loaded, it defaults to `ap` as `:ap` instead. Also, if it finds Rails loaded without ap, it relies on `lambda {|o| Rails.logger.debug(o)}` as the print engine. Otherwise if both Rails and [awesome_print](https://github.com/awesome-print/awesome_print) are loaded, then it relies on `lambda {|o| Rails.logger.ap(o)}` instead
192
216
 
193
217
  Example:
194
218
 
@@ -316,7 +340,18 @@ Prints out:
316
340
 
317
341
  ### Bonus
318
342
 
319
- puts_debuggerer comes with the following bonus utility methods:
343
+ puts_debuggerer comes with a number of bonus goodies.
344
+
345
+ It comes with [awesome_print](https://github.com/awesome-print/awesome_print).
346
+
347
+ You may disable by not requiring in Ruby or by adding an explicit reference to awesome_print with `require: false` in bundler:
348
+
349
+ ```ruby
350
+ gem "awesome_print", require: false
351
+ gem "puts_debugger"
352
+ ```
353
+
354
+ Additionally, puts_debuggerer comes with the following bonus utility methods:
320
355
 
321
356
  #### `__caller_line_number__(caller_depth=0)`
322
357
 
@@ -360,7 +395,7 @@ Prints out `puts __caller_source_line__`
360
395
 
361
396
  ## Release Notes
362
397
 
363
- * v0.5.0: custom formatter, caller backtrace, per-puts piecemeal options, and multi-line support
398
+ * v0.5.1: custom formatter, caller backtrace, per-puts piecemeal options, and multi-line support
364
399
  * v0.4.0: custom print engine (e.g. ap), custom announcer, and IRB support
365
400
  * v0.3.0: header/footer support, multi-line printout, improved format
366
401
  * v0.2.0: App path exclusion support, Rails root support, improved format
@@ -4,7 +4,7 @@ module PutsDebuggerer
4
4
  HEADER_DEFAULT = '*'*80
5
5
  FOOTER_DEFAULT = '*'*80
6
6
  PRINT_ENGINE_DEFAULT = :p
7
- PRINT_ENGINE_MESSAGE_INVALID = 'print_engine must be a valid global method symbol (e.g. :p or :puts)'
7
+ PRINT_ENGINE_MESSAGE_INVALID = 'print_engine must be a valid global method symbol (e.g. :p or :puts) or lambda/proc'
8
8
  ANNOUNCER_DEFAULT = '[PD]'
9
9
  FORMATTER_DEFAULT = -> (data) {
10
10
  puts data[:header] if data[:header]
@@ -130,7 +130,17 @@ module PutsDebuggerer
130
130
 
131
131
  def print_engine=(engine)
132
132
  if engine.nil?
133
- @print_engine = method(:ap).name rescue PRINT_ENGINE_DEFAULT
133
+ if Object.const_defined?(:Rails)
134
+ if Object.respond_to?(:ap, 'Hello')
135
+ @print_engine = lambda {|object| Rails.logger.ap(object)}
136
+ else
137
+ @print_engine = lambda {|object| Rails.logger.debug(object)}
138
+ end
139
+ else
140
+ @print_engine = method(:ap).name rescue PRINT_ENGINE_DEFAULT
141
+ end
142
+ elsif engine.is_a?(Proc)
143
+ @print_engine = engine #TODO check that it takes one parameter or else fail fast
134
144
  else
135
145
  @print_engine = method(engine).name rescue raise(PRINT_ENGINE_MESSAGE_INVALID)
136
146
  end
@@ -258,14 +268,13 @@ module PutsDebuggerer
258
268
  send("#{option}=", value)
259
269
  end
260
270
  end
261
-
262
271
  end
263
272
  end
264
273
 
265
274
  PutsDebuggerer.print_engine = PutsDebuggerer::PRINT_ENGINE_DEFAULT
266
275
  PutsDebuggerer.announcer = PutsDebuggerer::ANNOUNCER_DEFAULT
267
276
  PutsDebuggerer.formatter = PutsDebuggerer::FORMATTER_DEFAULT
268
- PutsDebuggerer.app_path = nil
277
+ PutsDebuggerer.app_path = nil #TODO also have it set Rails root on first PD
269
278
  PutsDebuggerer.caller = nil
270
279
 
271
280
  # Prints object with bonus info such as file name, line number and source
@@ -345,9 +354,9 @@ end
345
354
  # puts __caller_source_line__
346
355
  #
347
356
  # prints out `puts __caller_source_line__`
348
- def __caller_source_line__(caller_depth=0)
349
- source_line_number = __caller_line_number__(caller_depth+1)
350
- source_file = __caller_file__(caller_depth+1)
357
+ def __caller_source_line__(caller_depth=0, source_file=nil, source_line_number=nil)
358
+ source_line_number ||= __caller_line_number__(caller_depth+1)
359
+ source_file ||= __caller_file__(caller_depth+1)
351
360
  source_line = nil
352
361
  if source_file == '(irb)'
353
362
  source_line = conf.io.line(source_line_number)
@@ -386,10 +395,14 @@ def __build_pd_data__(object, print_engine_options=nil)
386
395
  pd_expression: __caller_pd_expression__(depth),
387
396
  object: object,
388
397
  object_printer: lambda do
389
- if print_engine_options.to_h.empty?
390
- send(PutsDebuggerer.print_engine, object)
398
+ if PutsDebuggerer.print_engine.is_a?(Proc)
399
+ PutsDebuggerer.print_engine.call(object)
391
400
  else
392
- send(PutsDebuggerer.print_engine, object, print_engine_options) rescue send(PutsDebuggerer.print_engine, object)
401
+ if print_engine_options.to_h.empty?
402
+ send(PutsDebuggerer.print_engine, object)
403
+ else
404
+ send(PutsDebuggerer.print_engine, object, print_engine_options) rescue send(PutsDebuggerer.print_engine, object)
405
+ end
393
406
  end
394
407
  end
395
408
  }
metadata CHANGED
@@ -1,31 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puts_debuggerer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Maleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-06 00:00:00.000000000 Z
11
+ date: 2017-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rspec
14
+ name: awesome_print
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 3.5.0
20
- type: :development
19
+ version: 1.7.0
20
+ type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 3.5.0
26
+ version: 1.7.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: rspec-mocks
28
+ name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
@@ -39,19 +39,19 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: 3.5.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: awesome_print
42
+ name: rspec-mocks
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.7.0
47
+ version: 3.5.0
48
48
  type: :development
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: 1.7.0
54
+ version: 3.5.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rdoc
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -125,7 +125,7 @@ dependencies:
125
125
  description: |
126
126
  Yes, many of us avoid debuggers like the plague and clamp on to our puts statements like an umbrella in a stormy day. Why not make it official and have puts debugging become its own perfectly legitimate thing?!!
127
127
 
128
- And thus, puts_debuggerer was born. A guilt-free puts debugger Ruby gem FTW!
128
+ Enter puts_debuggerer. A guilt-free puts debugger Ruby gem FTW!
129
129
 
130
130
  In other words, puts_debuggerer is a Ruby library for improved puts debugging, automatically displaying bonus useful information such as source line number and source code.
131
131