module Hanami::Extensions::Action::InstanceMethods
Instance methods for app-integrated actions.
@since 2.0.0
Attributes
rack_monitor[R]
Returns the app or slice’s ‘Dry::Monitor::Rack::Middleware` for use within action instance methods.
@return [Dry::Monitor::Rack::Middleware]
@api public @since 2.0.0
routes[R]
Returns the app or slice’s {Hanami::Slice::RoutesHelper RoutesHelper} for use within action instance methods.
@return [Hanami::Slice::RoutesHelper]
@api public @since 2.0.0
view[R]
@api private
view_context_class[R]
@api private
Public Class Methods
new(view: nil, view_context_class: nil, rack_monitor: nil, routes: nil, **kwargs)
click to toggle source
@overload def initialize(routes: nil, **kwargs)
Returns a new `Hanami::Action` with app components injected as dependencies. These dependencies are injected automatically so that a call to `.new` (with no arguments) returns a fully integrated action. @param routes [Hanami::Slice::RoutesHelper] @api public @since 2.0.0
Calls superclass method
# File lib/hanami/extensions/action.rb, line 73 def initialize(view: nil, view_context_class: nil, rack_monitor: nil, routes: nil, **kwargs) @view = view @view_context_class = view_context_class @routes = routes @rack_monitor = rack_monitor super(**kwargs) end
Private Instance Methods
_handle_exception(request, _response, _exception)
click to toggle source
@api private
Calls superclass method
# File lib/hanami/extensions/action.rb, line 97 def _handle_exception(request, _response, _exception) super rescue StandardError => exception rack_monitor&.instrument(:error, exception: exception, env: request.env) raise end
auto_render?(res)
click to toggle source
Returns true if a view should automatically be rendered onto the response body.
This may be overridden to enable or disable automatic rendering.
@param res [Hanami::Action::Response]
@return [Boolean]
@since 2.0.0 @api public
# File lib/hanami/extensions/action.rb, line 125 def auto_render?(res) view && res.body.empty? end
build_response(**options)
click to toggle source
@api private
Calls superclass method
# File lib/hanami/extensions/action.rb, line 85 def build_response(**options) options = options.merge(view_options: method(:view_options)) super(**options) end
finish(req, res, halted)
click to toggle source
@api private
Calls superclass method
# File lib/hanami/extensions/action.rb, line 91 def finish(req, res, halted) res.render(view, **req.params) if !halted && auto_render?(res) super end
view_context_options(request, response)
click to toggle source
@api private
# File lib/hanami/extensions/action.rb, line 111 def view_context_options(request, response) # rubocop:disable Lint:UnusedMethodArgument {request: request} end
view_options(request, response)
click to toggle source
@api private
# File lib/hanami/extensions/action.rb, line 106 def view_options(request, response) {context: view_context_class&.new(**view_context_options(request, response))}.compact end