-
Notifications
You must be signed in to change notification settings - Fork 127
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add hook for customizing the debug representation of an object #1005
base: master
Are you sure you want to change the base?
Conversation
@debug_representation = debug_representation | ||
end | ||
|
||
def debug_representation |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps it should take unused rest args, in case any need to be added in the future?
def debug_representation | |
def debug_representation(*, **) |
A big +1 for this feature. This would be great. Surprised this wasn't in from the start. Being able to control what's on the debug inspector without overloading to_s and inspect (which may be needed for something else) seems like a very sensible idea. When are some of these PRs going to get applied? It's been quiet the last few months... |
Could you give us the API specification? |
I'm not sure what the content of this PR exactly is but what I'd simply like is the ability to define a method on my objects called something like "to_rdbg" (or something I don't really mind) and have rdbg call that preferentially to to_s/inspect. In this way I could have to_s/inspect freed up for just my use and control over what appears in the debug window. |
@jabamaus @ko1 Ignore the first few commits that come from other branches. This is the relevant commit to this PR: 8942797 @ko1 The API is really simple: If your object responds to Look closely at the PR description, I put an |
Thanks @amomchilov that makes it easier to follow. What will happen if the object being inspected is a BasicObect? BasicObject does not implement respond_to? |
@jabamaus Please have a look at the implementation. It always uses the |
Could you explain the specification of |
This PR depends on the changes in #1004. Only this last commit of this PR is unique to this change.
Description
I propose we add a hook method that developers can implement in their classes to customize the structural representation of their objects in a debugger. Used judiciously, this has the potential to really improve the clarify of certain types of objects.
I found it particularly useful for container-like objects, like
OpenStruct
andActionController::StrongParameters
.example.rb
I chose the spelling
#debug_representation
, because it's clear and to-the-point, but it's open to ideas.