Update UPGRADING notes regarding return usage and simplify endpoint execution
#2621
+34
−24
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.
Update UPGRADING notes regarding
returnusage and simplify endpoint executionSummary
This PR simplifies the endpoint execution code and improves the deprecation messaging for using
returnin endpoint blocks. It removes an unnecessary lambda wrapper and clarifies in documentation that developers should usenextinstead ofreturn.Changes
Code Simplification
Simplified
Grape::Endpoint#initialize: Removed the unnecessary@blocklambda wrapper that was created around the source block. The endpoint now directly stores the source block in@source.Simplified
Grape::Endpoint#execute: Moved the execution logic directly into theexecutemethod instead of wrapping it in a lambda. The method now:instance_exec(&@source)when a source block existsActiveSupport::NotificationsLocalJumpError(whenreturnis used)Documentation Updates
UPGRADING.md: Added clarification that developers should usenextinstead ofreturnwhen exiting early from endpoint blocks.Test Updates
nextinstead" guidance.Benefits
Related Issues/PRs
Related to #2577 where
returnin endpoint execution was initially deprecated.Testing
returnstill works but shows a deprecation warning)