Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
This PR offers a proof-of-concept of dynamically registering handlers by discovering their public methods which conform to the handler name pattern. This is a similar approach to that used by other tools such as Minitest (discovering public
test_*
methods) or Rails generators (executing public methods in the order they are defined).This approach was conceived while discussing the
RubyLsp/UseRegisterWithHandlerMethod
cop, which checks that all methods conforming to the handler name pattern are registered ininitialize
, and that all registered handlers have a corresponding method definition. This approach would make the cop obsolete.Implementation
As a proof-of-concept, this
prepend
s a module intoPrism::Dispatcher
to support dynamically determining the event list to handle. However, the proposal would be to upstream the following directly into Prism:Automated Tests
Manual Tests