Skip to content

Commit

Permalink
Merge pull request #439 from tk0miya/activesupport_update_types_of_re…
Browse files Browse the repository at this point in the history
…scue_from

activesupport: Update type of rescue_from (ActiveSupport::Rescuable)
  • Loading branch information
pocke authored Jan 25, 2024
2 parents c74e582 + 1376847 commit d9d7d12
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 76 deletions.
76 changes: 0 additions & 76 deletions gems/activesupport/6.0/activesupport-generated.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -10662,82 +10662,6 @@ module ActiveSupport
end
end

module ActiveSupport
# Rescuable module adds support for easier exception handling.
module Rescuable
extend Concern

module ClassMethods
# Rescue exceptions raised in controller actions.
#
# <tt>rescue_from</tt> receives a series of exception classes or class
# names, and a trailing <tt>:with</tt> option with the name of a method
# or a Proc object to be called to handle them. Alternatively a block can
# be given.
#
# Handlers that take one argument will be called with the exception, so
# that the exception can be inspected when dealing with it.
#
# Handlers are inherited. They are searched from right to left, from
# bottom to top, and up the hierarchy. The handler of the first class for
# which <tt>exception.is_a?(klass)</tt> holds true is the one invoked, if
# any.
#
# class ApplicationController < ActionController::Base
# rescue_from User::NotAuthorized, with: :deny_access # self defined exception
# rescue_from ActiveRecord::RecordInvalid, with: :show_errors
#
# rescue_from 'MyAppError::Base' do |exception|
# render xml: exception, status: 500
# end
#
# private
# def deny_access
# ...
# end
#
# def show_errors(exception)
# exception.record.new_record? ? ...
# end
# end
#
# Exceptions raised inside exception handlers are not propagated up.
def rescue_from: (*Class, ?with: Symbol | Proc) -> void
| (*Class) { (Exception) -> void } -> void

# Matches an exception to a handler based on the exception class.
#
# If no handler matches the exception, check for a handler matching the
# (optional) exception.cause. If no handler matches the exception or its
# cause, this returns +nil+, so you can deal with unhandled exceptions.
# Be sure to re-raise unhandled exceptions if this is what you expect.
#
# begin
# (trim non-ascii characters)
# rescue => exception
# rescue_with_handler(exception) || raise
# end
#
# Returns the exception if it was handled and +nil+ if it was not.
def rescue_with_handler: (untyped exception, ?visited_exceptions: untyped visited_exceptions, ?object: untyped object) -> untyped

def handler_for_rescue: (untyped exception, ?object: untyped object) -> untyped

private

def find_rescue_handler: (untyped exception) -> untyped

def constantize_rescue_handler_class: (untyped class_or_name) -> untyped
end

# Delegates to the class method, but uses the instance as the subject for
# rescue_from handlers (method calls, instance_exec blocks).
def rescue_with_handler: (untyped exception) -> untyped

def handler_for_rescue: (untyped exception) -> untyped
end
end

module ActiveSupport
module SecurityUtils
# Constant time string comparison, for fixed length strings.
Expand Down
76 changes: 76 additions & 0 deletions gems/activesupport/6.0/activesupport.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -383,3 +383,79 @@ class Array[unchecked out Elem]
# Manual definition to make block optional
def in_groups: (untyped number, ?untyped? fill_with) ?{ (untyped) -> untyped } -> untyped
end

module ActiveSupport
# Rescuable module adds support for easier exception handling.
module Rescuable
extend Concern

module ClassMethods
# Rescue exceptions raised in controller actions.
#
# <tt>rescue_from</tt> receives a series of exception classes or class
# names, and a trailing <tt>:with</tt> option with the name of a method
# or a Proc object to be called to handle them. Alternatively a block can
# be given.
#
# Handlers that take one argument will be called with the exception, so
# that the exception can be inspected when dealing with it.
#
# Handlers are inherited. They are searched from right to left, from
# bottom to top, and up the hierarchy. The handler of the first class for
# which <tt>exception.is_a?(klass)</tt> holds true is the one invoked, if
# any.
#
# class ApplicationController < ActionController::Base
# rescue_from User::NotAuthorized, with: :deny_access # self defined exception
# rescue_from ActiveRecord::RecordInvalid, with: :show_errors
#
# rescue_from 'MyAppError::Base' do |exception|
# render xml: exception, status: 500
# end
#
# private
# def deny_access
# ...
# end
#
# def show_errors(exception)
# exception.record.new_record? ? ...
# end
# end
#
# Exceptions raised inside exception handlers are not propagated up.
def rescue_from: (*Class) { (Exception) [self: instance] -> void } -> void
| (*Class, with: Symbol | ^(Exception) [self: instance] -> void) -> void

# Matches an exception to a handler based on the exception class.
#
# If no handler matches the exception, check for a handler matching the
# (optional) exception.cause. If no handler matches the exception or its
# cause, this returns +nil+, so you can deal with unhandled exceptions.
# Be sure to re-raise unhandled exceptions if this is what you expect.
#
# begin
# (trim non-ascii characters)
# rescue => exception
# rescue_with_handler(exception) || raise
# end
#
# Returns the exception if it was handled and +nil+ if it was not.
def rescue_with_handler: (untyped exception, ?visited_exceptions: untyped visited_exceptions, ?object: untyped object) -> untyped

def handler_for_rescue: (untyped exception, ?object: untyped object) -> untyped

private

def find_rescue_handler: (untyped exception) -> untyped

def constantize_rescue_handler_class: (untyped class_or_name) -> untyped
end

# Delegates to the class method, but uses the instance as the subject for
# rescue_from handlers (method calls, instance_exec blocks).
def rescue_with_handler: (untyped exception) -> untyped

def handler_for_rescue: (untyped exception) -> untyped
end
end

0 comments on commit d9d7d12

Please sign in to comment.