在做基于 bootstrap 2.1 上 typeahead 效果的时候,正好后端需要访问其他数据库,以返回 json 成为 type ahead 的前端数据,然后我写了下面的后端代码:
class TypeaheadController < ApplicationController
def lot
type_con=OCI8.new('user','passwd','ORA_TNS_NAME')
q=params[:query]
a=[]
rows=type_con.exec("SELECT co.containername FROM container co
WHERE co.containername LIKE '#{q.upcase}%' AND ROWNUM < 7")
l = rows.fetch
while l.present?
a << l[0]
l = rows.fetch
end
render json: a
end
end
测试了一下发现,虽然能工作,但是 request/response 的间隔很长,速度很慢,初步判断问题应该是数据库没有缓存连接,因为每次调用都开一次数据库连接肯定慢啦,所以想问问在 Rails 下缓存 type_con 这样的数据库连接,Rails 内部是如何做的?如果我要用,在 initializer 里面写一个正确么?我看 database.yml 文件里面甚至有 pool,连接池的设定,如果能够用上这些基础设施,那就更好啦!
我想抄 Rails 保持数据库连接的代码,但是一看 Rails 代码一大堆,找不到抄哪里。。。