Я борюсь со странной проблемой.Согласно http://github.com/sinatra/sinatra (второстепенные фильтры) объект ответа доступен в блоках после фильтра в Sinatra 1.0.Однако response.status правильно доступен, я не вижу непустого response.body из моих маршрутов внутри после фильтра.
У меня есть этот файл для хранения:
config.ru
require 'app'
run TestApp
Затем установили гем Sinatra 1.0.b, используя:
gem install --pre sinatra
И это мое крошечное приложение с одним маршрутом:
app.rb
require 'rubygems'
require 'sinatra/base'
class TestApp < Sinatra::Base
set :root, File.dirname(__FILE__)
get '/test' do
'Some response'
end
after do
halt 500 if response.empty? # used 500 just for illustation
end
end
А теперь я хотел бы получить доступ к ответу внутри фильтра after.Когда я запускаю это приложение и получаю доступ к / test URL, я получаю ответ 500 , как если бы он был пустым, но ответ явно "Некоторый ответ".
Наряду с моим запросом к / test браузером выдается отдельный запрос к /favicon.ico, который возвращает 404 , поскольку нет ни маршрута, ни статического файла.Но я ожидаю, что будет возвращено состояние 500 , поскольку ответ должен быть пустым.
В консоли я вижу, что в фильтре после фильтра ответ на /favicon.ico - это нечтовроде «Не найдено», и ответ на / test действительно пуст, даже если по маршруту возвращается ответ.
Что мне не хватает?