debug_me 1.0.4 → 1.0.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0ee6256c053274e46630862e170317e97ea6bb0aa27394661473d0acd84fcb1d
4
- data.tar.gz: 0e080550b9660678ec343b9650d89e8153e3e386913ac94d73f72c7eb70a87df
3
+ metadata.gz: b12a0c426af49f51958f84424b8bd2160f1b3a139d75b7c83a8b7021adb8788d
4
+ data.tar.gz: 4c7b31bbddfa1a029410413c3847ec31ac678fe004a0e53d263457f4c822c1de
5
5
  SHA512:
6
- metadata.gz: 9479b7df27c05071f452eafd7a016ea34bfa42952217d1c1f81ec885e069ccb212f00c0339f3d918ccc2edcb215c030ff0a5808c61067cb48570a0c9bc91fd96
7
- data.tar.gz: 29d34ee5dc5ec7534e0342a1187d8c15fc118bda3266c1ebcf37376090eb73b5327e22aace77db84052545b60170ce6c9433aa59dd88e024a6a8d6ffba7f0cd8
6
+ metadata.gz: ac86537e986b53194dce7d08605aaef788d5a48849f205e80b82ca27cb6af01793952b93b305dad2e0a8ea7f37b75d153de2cba7630d0d41ce6424e1e9d08133
7
+ data.tar.gz: 3dbcce464705ce68215d50e9e28b6c56a38e94b869edb7340b7ce648c3acced7db2ccf40b50ad83df8d75812e0c6d046725cdecd0537f8e64ad78651c4e6047e
data/README.md CHANGED
@@ -2,10 +2,10 @@
2
2
 
3
3
  A tool to print the labeled value of variables.
4
4
 
5
- This thing is pretty old;but, so am I. For the gray
6
- in our hair we still to the job.
5
+ This thing is pretty old; but, so am I. Even with the gray
6
+ in our hair we still do the job.
7
7
 
8
- There are much complex/comprehensive
8
+ There are much more complex/comprehensive
9
9
  ways of debugging in a complex application. But,
10
10
  you know, I keep returning to this little method
11
11
  time after time. I guess that marks me as a geezer.
@@ -15,7 +15,8 @@ DebugMe::debug_me(){} works with local, instance and class variables.
15
15
 
16
16
  ## Recent Changes
17
17
 
18
- * 1.0.4 Added :strftime to the options; changed the default format from decimal seconds since epic to something that os more easy comprehend on a clock.
18
+ * 1.0.5 Added support for an instance of a Logger class.
19
+ * 1.0.4 Added :strftime to the options; changed the default format from decimal seconds since epic to something that is more easy comprehend on a clock.
19
20
 
20
21
  ## Installation
21
22
 
@@ -94,7 +95,7 @@ The default options is a global constant `DebugMeDefaultOptions` that is outside
94
95
 
95
96
  Notice that this constant is outside of the DebugMe's module namespace.
96
97
 
97
- ```
98
+ ```ruby
98
99
  DebugMeDefaultOptions = {
99
100
  tag: 'DEBUG', # A tag to prepend to each output line
100
101
  time: true, # Include a time-stamp in front of the tag
@@ -104,23 +105,88 @@ DebugMeDefaultOptions = {
104
105
  ivar: true, # Include instance variables in the output
105
106
  cvar: true, # Include class variables in the output
106
107
  cconst: true, # Include class constants
108
+ logger: nil, # Pass in a logger class instance like Rails.logger
107
109
  file: $stdout # The output file
108
110
  }
109
111
  ```
110
112
 
111
113
  If you want the output of the method to always go to STDERR then do this:
112
114
 
113
- ```
115
+ ```ruby
114
116
  require 'debug_me'
115
- DebugMeDefaultOptions[:file] = $stderr
117
+ DebugMeDefaultOptions[:file] = $stderr # or STDERR
116
118
  ```
117
119
  If you want the `debug_me` output to go to a real file:
118
120
 
119
- ```
121
+ ```ruby
120
122
  DebugMeDefaultOptions[:file] = File.open('debug_me.log', 'w')
121
123
 
122
124
  ```
123
125
 
126
+ ## Using a Logger class instance
127
+
128
+ If you are working in Rails and want all the `debug_me` output to go to the Rails.logger its as easy as:
129
+ ```ruby
130
+ DebugMeDefaultOptions[:logger] = Rails.logger
131
+
132
+ ```
133
+
134
+ Or while working in rails you only want to add a marker to the Rails.logger do this:
135
+ ```ruby
136
+ debug_me(logger: Rails.logger, tag: 'Hello World')
137
+ ```
138
+
139
+ If you are working in Rails and want to use both the standard `debug_me` functions and occassionally put stuff into the Rails.logger but do not want to always remember the option settings then do something line this in a `config/initializers/aaaaa_debug_me.rb` file:
140
+
141
+ ```ruby
142
+ # config/initializers/aaaaa_debug_me.rb
143
+
144
+ require 'debug_me'
145
+
146
+ module DebugMe
147
+ def log_me(message, options={}, &block)
148
+ options = {logger: Rails.logger, time: false, header: false, tag: message}
149
+ block_given? ? debug_me(options, block) : debug_me(options)
150
+ end
151
+ end
152
+
153
+ include DebugMe
154
+
155
+ # Just setup the base name. The parent path will be added below ...
156
+ debug_me_file_name = 'debug_me'
157
+
158
+ # NOTE: you could add a timestamp to the filename
159
+ # debug_me_file_name += '_' + Time.now.strftime('%Y%m%d%H%M%S')
160
+
161
+ debug_me_file_name += '_' + Process.argv0.gsub('/',' ').split(' ').last
162
+ # NOTE: by using the Process.argv0 ... you get multiple log files for
163
+ # rails, rake, sidekiq etc.
164
+
165
+ debug_me_file_name += '.log'
166
+
167
+ debug_me_filepath = Rails.root + 'log' + debug_me_file_name
168
+
169
+ debug_me_file = File.open(debug_me_filepath, 'w')
170
+
171
+ debug_me_file.puts <<~RULER
172
+
173
+ ==================== Starting New Test Run --------->>>>>>
174
+
175
+ RULER
176
+
177
+ # Set application wide options in the DebugMeDefaultOptions hash
178
+ DebugMeDefaultOptions[:file] = debug_me_file
179
+
180
+ debug_me{['ENV']}
181
+
182
+ ```
183
+
184
+ What that does for your Rails application is dump all of your system environment variables and their values to a debug_me log file in the log directory of the application.
185
+
186
+ It also adds a new method `log_me` which you can use to send stuff to the `Rails.logger` instance. The method used by `debug_me` for the `logger` instance is always the `debug` method.
187
+
188
+ ## Conclusion
189
+
124
190
  The rest of the default options are obvious.
125
191
 
126
192
  You can always over-ride the default options on a case by case basis like this:
@@ -10,6 +10,8 @@ DebugMeDefaultOptions = {
10
10
  ivar: true, # Include instance variables in the output
11
11
  cvar: true, # Include class variables in the output
12
12
  cconst: true, # Include class constants
13
+ logger: nil, # Pass in an instance of logger class like Rails.logger
14
+ # must respond_to? :debug
13
15
  file: $stdout # The output file
14
16
  }
15
17
 
@@ -25,6 +27,7 @@ module DebugMe
25
27
  out_string = ''
26
28
 
27
29
  f = options[:file]
30
+ l = options[:logger]
28
31
  s = ''
29
32
  s += Time.now.strftime(options[:strftime])+' ' if options[:time]
30
33
  s += "#{options[:tag]}"
@@ -60,10 +63,14 @@ module DebugMe
60
63
  f.flush
61
64
  end
62
65
 
66
+ unless l.nil?
67
+ l.debug(out_string) if l.respond_to? :debug
68
+ end
69
+
63
70
  return out_string
64
71
  end ## def debug_me( options={}, &block )
65
72
 
66
73
  # def log_me(msg, opts={})
67
- # debug_me({:tag => msg, :header => false}.merge(opts))
74
+ # debug_me({tag: msg, header: false}.merge(opts))
68
75
  # end
69
76
  end # module DebugMe
@@ -1,3 +1,3 @@
1
1
  module DebugMe
2
- VERSION = '1.0.4'
2
+ VERSION = '1.0.5'
3
3
  end
@@ -1,5 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'awesome_print'
4
+ require 'logger'
5
+ require 'pathname'
6
+
3
7
  require_relative '../lib/debug_me'
4
8
  include DebugMe
5
9
 
@@ -224,6 +228,45 @@ describe DebugMe do
224
228
 
225
229
  end # describe "works with class CONSTANTS" do
226
230
 
231
+ describe "works with a Logger class" do
232
+
233
+ it 'default logger class is nil' do
234
+ DebugMeDefaultOptions[:logger].must_equal nil
235
+ end
236
+
237
+ it 'works with standard ruby Logger class' do
238
+ logger_output_path = Pathname.pwd + 'logger_class_output.txt'
239
+ logger_output_path.exist?.must_equal false
240
+
241
+ logger = Logger.new(logger_output_path)
242
+ logger.level = Logger::DEBUG
243
+
244
+ out_string = debug_me(
245
+ logger: logger, # Use instance of Ruby's Logger
246
+ time: false, # turn off debug_me's timestamp
247
+ file: nil, # don't write to STDOUT the default
248
+ tag: 'Hello World' # say hello
249
+ )
250
+ # Generates an entry like this:
251
+ =begin
252
+ # Logfile created on 2020-04-27 16:16:38 -0500 by logger.rb/v1.4.2
253
+ D, [2020-04-27T16:16:38.580889 #54662] DEBUG -- : Hello World Source: debug_me_test.rb:244:in `block (3 levels) in <main>'
254
+ =end
255
+
256
+ lines = logger_output_path.read.split("\n")
257
+
258
+ lines.size.must_equal 2
259
+
260
+ lines[0].start_with?('# Logfile created on').must_equal true
261
+ lines[1].start_with?('D, [').must_equal true
262
+ lines[1].include?('DEBUG').must_equal true
263
+ lines[1].include?('Hello World').must_equal true
264
+ lines[1].include?('debug_me_test.rb').must_equal true
265
+ lines[1].include?(out_string.chomp).must_equal true
266
+
267
+ logger_output_path.delete
268
+ end
227
269
 
270
+ end
228
271
 
229
272
  end # describe DebugMe do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: debug_me
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dewayne VanHoozer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-13 00:00:00.000000000 Z
11
+ date: 2020-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
80
  - !ruby/object:Gem::Version
81
81
  version: '0'
82
82
  requirements: []
83
- rubygems_version: 3.0.6
83
+ rubygems_version: 3.1.2
84
84
  signing_key:
85
85
  specification_version: 4
86
86
  summary: A tool to print the labeled value of variables.