【发布时间】:2014-11-12 12:58:36
【问题描述】:
我正在尝试在 Sinatra 中制作一个简单的 API 作为练习。我有如下代码:
require 'pg'
...
db_params = {
host: 'localhost',
dbname: 'dbname',
user: 'user',
password: 'password'
}
psql = PG::Connection.new(db_params)
before { content_type 'application/json' }
after { psql.close }
get '/' do
beer = psql.exec_params('SELECT * FROM beers LIMIT 20')
...
end
我注意到当我点击 URL 时,我得到了我的结果。如果我相对较快地再次点击它,它会返回连接已关闭。这是有道理的,因为我在发送响应后关闭了连接。但是,我的假设是它会在下一个请求时打开另一个连接。我可能误解了 PG gem 的工作原理。我想确保我正确使用它。我需要担心每次都关闭它吗?如果我不手动关闭它,它会保持连接打开并耗尽资源,还是会在响应结束时自动关闭连接?
【问题讨论】:
标签: ruby postgresql sinatra pg