Это работает для меня, на Синатре 1.3.2.
before do
@filter = [] << 'everything'
end
before '/filter' do
@filter << 'specific'
end
get '/filter' do
@filter.inspect
end
Это дает мне ["everything", "specific"]
, что я и ожидал.Возможно ли, что у вас нет универсального фильтра перед всеми остальными?
В Синатре маршруты оцениваются по порядку сверху, а не по тому, насколько хорошо они совпадают.Поэтому, если у вас есть специальные фильтры перед универсальным фильтром, он сначала оценит их, как показано здесь:
before '/filter' do
@filter = [] << 'specific'
end
before do
@filter << 'everything'
end
get '/filter' do
@filter.inspect
end # => ["specific", "everything"]