123456789_123456789_123456789_123456789_123456789_

Class: ActionController::MiddlewareStack

Do not use. This class is for internal use only.
Relationships & Source Files
Namespace Children
Classes:
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
Instance Chain:
Inherits: ActionDispatch::MiddlewareStack
Defined in: actionpack/lib/action_controller/metal.rb

Overview

Extend ActionDispatch middleware stack to make it aware of options allowing the following syntax in controllers:

class PostsController < ApplicationController
  use AuthenticationMiddleware, except: [:index, :show]
end

Constant Summary

Class Method Summary

Instance Attribute Summary

::ActionDispatch::MiddlewareStack - Inherited

::Enumerable - Included

#many?

Returns true if the enumerable has more than 1 element.

Instance Method Summary

::ActionDispatch::MiddlewareStack - Inherited

::Enumerable - Included

#compact_blank

Returns a new ::Array without the blank items.

#exclude?

The negative of the Enumerable#include?.

#excluding

Returns a copy of the enumerable excluding the specified elements.

#in_order_of

Returns a new ::Array where the order has been set to that provided in the series, based on the key of the objects in the original enumerable.

#including

Returns a new array that includes the passed elements.

#index_by

Convert an enumerable to a hash, using the block result as the key and the element as the value.

#index_with

Convert an enumerable to a hash, using the element as the key and the block result as the value.

#maximum

Calculates the maximum from the extracted elements.

#minimum

Calculates the minimum from the extracted elements.

#pick

Extract the given key from the first element in the enumerable.

#pluck

Extract the given key from each element in the enumerable.

#sole

Returns the sole item in the enumerable.

#without
#as_json

::ActiveSupport::EnumerableCoreExt::Constants - Included

Constructor Details

This class inherits a constructor from ActionDispatch::MiddlewareStack

Instance Method Details

#build(action, app = nil, &block)

[ GitHub ]

  
# File 'actionpack/lib/action_controller/metal.rb', line 31

def build(action, app = nil, &block)
  action = action.to_s

  middlewares.reverse.inject(app || block) do |a, middleware|
    middleware.valid?(action) ? middleware.build(a) : a
  end
end

#build_middleware(klass, args, block) (private)

[ GitHub ]

  
# File 'actionpack/lib/action_controller/metal.rb', line 44

def build_middleware(klass, args, block)
  options = args.extract_options!
  only   = Array(options.delete(:only)).map(&:to_s)
  except = Array(options.delete(:except)).map(&:to_s)
  args << options unless options.empty?

  strategy = NULL
  list     = nil

  if only.any?
    strategy = INCLUDE
    list     = only
  elsif except.any?
    strategy = EXCLUDE
    list     = except
  end

  Middleware.new(klass, args, list, strategy, block)
end