我刚开始使用Ruby,我正在玩Sinatra,但找不到在请求之间共享数据库连接的方法。
我来自Java web developpement,你要做的一件事就是集中数据库连接,所以我确信Ruby中存在类似的东西,但我找不到它。
ActiveRecord和DataMapper提供此功能,但我不需要ORM,只想进行常规SQL查询。
Sinatra是否有一些特定的方法,或者所有基于Rack的应用程序都有通用方法?
答案 0 :(得分:5)
要保持连接,您只需创建一个实例变量(Sinatra Applications只是对象)或全局变量。或者是一个为您管理连接的类。我见过的大多数Ruby数据库都是数据库适配器或只是客户端。
@db = Mysql2::Client.new #...
或全局变量:
$db = Mysql2::Client.new #...
连接池只是在应用程序的生命周期内跨多个线程/光纤共享少量连接的一种方法。就我所知,Java,JVM并不共享进程之间的连接。
但是,通用目的是Connection Pool library for Ruby。