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 Attribute Summary
- #delete_operations readonly protected
- #operations readonly protected
Instance Method Summary
- #delete
-
#insert
Alias for #insert_before.
- #insert_after
- #insert_before (also: #insert)
-
#move
Alias for #move_before.
- #move_after
- #move_before (also: #move)
- #swap
- #unshift
- #use
- #+(other) Internal use only
- #merge_into(other) Internal use only
Constructor Details
.new(operations = [], delete_operations = []) ⇒ MiddlewareStackProxy
# File 'railties/lib/rails/configuration.rb', line 62
def initialize(operations = [], delete_operations = []) @operations = operations @delete_operations = delete_operations end
Instance Attribute Details
#delete_operations (readonly, protected)
[ GitHub ]# File 'railties/lib/rails/configuration.rb', line 116
attr_reader :operations, :delete_operations
#operations (readonly, protected)
[ GitHub ]# File 'railties/lib/rails/configuration.rb', line 116
attr_reader :operations, :delete_operations
Instance Method Details
#+(other)
# File 'railties/lib/rails/configuration.rb', line 111
def +(other) # :nodoc: MiddlewareStackProxy.new(@operations + other.operations, @delete_operations + other.delete_operations) end
#delete
[ GitHub ]# File 'railties/lib/rails/configuration.rb', line 85
def delete(...) @delete_operations << -> middleware { middleware.delete(...) } end
#insert
Alias for #insert_before.
# File 'railties/lib/rails/configuration.rb', line 71
alias :insert :insert_before
#insert_after
[ GitHub ]# File 'railties/lib/rails/configuration.rb', line 73
def insert_after(...) @operations << -> middleware { middleware.insert_after(...) } end
#insert_before Also known as: #insert
[ GitHub ]# File 'railties/lib/rails/configuration.rb', line 67
def insert_before(...) @operations << -> middleware { middleware.insert_before(...) } end
#merge_into(other)
# File 'railties/lib/rails/configuration.rb', line 103
def merge_into(other) # :nodoc: (@operations + @delete_operations).each do |operation| operation.call(other) end other end
#move
Alias for #move_before.
# File 'railties/lib/rails/configuration.rb', line 93
alias :move :move_before
#move_after
[ GitHub ]# File 'railties/lib/rails/configuration.rb', line 95
def move_after(...) @delete_operations << -> middleware { middleware.move_after(...) } end
#move_before Also known as: #move
[ GitHub ]# File 'railties/lib/rails/configuration.rb', line 89
def move_before(...) @delete_operations << -> middleware { middleware.move_before(...) } end
#swap
[ GitHub ]# File 'railties/lib/rails/configuration.rb', line 77
def swap(...) @operations << -> middleware { middleware.swap(...) } end
#unshift
[ GitHub ]# File 'railties/lib/rails/configuration.rb', line 99
def unshift(...) @operations << -> middleware { middleware.unshift(...) } end
#use
[ GitHub ]# File 'railties/lib/rails/configuration.rb', line 81
def use(...) @operations << -> middleware { middleware.use(...) } end