During GSOC 2018 I have proposed and worked on a feature for Ruby on Rails - Actionable Errors. rails/rails#34788
Currently, errors with a defined flow to fix them have to be done manually (e.g. when there are pending migrations or when credentials are not found.)
With the new ActionableException concern in ActiveSupport, maintainers for various Ruby on Rails libraries with their special error classes will be able to extend this module and provide the appropriate Actions to take, which the user can activate by clicking on a button.
The ActionableException module consists an ActionableException::Action class that handles the actual labelling and running of the exception-fixing mechanism.
The ActionableException API provides a single class method: actionable which expects either a parameter or a block that returns an ActionableException::Action.
Take a look at PendingMigrationError for an example of the implementation.
The ActionableException::Action class consists of two optional methods and one compulsory method, which are label, running_label and run respectively.
When the actionable button is clicked, a json POST request is sent to the middleware, which is caught by DebugExceptions. It instantiates the exception based on the payload and runs the appropriate steps given by actionable.
I have also redesigned the error pages by changing the fonts and moving the components around so that less scrolling is required by the users to access the information they need.
I tried but was unable to contact my mentor during the last two weeks of the GSOC program so I was unable to finish the project - there was some errors in the PendingMigrationError test that I was unable to solve.
Sources:
https://github.com/causztic/rails/tree/actionable-errors-updated
https://github.com/causztic/rails/tree/update-error-page-design