ruby论坛 - sinatra中文



真正的sinatra(ruby/rack)after_filter最快的方法是什么? (1)

修改run_later端口到rails来完成这个诀窍文件可以在这里找到:

http://github.com/pmamediagroup/sinatra_run_later/tree/master

好的,这是一个简单的任务。 在我将html呈现给客户端之后,我想用请求中的信息执行db调用。

我使用的是sinatra,因为它是一个轻量级的微框架,但是如果它更快/更容易(Rack? 我只想获取网址,并根据网址在其他地方重定向客户端。

那么我们怎么去用rack / sinatra做一个真正的after_filter。 而after_filter我的意思是在回复发送给客户端之后。 还是只是没有线程不能dooable?

我分叉sinatra和过滤器后添加,但没有办法刷新响应,甚至send_data这是假设流文件(这显然是二进制)等待after_filters。

我已经看到了这个问题: Multipart-response-in-ruby,但答案是为rails。 而且我不确定它是否真的刷新了对客户端的响应,然后允许之后的处理。

Rack :: Callbacks在回调之前和之后有一些回调,但是在响应被发送到客户端之前,看起来就像在Rack :: Callbacks实现(添加注释)一样:

def call(env)
  @before.each {|c| c.call(env) }
  response = @app.call(env)
  @after.each {|c| c.call(env) }
  response 
  #i am guessing when this method returns then the response is sent to the client.
end

所以我知道我可以用耙子通过shell调用后台任务。 但它不会有太多...也有NeverBlock,但是是不是执行一个单独的进程,而不会延迟响应,或者它仍然使应用程序等待整体(我认为会)?

我知道这是很多,但简而言之,在ruby / sinatra / rack中发送响应之后,真正运行的是after_filter。

感谢您阅读或回答我的问题! :-)





callback