Partager la base de données entre 2 applications dans Heroku
Je veux accéder à la base de données d'une application à partir d'un autre Heroku app. Est-ce possible dans la base de données partagée?
Vous devez vous connecter pour publier un commentaire.
Mis à JOUR
À l'origine, cette réponse a déclaré que, bien que cela était possible avec quelques astuces, il a été fortement découragé. Ceci a été basé sur des conseils sur la Heroku développeur de site web de support. Cependant, récemment, Heroku a publié une communication spécifiquement décrivant la manière d'atteindre cet objectif, et ont arrosée de leur avis, sur le site des développeurs. Le texte complet de cette section de leur adresse e-mail est inclus ci-dessous:
Tout comme un point de référence, Heroku initiale de conseils pour créer et utiliser une API pour accéder aux données à distance. Mon avis personnel est que, dans l'ensemble, pour beaucoup de situations, cela est de bons conseils, (c'est à dire mieux que la connexion de plusieurs applications à la même DB) même si je peux voir des situations où ce serait le plus d'ennuis que cela vaut la peine.
Mise à JOUR
Que par des commentaires sur cette réponse, il est intéressant de noter que Heroku ne réservons le droit de modifier la base de données des Url en tant que de besoin. Si cela se produit, il sera la cause de vos connexions secondaires à l'échec, et vous aurez besoin de mettre à jour les Url en conséquence.
De dernière minute de la réponse à la question pertinente!
Heroku prend officiellement en charge un meilleur/gracieux solution par la voie de leur addon cadre maintenant. Il est décrit dans leur dernier bulletin d'information sur la façon de partager des addons entre les applications. Ci-dessous les extraits cités dans l'article:
Lien: expanding_the_power_of_add_ons
heroku addons:attach originating_app_name::HEROKU_POSTGRESQL_COLOR_URL -a no_db_app_name
autant que je sache, il est possible que vous aurez à regarder le heroku variables de configuration de votre application avec la base de données et ensuite définir la database_url sur l'app qui veut partager la base de données de la même valeur. Un peu hors piste si et comment pris en charge, c'est que je ne sais pas.
MODIFIER Juste pour mettre mon esprit au repos, j'ai lancé deux applications sur Heroku - un simple échafaudage "post" avec un titre.
http://evening-spring-734.heroku.com/posts est le maître
http://electric-galaxy-230.heroku.com/posts - est l'esclave
Afin de postes créés sur les deux seront écrites dans la base de données URL de soirée-printemps-734.
Tout ce que j'ai fait, est d'utiliser heroku config pour obtenir le DATABASE_URL de soirée-printemps-734 et ensuite définir la même valeur dans le DATABASE_URL électrique-galaxy-230.
Vous pourriez vous retrouver avec certains fruités DB conditions de course, mais il est certainement possible de le faire.
Magique hein?
J'ai reçu cela dans le Heroku newsletter récemment. Je suis envoyant un courriel à savoir si c'est vraiment une utilisation approuvée.
Le Amazon RDS plugin fonctionne bien pour cela. Plusieurs applications peuvent partager le même RDS instance.
Vous avez la possibilité de partager des tables ou éviter le nom de la table de collision à l'aide de la active_record.table_name_prefix.
Voir Heroku référence: https://devcenter.heroku.com/categories/heroku-postgres