module Hanami::Action

An HTTP endpoint

@since 0.1.0

@example

require 'hanami/controller'

class Show
  include Hanami::Action

  def call(params)
    # ...
  end
end

Public Class Methods

included(base) click to toggle source

Override Ruby's hook for modules. It includes basic Hanami::Action modules to the given class.

@param base [Class] the target action

@since 0.1.0 @api private

@see www.ruby-doc.org/core-2.1.2/Module.html#method-i-included

@see Hanami::Action::Rack @see Hanami::Action::Mime @see Hanami::Action::Http @see Hanami::Action::Redirect @see Hanami::Action::Exposable @see Hanami::Action::Throwable @see Hanami::Action::Callbacks @see Hanami::Action::Validatable @see Hanami::Action::Configurable @see Hanami::Action::Callable

# File lib/hanami/action.rb, line 52
def self.included(base)
  base.class_eval do
    include Rack
    include Mime
    include Redirect
    include Exposable
    include Throwable
    include Callbacks
    include Validatable if defined?(Validatable)
    include Configurable
    include Head
    prepend Callable
  end
end

Private Instance Methods

finish() click to toggle source

Finalize the response

This method is abstract and COULD be implemented by included modules in order to prepare their data before the response will be returned to the webserver.

@since 0.1.0 @api private @abstract

@see Hanami::Action::Mime#finish @see Hanami::Action::Exposable#finish @see Hanami::Action::Callable#finish @see Hanami::Action::Session#finish @see Hanami::Action::Cookies#finish @see Hanami::Action::Cache#finish @see Hanami::Action::Head#finish

# File lib/hanami/action.rb, line 108
def finish
end
flash() click to toggle source

Raise error when `Hanami::Action::Session` isn't included.

To use `flash`, include `Hanami::Action::Session`.

@raise [Hanami::Controller::MissingSessionError]

@since 1.2.0

# File lib/hanami/action.rb, line 87
def flash
  raise Hanami::Controller::MissingSessionError.new(:flash)
end
session() click to toggle source

Raise error when `Hanami::Action::Session` isn't included.

To use `session`, include `Hanami::Action::Session`.

@raise [Hanami::Controller::MissingSessionError]

@since 1.2.0

# File lib/hanami/action.rb, line 76
def session
  raise Hanami::Controller::MissingSessionError.new(:session)
end