123456789_123456789_123456789_123456789_123456789_

Class: Rails::Configuration::MiddlewareStackProxy

Relationships & Source Files
Inherits: Object
Defined in: railties/lib/rails/configuration.rb

Overview

MiddlewareStackProxy is a proxy for the ::Rails middleware stack that allows you to configure middlewares in your application. It works basically as a command recorder, saving each command to be applied after initialization over the default middleware stack, so you can add, swap, or remove any middleware in ::Rails.

You can add your own middlewares by using the config.middleware.use method:

config.middleware.use Magical::Unicorns

This will put the Magical::Unicorns middleware on the end of the stack. You can use #insert_before if you wish to add a middleware before another:

config.middleware.insert_before Rack::Head, Magical::Unicorns

There’s also #insert_after which will insert a middleware after another:

config.middleware.insert_after Rack::Head, Magical::Unicorns

Middlewares can also be completely swapped out and replaced with others:

config.middleware.swap ActionDispatch::Flash, Magical::Unicorns

Middlewares can be moved from one place to another:

config.middleware.move_before ActionDispatch::Flash, Magical::Unicorns

This will move the Magical::Unicorns middleware before the ::ActionDispatch::Flash. You can also move it after:

config.middleware.move_after ActionDispatch::Flash, Magical::Unicorns

And finally they can also be removed from the stack completely:

config.middleware.delete ActionDispatch::Flash

Class Method Summary

Instance Method Summary

Constructor Details

.new(operations = [], delete_operations = []) ⇒ MiddlewareStackProxy

[ GitHub ]

  
# File 'railties/lib/rails/configuration.rb', line 47

def initialize(operations = [], delete_operations = [])
  @operations = operations
  @delete_operations = delete_operations
end

Instance Method Details

#delete(*args, &block)

[ GitHub ]

  
# File 'railties/lib/rails/configuration.rb', line 74

def delete(*args, &block)
  @delete_operations << -> middleware { middleware.delete(*args, &block) }
end

#insert(*args, &block)

Alias for #insert_before.

[ GitHub ]

  
# File 'railties/lib/rails/configuration.rb', line 57

alias :insert :insert_before

#insert_after(*args, &block)

[ GitHub ]

  
# File 'railties/lib/rails/configuration.rb', line 59

def insert_after(*args, &block)
  @operations << -> middleware { middleware.insert_after(*args, &block) }
end

#insert_before(*args, &block) Also known as: #insert

[ GitHub ]

  
# File 'railties/lib/rails/configuration.rb', line 52

def insert_before(*args, &block)
  @operations << -> middleware { middleware.insert_before(*args, &block) }
end

#move(*args, &block)

Alias for #move_before.

[ GitHub ]

  
# File 'railties/lib/rails/configuration.rb', line 82

alias :move :move_before

#move_after(*args, &block)

[ GitHub ]

  
# File 'railties/lib/rails/configuration.rb', line 84

def move_after(*args, &block)
  @delete_operations << -> middleware { middleware.move_after(*args, &block) }
end

#move_before(*args, &block) Also known as: #move

[ GitHub ]

  
# File 'railties/lib/rails/configuration.rb', line 78

def move_before(*args, &block)
  @delete_operations << -> middleware { middleware.move_before(*args, &block) }
end

#swap(*args, &block)

[ GitHub ]

  
# File 'railties/lib/rails/configuration.rb', line 64

def swap(*args, &block)
  @operations << -> middleware { middleware.swap(*args, &block) }
end

#unshift(*args, &block)

[ GitHub ]

  
# File 'railties/lib/rails/configuration.rb', line 88

def unshift(*args, &block)
  @operations << -> middleware { middleware.unshift(*args, &block) }
end

#use(*args, &block)

[ GitHub ]

  
# File 'railties/lib/rails/configuration.rb', line 69

def use(*args, &block)
  @operations << -> middleware { middleware.use(*args, &block) }
end