¿Cómo uso un middleware Rack solo para ciertas rutas?
Me gustaría tenerMyMiddleware
ejecutar en mi aplicación Rack, pero solo para ciertos caminos. Esperaba usarRack::Builder
o al menosRack::URLMap
, pero no puedo entender cómo.
Esto es lo que pensé que funcionaría, pero no:
# in my rackup file or Rails environment.rb:
map '/foo' do
use MyMiddleware, { :some => 'options' }
end
O, mejor aún, con un Regexp:
map /^foo/ do
use MyMiddleware, { :some => 'options' }
end
Peromap
parece exigir una aplicación al final; no recurrirá simplemente pasando el control a su padre. (El error real es "undefined method 'each' for nil:NilClass
"de cuando Rack intenta cambiar el final de esado...end
bloque en unaapp
.)
¿Hay un middleware por ahí que toma una variedad de middlewares y una ruta y solo los ejecuta si la ruta coincide?