我试图用sinatra编写一个简单的测验游戏,我需要让所有用户都可以访问公共对象(大厅状态,聊天消息等)。问题在于,Sinatra在每个请求和对象都处于初始状态后会重新加载代码。如何执行呢?
好吧,这个话题有点棘手。Sinatra实际上不会重置服务器状态:
require 'sinatra'
GlobalState = {}
GlobalState[:some_counter] = 0
get '/' do
response = "GlobalState[:some_counter]: #{GlobalState[:some_counter]}"
GlobalState[:some_counter] += 1
response
end
这段代码没有错:如果您运行它并转到,http://localhost:4567
您将看到GlobalState[:some_counter]
预期的增量。
但是不鼓励这样做,原因如下,主要与应用程序的网络性质有关:
由于这些原因,Web应用程序数据管理并非易事。无论如何,不用担心,您不必重新发明轮子。解决方案在手:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句