2012-08-16 23 views
6

Sadece Ruby ile başladım ve Sinatra ile oynuyorum, ancak isteklerin arasındaki veritabanı bağlantılarını paylaşmanın bir yolunu bulamadım.veritabanı bağlantısı ruby ​​içinde havuzlama

Java web geliştirmeden geldim ve yapmanız gereken temel şeylerden biri veritabanı bağlantılarını birleştirmektir, bu yüzden Ruby'de benzer bir şeyin var olduğundan eminim, ancak bunu bulamıyorum.

ActiveRecord ve DataMapper bu özelliği sunuyor, ancak ORM'ye ihtiyacım yok ve yalnızca düzenli SQL sorguları yapmak istiyorum.

Sinatra için belirli bir yaklaşım var mı yoksa tüm Rack tabanlı uygulamalar için genel yollar var mı?

cevap

4

Bir bağlantıyı sürdürmek için, yalnızca bir örnek değişkeni oluşturmanız gerekir (Sinatra Uygulamaları sadece nesnelerdir) veya genel bir değişken. Veya sizin için bağlantıları yöneten bir sınıf. Ben gördüğüm çoğu Ruby veritabanı kitaplıkları Veritabanı Bağdaştırıcıları veya yalnızca istemcilerdir.

@db = Mysql2::Client.new #... 

Ya da global değişken:

$db = Mysql2::Client.new #... 

Bağlantı havuzu uygulamasının ömrü için birden ipler/liflerin arasında bağlantıların az sayıda paylaşmak için sadece bir yoludur. Java, JVM, bildiğim kadarıyla süreçler arasındaki bağlantıları paylaşmıyor. Ancak, Connection Pool library for Ruby genel bir amacı vardır.

+0

Teşekkürler, ancak bir örnek değişkeni oluşturursam, uygulama nesnesi her oluşturulduğunda yeni bağlantı da oluşturulur, değil mi? Peki bu bağlantı paylaşımı konusunda nasıl yardımcı olur? – Nikoi

+1

El ile kapatılmadıkça, uygulama istemlerin arasında kapatılmadı. Uygulama yüklenir ve isteklere yanıt verir ve ömrünü uzatır. Ruby'deki bağlantı havuzu için bildiğim en iyisi bu. –

+1

Mysql2'yi [Sequel] (http://sequel.rubyforge.org), [DataMapper] (http://datamapper.org) veya [ActiveRecord] (http: //) gibi bazı ORM'ler olmadan doğrudan kullanmak kötü bir fikirdir. rubygems.org/gems/activerecord). Bunlar çoğu durumda otomatik olarak sizin için havuz yapacak. "Sadece SQL sorguları yapıyorsanız" uygulamanız hızla bir karmaşaya dönüşecektir. Sequel, gerçekte sorgu üreteci gerçekten oldukça iyi olduğu için SQL'e yakınlaşmak için en iyi seçimdir. – tadman

İlgili konular