我想在Sinatra或Rails服务器上维护一个数据结构(无关紧要),可以访问所有到达它的HTTP请求(即支持并发修改)。我不想依赖于数据库或类似数据库,因为这不允许我为修改此数据结构编写回调代码并将并发块放在HTTP响应线程上。
由于HTTP是无状态的,显然没有简单的方法来实现这一点。
如何在不重新使用外部程序和中间件的情况下,为进入HTTP服务器的所有请求创建一个在后台维护数据的进程?是否需要我修改Rails或Sinatra来实现这一目标?甚至在红宝石之外还有其他选择吗?
答案 0 :(得分:1)
使用Sinatra时,您只需在应用程序结束时编写一个代码:
http://blog.markwatson.com/2011/11/ruby-sinatra-web-apps-with-background.html
使用此功能,您可以维护一个即使在http请求进出时也可以执行操作的工作人员。
Sinatra还有分别在每个请求之前和之后运行的方法before
和after
。
因此,如果您想在处理每个请求之前将数据添加到数据结构,您可以:
before do
puts request
end
使用这些工具,您可以轻松实现您想要的目标。