trace_location 0.9.3 → 0.10.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1a561560a5db37e6870b1d73fa5882361a0536d66ac38e9a673483787cdde524
4
- data.tar.gz: 17b1ef97dec8fa0701e9892e3fd5b961ddfdc64e6cd825d7352e211cc41c80d5
3
+ metadata.gz: b1e2f74ef8aefad64a0a962c2a77dbd4a47d8992ca5ef027d0acf47da19e7c2a
4
+ data.tar.gz: ad9b606d32f96289cb629f0c58f7324e9d9704e084f61fc9bbf2d689836eabee
5
5
  SHA512:
6
- metadata.gz: 34b5ee16699470a95f50ffa50604a65db6f776f2229853049ee63ba1d6c7125b917af0a2196939d0f44925e644b99bbec76fad53fef2f98095c9a31da1e4ca60
7
- data.tar.gz: cf0f02f48e6625fdb2a9a00e4e63ba2e89b7dcd5d85c8561e06b0bc8fcf2b459242c5fa5d19cc8448d0f7907f4b8212c3e09cafbf921f03ae2a6d751997ff1e0
6
+ metadata.gz: 9835516aba4ce712bd1ef3311947e315e052de1c6cd102967d06d740db127c459754339b92221b7a2904046a8fdfe8391e105ff8001af915b9cd67eef79da1b2
7
+ data.tar.gz: 24d753f05e76317957adf43a6ab02024558af46f623a4ac548f22130b6bc7d450d238fca16d303986d3d70791b3f112919808f5de750a520c01978880826fe08
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.5
2
+ TargetRubyVersion: 2.6
3
3
 
4
4
  Metrics:
5
5
  Enabled: false
@@ -3,5 +3,11 @@ sudo: false
3
3
  language: ruby
4
4
  cache: bundler
5
5
  rvm:
6
- - 2.6.3
7
- before_install: gem install bundler -v 2.0.1
6
+ - 2.6.6
7
+ - 2.7.1
8
+ - ruby-head
9
+ before_install: gem install bundler -v 2.1.4
10
+
11
+ matrix:
12
+ allow_failures:
13
+ - rvm: ruby-head
@@ -1,25 +1,21 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- trace_location (0.9.3)
5
- binding_of_caller
4
+ trace_location (0.10.0)
6
5
  method_source
7
6
 
8
7
  GEM
9
8
  remote: https://rubygems.org/
10
9
  specs:
11
10
  ast (2.4.0)
12
- binding_of_caller (0.8.0)
13
- debug_inspector (>= 0.0.1)
14
- debug_inspector (0.0.3)
15
11
  diff-lcs (1.3)
16
12
  jaro_winkler (1.5.2)
17
- method_source (0.9.2)
13
+ method_source (1.0.0)
18
14
  parallel (1.17.0)
19
15
  parser (2.6.3.0)
20
16
  ast (~> 2.4.0)
21
17
  rainbow (3.0.0)
22
- rake (12.3.2)
18
+ rake (13.0.1)
23
19
  rspec (3.8.0)
24
20
  rspec-core (~> 3.8.0)
25
21
  rspec-expectations (~> 3.8.0)
@@ -54,4 +50,4 @@ DEPENDENCIES
54
50
  trace_location!
55
51
 
56
52
  BUNDLED WITH
57
- 2.0.1
53
+ 2.1.4
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # TraceLocation
2
2
 
3
+ [![Build Status](https://travis-ci.org/yhirano55/trace_location.svg?branch=master)](https://travis-ci.org/yhirano55/trace_location)
4
+
3
5
  TraceLocation helps you get tracing the source location of codes, and helps you can get reading the huge open souce libraries in Ruby.
4
6
 
5
7
  ## Installation
@@ -20,355 +22,80 @@ Or install it yourself as:
20
22
 
21
23
  ## Usage
22
24
 
23
- You just surround the code which you want to track the process.
24
-
25
- ### Example 01. Track the validation process of Active Record
26
-
27
- ```
28
- % bin/rails c
29
-
30
- irb(main):001:0> book = Book.new(title: "My Book Title")
31
- irb(main):002:0> TraceLocation.trace(ignore: /active_support/) { book.validate }
32
- Created at /path/to/sampleapp/log/trace_location-2019060401061559579741.md
33
- => true
34
- ```
35
-
36
- Then you can get a markdown file like this:
25
+ ### Example: Track establish connection in Active Record
37
26
 
38
- --
39
-
40
- Generated by [trace_location](https://github.com/yhirano55/trace_location) at 2019-06-04 01:35:41 +0900
41
-
42
- <details open>
43
- <summary>activerecord-5.2.3/lib/active_record/validations.rb:65</summary>
44
-
45
- ##### ActiveRecord::Validations#valid?
46
27
  ```ruby
47
- def valid?(context = nil)
48
- context ||= default_validation_context
49
- output = super(context)
50
- errors.empty? && output
51
- end
52
- # called from (irb):2
53
- ```
54
-
55
- </details>
56
- <details open>
57
- <summary>activerecord-5.2.3/lib/active_record/validations.rb:75</summary>
28
+ config = Rails.application.config.database_configuration[Rails.env]
58
29
 
59
- ##### ActiveRecord::Validations#default_validation_context
60
- ```ruby
61
- def default_validation_context
62
- new_record? ? :create : :update
30
+ TraceLocation.trace do
31
+ # You just surround you want to track the process.
32
+ ActiveRecord::Base.establish_connection(config)
63
33
  end
64
- # called from activerecord-5.2.3/lib/active_record/validations.rb:66
65
34
  ```
66
35
 
67
- </details>
68
- <details open>
69
- <summary>activerecord-5.2.3/lib/active_record/persistence.rb:231</summary>
36
+ Then you can get logs like this: [.md](https://github.com/yhirano55/trace_location/blob/master/examples/active_record_establish_connection/result.md), [.log](https://github.com/yhirano55/trace_location/blob/master/examples/active_record_establish_connection/result.log), [.csv](https://github.com/yhirano55/trace_location/blob/master/examples/active_record_establish_connection/result.csv)
70
37
 
71
- ##### ActiveRecord::Persistence#new_record?
72
- ```ruby
73
- def new_record?
74
- sync_with_transaction_state
75
- @new_record
76
- end
77
- # called from activerecord-5.2.3/lib/active_record/validations.rb:76
78
- ```
38
+ ### Trace method options
79
39
 
80
- </details>
81
- <details open>
82
- <summary>activerecord-5.2.3/lib/active_record/transactions.rb:490</summary>
40
+ | name | content | example |
41
+ |:-----|:--------|:--------|
42
+ | format | `:md`, `:log`, `:csv` (default: `:md`) | `:md` |
43
+ | match | Regexp, Symbol, String or Array for allow list | `[:activerecord, :activesupport]` |
44
+ | ignore | Regexp, Symbol, String or Array for deny list | `/bootsnap\|activesupport/` |
83
45
 
84
- ##### ActiveRecord::Transactions#sync_with_transaction_state
85
- ```ruby
86
- def sync_with_transaction_state
87
- update_attributes_from_transaction_state(@transaction_state)
88
- end
89
- # called from activerecord-5.2.3/lib/active_record/persistence.rb:232
90
- ```
46
+ ## More examples
91
47
 
92
- </details>
93
- <details open>
94
- <summary>activerecord-5.2.3/lib/active_record/transactions.rb:494</summary>
48
+ ### Example: Track the validation process of Active Record
95
49
 
96
- ##### ActiveRecord::Transactions#update_attributes_from_transaction_state
97
50
  ```ruby
98
- def update_attributes_from_transaction_state(transaction_state)
99
- if transaction_state && transaction_state.finalized?
100
- restore_transaction_record_state(transaction_state.fully_rolledback?) if transaction_state.rolledback?
101
- force_clear_transaction_record_state if transaction_state.fully_committed?
102
- clear_transaction_record_state if transaction_state.fully_completed?
103
- end
104
- end
105
- # called from activerecord-5.2.3/lib/active_record/transactions.rb:491
51
+ book = Book.new(title: "My Book Title")
52
+ TraceLocation.trace(match: /activerecord/) { book.validate }
106
53
  ```
107
54
 
108
- </details>
109
- <details open>
110
- <summary>activemodel-5.2.3/lib/active_model/validations.rb:336</summary>
55
+ Results: [.md](https://github.com/yhirano55/trace_location/blob/master/examples/active_record_validation_process/result.md), [.log](https://github.com/yhirano55/trace_location/blob/master/examples/active_record_validation_process/result.log), [.csv](https://github.com/yhirano55/trace_location/blob/master/examples/active_record_validation_process/result.csv)
111
56
 
112
- ##### ActiveModel::Validations#valid?
113
- ```ruby
114
- def valid?(context = nil)
115
- current_context, self.validation_context = validation_context, context
116
- errors.clear
117
- run_validations!
118
- ensure
119
- self.validation_context = current_context
120
- end
121
- # called from activerecord-5.2.3/lib/active_record/validations.rb:67
122
- ```
57
+ ### Example: Track the lifecycle of Rails application
123
58
 
124
- </details>
125
- <details open>
126
- <summary>activemodel-5.2.3/lib/active_model/validations.rb:303</summary>
127
-
128
- ##### ActiveModel::Validations#errors
129
- ```ruby
130
- def errors
131
- @errors ||= Errors.new(self)
132
- end
133
- # called from activemodel-5.2.3/lib/active_model/validations.rb:338
134
- ```
135
-
136
- </details>
137
- <details open>
138
- <summary>activemodel-5.2.3/lib/active_model/errors.rb:74</summary>
139
-
140
- ##### ActiveModel::Errors#initialize
141
- ```ruby
142
- def initialize(base)
143
- @base = base
144
- @messages = apply_default_array({})
145
- @details = apply_default_array({})
146
- end
147
- # called from activemodel-5.2.3/lib/active_model/validations.rb:304
148
- ```
149
-
150
- </details>
151
- <details open>
152
- <summary>activemodel-5.2.3/lib/active_model/errors.rb:470</summary>
153
-
154
- ##### ActiveModel::Errors#apply_default_array
155
- ```ruby
156
- def apply_default_array(hash)
157
- hash.default_proc = proc { |h, key| h[key] = [] }
158
- hash
159
- end
160
- # called from activemodel-5.2.3/lib/active_model/errors.rb:76
161
- ```
162
-
163
- </details>
164
- <details open>
165
- <summary>activemodel-5.2.3/lib/active_model/errors.rb:470</summary>
166
-
167
- ##### ActiveModel::Errors#apply_default_array
168
59
  ```ruby
169
- def apply_default_array(hash)
170
- hash.default_proc = proc { |h, key| h[key] = [] }
171
- hash
172
- end
173
- # called from activemodel-5.2.3/lib/active_model/errors.rb:77
174
- ```
60
+ env = Rack::MockRequest.env_for('http://localhost:3000/books')
175
61
 
176
- </details>
177
- <details open>
178
- <summary>activemodel-5.2.3/lib/active_model/errors.rb:115</summary>
179
-
180
- ##### ActiveModel::Errors#clear
181
- ```ruby
182
- def clear
183
- messages.clear
184
- details.clear
62
+ TraceLocation.trace do
63
+ status, headers, body = Rails.application.call(env)
185
64
  end
186
- # called from activemodel-5.2.3/lib/active_model/validations.rb:338
187
65
  ```
188
66
 
189
- </details>
190
- <details open>
191
- <summary>activemodel-5.2.3/lib/active_model/validations/callbacks.rb:117</summary>
192
-
193
- ##### ActiveModel::Validations::Callbacks#run_validations!
194
- ```ruby
195
- def run_validations!
196
- _run_validation_callbacks { super }
197
- end
198
- # called from activemodel-5.2.3/lib/active_model/validations.rb:339
199
- ```
67
+ Results: [.md](https://github.com/yhirano55/trace_location/blob/master/examples/lifecycle_of_rails_application/result.md), [.log](https://github.com/yhirano55/trace_location/blob/master/examples/lifecycle_of_rails_application/result.log), [.csv](https://github.com/yhirano55/trace_location/blob/master/examples/lifecycle_of_rails_application/result.csv)
200
68
 
201
- </details>
202
- <details open>
203
- <summary>activemodel-5.2.3/lib/active_model/validations.rb:408</summary>
69
+ ### Example: Track the `has_secure_password` in User model
204
70
 
205
- ##### ActiveModel::Validations#run_validations!
206
71
  ```ruby
207
- def run_validations!
208
- _run_validate_callbacks
209
- errors.empty?
210
- end
211
- # called from activemodel-5.2.3/lib/active_model/validations/callbacks.rb:118
212
- ```
213
-
214
- </details>
215
- <details open>
216
- <summary>activemodel-5.2.3/lib/active_model/validations.rb:303</summary>
217
-
218
- ##### ActiveModel::Validations#errors
219
- ```ruby
220
- def errors
221
- @errors ||= Errors.new(self)
222
- end
223
- # called from activemodel-5.2.3/lib/active_model/validations.rb:410
224
- ```
225
-
226
- </details>
227
- <details open>
228
- <summary>activemodel-5.2.3/lib/active_model/errors.rb:209</summary>
229
-
230
- ##### ActiveModel::Errors#empty?
231
- ```ruby
232
- def empty?
233
- size.zero?
234
- end
235
- # called from activemodel-5.2.3/lib/active_model/validations.rb:410
236
- ```
237
-
238
- </details>
239
- <details open>
240
- <summary>activemodel-5.2.3/lib/active_model/errors.rb:179</summary>
241
-
242
- ##### ActiveModel::Errors#size
243
- ```ruby
244
- def size
245
- values.flatten.size
246
- end
247
- # called from activemodel-5.2.3/lib/active_model/errors.rb:210
248
- ```
249
-
250
- </details>
251
- <details open>
252
- <summary>activemodel-5.2.3/lib/active_model/errors.rb:188</summary>
253
-
254
- ##### ActiveModel::Errors#values
255
- ```ruby
256
- def values
257
- messages.select do |key, value|
258
- !value.empty?
259
- end.values
260
- end
261
- # called from activemodel-5.2.3/lib/active_model/errors.rb:180
262
- ```
263
-
264
- </details>
265
- <details open>
266
- <summary>activemodel-5.2.3/lib/active_model/validations.rb:303</summary>
267
-
268
- ##### ActiveModel::Validations#errors
269
- ```ruby
270
- def errors
271
- @errors ||= Errors.new(self)
272
- end
273
- # called from activerecord-5.2.3/lib/active_record/validations.rb:68
274
- ```
275
-
276
- </details>
277
- <details open>
278
- <summary>activemodel-5.2.3/lib/active_model/errors.rb:209</summary>
279
-
280
- ##### ActiveModel::Errors#empty?
281
- ```ruby
282
- def empty?
283
- size.zero?
284
- end
285
- # called from activerecord-5.2.3/lib/active_record/validations.rb:68
72
+ class User < ApplicationRecord
73
+ # temporary surrounding with TraceLocation#trace
74
+ TraceLocation.trace(format: :md, ignore: /activesupport/) do
75
+ has_secure_password
76
+ end
286
77
  ```
287
78
 
288
- </details>
289
- <details open>
290
- <summary>activemodel-5.2.3/lib/active_model/errors.rb:179</summary>
291
-
292
- ##### ActiveModel::Errors#size
293
- ```ruby
294
- def size
295
- values.flatten.size
296
- end
297
- # called from activemodel-5.2.3/lib/active_model/errors.rb:210
298
- ```
79
+ Results: [.md](https://github.com/yhirano55/trace_location/blob/master/examples/has_secure_password/result.md), [.log](https://github.com/yhirano55/trace_location/blob/master/examples/has_secure_password/result.log), [.csv](https://github.com/yhirano55/trace_location/blob/master/examples/has_secure_password/result.csv)
299
80
 
300
- </details>
301
- <details open>
302
- <summary>activemodel-5.2.3/lib/active_model/errors.rb:188</summary>
81
+ ### Example: Track the rendering process of action in controller class
303
82
 
304
- ##### ActiveModel::Errors#values
305
83
  ```ruby
306
- def values
307
- messages.select do |key, value|
308
- !value.empty?
309
- end.values
310
- end
311
- # called from activemodel-5.2.3/lib/active_model/errors.rb:180
312
- ```
313
-
314
- </details>
315
-
316
-
317
-
318
- ### Example 02. Track the lifecycle of Rails application
84
+ class BooksController < ApplicationController
85
+ before_action :set_book, only: [:show, :update, :destroy]
319
86
 
87
+ # GET /books
88
+ def index
89
+ @books = Book.all
320
90
 
321
- ```
322
- % bin/rails c
323
-
324
- irb(main):001:0> env = Rack::MockRequest.env_for('http://localhost:3000/books')
325
- irb(main):002:0> TraceLocation.trace(format: :log) { status, headers, body = Rails.application.call(env) }
326
- Created at /path/to/sampleapp/log/trace_location-2019050602051557077971.log
327
- => true
91
+ # temporary surrounding with TraceLocation#trace
92
+ TraceLocation.trace(format: :md, ignore: /activesupport|rbenv|concurrent-ruby/) do
93
+ render json: @books
94
+ end
95
+ end
328
96
  ```
329
97
 
330
- Then you can get a log like this:
331
-
332
- ```
333
- Logged by TraceLocation gem at 2019-05-06 02:39:31 +0900
334
- https://github.com/yhirano55/trace_location
335
-
336
- [Tracing events] C: Call, R: Return
337
-
338
- C railties-5.2.3/lib/rails.rb:39 [Rails.application]
339
- R railties-5.2.3/lib/rails.rb:41 [Rails.application]
340
- C railties-5.2.3/lib/rails/engine.rb:522 [Rails::Engine#call]
341
- C railties-5.2.3/lib/rails/application.rb:607 [Rails::Application#build_request]
342
- C railties-5.2.3/lib/rails/engine.rb:705 [Rails::Engine#build_request]
343
- C railties-5.2.3/lib/rails/application.rb:247 [Rails::Application#env_config]
344
- C railties-5.2.3/lib/rails/engine.rb:528 [Rails::Engine#env_config]
345
- R railties-5.2.3/lib/rails/engine.rb:530 [Rails::Engine#env_config]
346
- C railties-5.2.3/lib/rails/application.rb:372 [Rails::Application#config]
347
- R railties-5.2.3/lib/rails/application.rb:374 [Rails::Application#config]
348
- C railties-5.2.3/lib/rails/application.rb:372 [Rails::Application#config]
349
- R railties-5.2.3/lib/rails/application.rb:374 [Rails::Application#config]
350
- C railties-5.2.3/lib/rails/application.rb:394 [Rails::Application#secrets]
351
- R railties-5.2.3/lib/rails/application.rb:414 [Rails::Application#secrets]
352
- C activesupport-5.2.3/lib/active_support/ordered_options.rb:41 [ActiveSupport::OrderedOptions#method_missing]
353
- C activesupport-5.2.3/lib/active_support/ordered_options.rb:37 [ActiveSupport::OrderedOptions#[]]
354
- R activesupport-5.2.3/lib/active_support/ordered_options.rb:39 [ActiveSupport::OrderedOptions#[]]
355
- R activesupport-5.2.3/lib/active_support/ordered_options.rb:54 [ActiveSupport::OrderedOptions#method_missing]
356
- C railties-5.2.3/lib/rails/application.rb:428 [Rails::Application#secret_key_base]
357
- C railties-5.2.3/lib/rails.rb:72 [Rails.env]
358
- R railties-5.2.3/lib/rails.rb:74 [Rails.env]
359
- C activesupport-5.2.3/lib/active_support/string_inquirer.rb:26 [ActiveSupport::StringInquirer#method_missing]
360
- R activesupport-5.2.3/lib/active_support/string_inquirer.rb:32 [ActiveSupport::StringInquirer#method_missing]
361
- C railties-5.2.3/lib/rails/application.rb:394 [Rails::Application#secrets]
362
- R railties-5.2.3/lib/rails/application.rb:414 [Rails::Application#secrets]
363
- C activesupport-5.2.3/lib/active_support/ordered_options.rb:41 [ActiveSupport::OrderedOptions#method_missing]
364
- C activesupport-5.2.3/lib/active_support/ordered_options.rb:37 [ActiveSupport::OrderedOptions#[]]
365
- R activesupport-5.2.3/lib/active_support/ordered_options.rb:39 [ActiveSupport::OrderedOptions#[]]
366
- R activesupport-5.2.3/lib/active_support/ordered_options.rb:54 [ActiveSupport::OrderedOptions#method_missing]
367
- R railties-5.2.3/lib/rails/application.rb:436 [Rails::Application#secret_key_base]
368
- ..................
369
- (an omission)
370
- ..................
371
- ```
98
+ Results: [.md](https://github.com/yhirano55/trace_location/blob/master/examples/rendering_process/result.md), [.log](https://github.com/yhirano55/trace_location/blob/master/examples/rendering_process/result.log), [.csv](https://github.com/yhirano55/trace_location/blob/master/examples/rendering_process/result.csv)
372
99
 
373
100
  ## License
374
101