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
- #delete(*args, &block)
-
#insert(*args, &block)
Alias for #insert_before.
- #insert_after(*args, &block)
- #insert_before(*args, &block) (also: #insert)
-
#move(*args, &block)
Alias for #move_before.
- #move_after(*args, &block)
- #move_before(*args, &block) (also: #move)
- #swap(*args, &block)
- #unshift(*args, &block)
- #use(*args, &block)
Constructor Details
.new(operations = [], delete_operations = []) ⇒ MiddlewareStackProxy
# 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.
# 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.
# 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