Я хочу, чтобы MyMiddleware
запускался в моем приложении Rack, но только для определенных путей. Я надеялся использовать Rack::Builder
или, по крайней мере, Rack::URLMap
, но я не могу понять, как это сделать.
Это то, что я думал, будет работать, но не делает:
# in my rackup file or Rails environment.rb:
map '/foo' do
use MyMiddleware, { :some => 'options' }
end
Или, еще лучше, с Regexp:
map /^foo/ do
use MyMiddleware, { :some => 'options' }
end
Но map
, кажется, требует приложения в конце; он не будет возвращаться к простому контролю до своего родителя. (Фактическая ошибка: "undefined method 'each' for nil:NilClass
", когда Rack пытается превратить конец этого блока do...end
в app
.)
Существует ли промежуточное ПО, которое принимает массив промежуточных элементов и путь и запускает их только в том случае, если путь соответствует?