小编Pet*_*rel的帖子

在Sinatra 1.0中的过滤器块之后无法访问response.body

我正在努力解决一个奇怪的问题.根据http://github.com/sinatra/sinatra(secion Filters),在Sinatra 1.0中的过滤器块之后可以使用响应对象.但是响应.status是可以正确访问的,我在过滤后看不到来自我的路由里面的非空响应.

我有这个架子文件:

config.ru

require 'app'
run TestApp
Run Code Online (Sandbox Code Playgroud)

然后使用以下方法安装Sinatra 1.0.b gem:

gem install --pre sinatra
Run Code Online (Sandbox Code Playgroud)

这是我的小应用程序,只有一条路线:

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
Run Code Online (Sandbox Code Playgroud)

现在,我想访问后过滤器内的响应.当我运行这个应用程序并访问/测试 URL时,我得到了500响应,好像响应是空的,但响应显然是"一些响应".

随着我对/ test的请求,浏览器发出了对/favicon.ico的单独请求,并且由于没有路由或静态文件而返回404.但我希望返回500状态,因为响应应为空.

在控制台中,我可以看到在后过滤器中,对/favicon.ico的响应类似于"未找到",并且对/ test的响应确实为空,即使路由返回了响应.

我错过了什么?

ruby sinatra

5
推荐指数
1
解决办法
1452
查看次数

标签 统计

ruby ×1

sinatra ×1