我在 Rack 上的 Sinatra 中构建了一个非常简单的 REST 服务。它由 3 个 Tokyo Cabinet/Table 数据存储提供支持,这些数据存储具有需要打开和关闭的连接。我有两个直接用 Ruby 编写的模型类,目前它们只是连接、获取或放置它们需要的内容,然后断开连接。显然,这不会长期有效。
我还有一些 Rack 中间件,例如 Warden,它们依赖于这些模型类。
管理打开和关闭连接的最佳方法是什么?据我所知,机架不提供启动/关闭挂钩。我考虑过插入一个中间件来提供对 env 中 TC/TT 对象的引用,但随后我必须通过 Sinatra 将其传输到模型,这似乎也效率不高;这只会是一个到 TC 的每个请求的连接。我认为每个服务器实例的生命周期将是更合适的生命周期。
Thanks!
你有没有考虑过使用 Sinatra 的configure
块来建立你的连接?
configure do
Connection.initialize_for_development
end
configure :production do
Connection.initialize_for_production
end
在使用 DataMapper 和 Sinatra 等工具时,这是一个非常常见的习惯用法
查看“配置”部分http://www.sinatrarb.com/intro
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)