Bir uygulamanın veritabanına başka bir Heroku uygulamasından erişmek istiyorum. Paylaşılan veritabanında bu mümkün mü?
Yanıtlar:
GÜNCELLENMİŞ
Başlangıçta bu cevap, birkaç numara ile bunun mümkün olmasına rağmen kesinlikle cesaretinin kırıldığını belirtiyordu . Bu, Heroku geliştirici destek web sitesindeki tavsiyelere dayanıyordu. Bununla birlikte, yakın zamanda Heroku, özellikle bunun nasıl başarılacağını açıklayan bir iletişim yayınladı ve geliştirici sitesinde tavsiyelerini sulandırdı. E-postalarının bu bölümünün tam metni aşağıdadır:
Heroku uygulamalarının ortak bir veritabanını paylaşabileceğini biliyor muydunuz? Örneğin, analitik işlevlerini kullanıcıya yönelik kodunuzdan ayrı bir uygulamaya koyabilirsiniz.
Birkaç uygulama için DATABASE_URL yapılandırma değişkenini aynı değere ayarlamanız yeterlidir. Öncelikle, mevcut uygulamanız için DATABASE_URL'yi alın:
$ heroku config | grep DATABASE_URL --app sushi DATABASE_URL => postgres://lswlmfdsfos:5FSLVUSLLT123@ec2-123-456-78-90.compute1.amazonaws.com/ldfoiusfsf
Ardından, yeni uygulamalar için DATABASE_URL değerini şu değere ayarlayın:
$ heroku config:add DATABASE_URL=postgres://lswlmfdsfos:5FSLVUSLLT123@ec2-123-456-78-90.compute-1.amazonaws.com/ldfoiusfsf --app sushi-analytics Adding config vars: DATABASE_URL => postgres://lswlm...m/ldfoiusfsf Restarting app... done, v74. That's it
- şimdi her iki uygulama da bir veritabanını paylaşacak.
Bir referans noktası olarak, Heroku'nun orijinal tavsiyesi, verilere uzaktan erişmek için bir API oluşturmak ve kullanmaktı. Benim kişisel görüşüm, genel olarak, birçok durum için bu iyi bir tavsiye (yani, birden fazla uygulamayı aynı DB'ye bağlamaktan daha iyidir), ancak bunun değerinden daha fazla sorun olacağı durumları da görebiliyorum.
GÜNCELLEME
Bu yanıttaki yorumlara göre, Heroku'nun veritabanı URL'lerini gerektiği gibi değiştirme hakkını saklı tuttuğunu belirtmek gerekir. Bu gerçekleşirse, ikincil bağlantılarınızın başarısız olmasına neden olur ve URL'leri buna göre güncellemeniz gerekir.
İlgili soruya geç cevap!
Heroku, artık eklenti çerçevesi sayesinde daha iyi / zarif bir çözümü resmi olarak destekliyor. Eklentilerin uygulamalar arasında nasıl paylaşılacağıyla ilgili en son haber bültenlerinde açıklanmıştır. Yazıda bahsedilen pasajlar aşağıdadır:
$ heroku addons:attach my-sushi-db -a my-sushi-reporting --as MAIN_SUSHI_DB
Adding MAIN_SUSHI_DB to my-sushi-reporting... done
Setting MAIN_SUSHI_DB vars and restarting my-sushi-app-reporting... done, v3
Bağlantı: expanding_the_power_of_add_ons
heroku addons:attach originating_app_name::HEROKU_POSTGRESQL_COLOR_URL -a no_db_app_name
Mümkün olduğunu bildiğim kadarıyla - DB ile uygulamanız için heroku yapılandırma değişkenlerine bakmanız ve ardından veritabanını aynı değere paylaşmak isteyen uygulamada database_url'yi ayarlamanız gerekir. Gerçi yoldan sapmış ve ne kadar desteklendiğini bilmiyorum.
DÜZENLE Sadece fikrimi rahatlatmak için Heroku'da iki uygulama geliştirdim - bir başlığı olan basit bir iskele 'gönderisi'.
http://evening-spring-734.heroku.com/posts usta
http://electric-galaxy-230.heroku.com/posts - köle
Bu nedenle, her ikisinde de oluşturulan gönderiler akşam-bahar-734 veritabanı URL'sine yazılacaktır.
Tüm yaptığım heroku yapılandırmasını akşam-bahar-734'ün DATABASE_URL'sini almak ve ardından aynı değeri elektrik galaksi-230'un DATABASE_URL'sine ayarlamaktı.
Bazı meyveli DB yarış koşullarına sahip olabilirsiniz, ancak kesinlikle yapmak mümkündür.
Büyü ha?
Bunu geçenlerde Heroku haber bülteninde aldım. Gerçekten onaylanmış bir kullanım olup olmadığını öğrenmek için onlara e-posta gönderiyorum.
BİLİYOR MUSUN?
Bir veritabanını birçok uygulamayla paylaşma
Heroku uygulamalarının ortak bir veritabanını paylaşabileceğini biliyor muydunuz? Örneğin, analitik işlevlerini kullanıcıya yönelik kodunuzdan ayrı bir uygulamaya koyabilirsiniz.
Birkaç uygulama için
DATABASE_URL
yapılandırma değişkenini aynı değere ayarlamanız yeterlidir . Önce,DATABASE_URL
mevcut uygulamanız için alın:
$ heroku config | grep DATABASE_URL --app sushi DATABASE_URL => postgres://lswlmfdsfos:5FSLVUSLLT123@ec2-123-456-78-90.compute-1.amazonaws.com/ldfoiusfsf
Ardından,
DATABASE_URL
yeni uygulamalar için şu değere ayarlayın:
$ heroku config:add DATABASE_URL=postgres://lswlmfdsfos:5FSLVUSLLT123@ec2-123-456-78-90.compute-1.amazonaws.com/ldfoiusfsf --app sushi-analytics Adding config vars: DATABASE_URL => postgres://lswlm...m/ldfoiusfsf Restarting app... done, v74.
İşte bu - şimdi her iki uygulama da bir veritabanını paylaşacak.
Amazon RDS eklentisi bunun için iyi çalışıyor. Birden çok uygulama aynı RDS örneğini paylaşabilir.
Active_record.table_name_prefix kullanarak tabloları paylaştırma veya tablo adı çakışmasını önleme esnekliğine sahipsiniz.
Heroku referansına bakın: https://devcenter.heroku.com/categories/heroku-postgres
S: Birden fazla Heroku Uygulaması tek bir veritabanına bağlanabilir mi?
Evet. Veritabanları kimlik bilgilerine sahip olmanız koşuluyla, Heroku'da çalışan birden çok uygulamayı tek bir veritabanına bağlanacak şekilde yapılandırabilirsiniz. Heroku yapılandırmasını kullanarak bağlanmak istediğiniz uygulamaların DATABASE_URL'sini geçersiz kılmanız yeterlidir: DATABASE_URL = ... komutunu ekleyin.