SORU
25 Mayıs 2011, ÇARŞAMBA


Bağlanma Birden fazla veritabanı ile 3.1 Raylar

ShowNearby çok büyük bir göç PHP 3.1 RoR için yapmakta olduğumuz ve daha önce çözdük bazı olabilecek çeşitli sorunlarla karşı karşıyayız.

Veri büyük miktarda var ve biz ayrı ayrı işler için DBs içine bizim DB ayırma kararı aldık. Örneğin, bizim hesapları, yerler, günlükleri ve diğer birçok veritabanları ayrılır

Göçler, demirbaşlar, modelleri, güzel oynamak için almak gerekir, ve şimdiye kadar oldukça dağınık olmuştur. Kabul edilebilir bir çözüm için bizim bazı gereksinimler:

  • bir model veritabanlarından birine bir tablo ile ilgilidir.
  • rake db:damla - tüm veritabanı veritabanı belirtmek env düşmesi gerekir.yml
  • rake db:create - tüm veritabanı veritabanı belirtmek env oluşturmanız gerekir.yml
  • rake db:göç - çeşitli veritabanları için göçler çalışmalıdır
  • rake db:test - demirbaşlar alıp/etc işlev/veritabanları ve test birimi çeşitli içine düşmesi gerekir

Her veritabanı başına ayrı raylar projeler ve ActiveResource ile bağlayarak düşünüyoruz, ama bu çok etkili değildir. Eğer herhangi benzer bir sorun daha önce yaşamış mıydık?

Çok teşekkürler!!

CEVAP
25 Mayıs 2011, ÇARŞAMBA


Wukerplank cevap için, ayrıca bağlantı veritabanı ayrıntıları koyabilirsiniz.öyle gibi: bir isim her zamanki gibi yml

log_database_production:
  adapter: mysql
  host: other_host
  username: logmein
  password: supersecret
  database: logs

Özel model:

class AccessLog < ActiveRecord::Base
  establish_connection "log_database_#{Rails.env}".to_sym
end

Uygulama kodunuzda olmaktan bu sinir bozucu kimlik bilgilerini tutmak için.

Düzenleme:İstiyorsanız yeniden bu bağlamda birden fazla modelleri, size gereken yeni bir soyut sınıf ve miras, çünkü bağlantıları sıkı eşleşmiş sınıfları (olarak açıkladı here, here here) ve yeni bağlantılar oluşturulur her sınıf için.

Eğer durum buysa, şey gibi yani Yukarı ayarlayın:

class LogDatabase < ActiveRecord::Base
  self.abstract_class = true
  establish_connection "log_database_#{Rails.env}".to_sym
end

class AccessLog < LogDatabase
end

class CheckoutLog < LogDatabase
end

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 3dmmfavs

    3dmmfavs

    29 Kasım 2009
  • multimediaGEEKS LLC

    multimediaGE

    3 Mayıs 2010
  • Phlearn Photoshop and Photography Tutorials

    Phlearn Phot

    11 EKİM 2011