TraceLocation
TraceLocation helps you get tracing the source location of codes, and helps you can get reading the huge open souce libraries in Ruby.
Installation
Add this line to your application's Gemfile:
gem 'trace_location'
And then execute:
$ bundle
Or install it yourself as:
$ gem install trace_location
Usage
Example: Track establish connection in Active Record
config = Rails.application.config.database_configuration[Rails.env]
TraceLocation.trace do
# You just surround you want to track the process.
ActiveRecord::Base.establish_connection(config)
end
Then you can get logs like this: .md, .log, .csv
Trace method options
name | content | example |
---|---|---|
format | :markdown , :log , :csv (default: :markdown ) |
:markdown |
match | Regexp, Symbol, String or Array for allow list | [:activerecord, :activesupport] |
ignore | Regexp, Symbol, String or Array for deny list | `/bootsnap\ |
More examples
Example: Track the validation process of Active Record
book = Book.new(title: "My Book Title")
TraceLocation.trace(match: /activerecord/) { book.validate }
Example: Track the lifecycle of Rails application
env = Rack::MockRequest.env_for('http://localhost:3000/books')
TraceLocation.trace do
status, headers, body = Rails.application.call(env)
end
Example: Track the has_secure_password
in User model
class User < ApplicationRecord
# temporary surrounding with TraceLocation#trace
Trace.location(format: :markdown, ignore: /activesupport/) do
has_secure_password
end
Example: Track the rendering process of action in controller class
class BooksController < ApplicationController
before_action :set_book, only: [:show, :update, :destroy]
# GET /books
def index
@books = Book.all
# temporary surrounding with TraceLocation#trace
TraceLocation.trace(format: :markdown, ignore: /activesupport|rbenv|concurrent-ruby/) do
render json: @books
end
end