Quero acessar o banco de dados de um aplicativo de outro aplicativo Heroku. Isso é possível no banco de dados compartilhado?
fonte
Quero acessar o banco de dados de um aplicativo de outro aplicativo Heroku. Isso é possível no banco de dados compartilhado?
ATUALIZADA
Originalmente, essa resposta afirmava que, embora isso fosse possível com alguns truques, era fortemente desencorajado. Isso foi baseado no conselho do site de suporte ao desenvolvedor do Heroku. No entanto, recentemente o Heroku emitiu uma comunicação descrevendo especificamente como fazer isso e diluiu seus conselhos no site do desenvolvedor. O texto completo desta seção de seu e-mail está incluído abaixo:
Você sabia que os aplicativos Heroku podem compartilhar um banco de dados comum? Por exemplo, você pode colocar funções analíticas em um aplicativo separado do código voltado para o usuário.
Basta definir a var de configuração DATABASE_URL para vários aplicativos com o mesmo valor. Primeiro, obtenha o DATABASE_URL para seu aplicativo existente:
$ heroku config | grep DATABASE_URL --app sushi DATABASE_URL => postgres://lswlmfdsfos:[email protected]/ldfoiusfsf
Em seguida, defina DATABASE_URL para novos aplicativos com este valor:
$ heroku config:add DATABASE_URL=postgres://lswlmfdsfos:[email protected]/ldfoiusfsf --app sushi-analytics Adding config vars: DATABASE_URL => postgres://lswlm...m/ldfoiusfsf Restarting app... done, v74. That's it
- agora ambos os aplicativos compartilharão um banco de dados.
Apenas como referência, o conselho original do Heroku era criar e usar uma API para acessar dados remotamente. Minha opinião pessoal é que, em geral, para muitas situações, este é um bom conselho (ou seja, melhor do que apenas conectar vários aplicativos ao mesmo banco de dados), embora eu possa ver situações em que isso seria mais problemático do que vale a pena.
ATUALIZAR
De acordo com os comentários sobre esta resposta, é importante notar que o Heroku se reserva o direito de alterar os URLs do banco de dados conforme necessário. Se isso ocorrer, as conexões secundárias falharão e você precisará atualizar os URLs de acordo.
Resposta de última hora à pergunta pertinente!
O Heroku oferece suporte oficialmente para uma solução melhor / elegante por meio de seu framework adicional agora. Ele é descrito em seu boletim informativo mais recente sobre como compartilhar addons entre aplicativos. Abaixo estão os snippets mencionados no artigo:
Link: expansion_the_power_of_add_ons
fonte
heroku addons:attach originating_app_name::HEROKU_POSTGRESQL_COLOR_URL -a no_db_app_name
até onde eu sei, é possível - você terá que olhar as variáveis de configuração do heroku para o seu aplicativo com o banco de dados e, em seguida, definir o database_url no aplicativo que deseja compartilhar o banco de dados com o mesmo valor. Meio fora do caminho e quanto ao suporte, eu não sei.
EDITAR Só para descansar, criei dois aplicativos no Heroku - uma simples 'postagem' de suporte com um título.
http://evening-spring-734.heroku.com/posts é o mestre
http://electric-galaxy-230.heroku.com/posts - é o escravo
Portanto, as postagens criadas em qualquer um deles serão gravadas na URL do banco de dados evening-spring-734.
Tudo o que fiz foi usar a configuração do heroku para obter o DATABASE_URL de evening-spring-734 e definir o mesmo valor em DATABASE_URL de electric-galaxy-230.
Você pode acabar com algumas condições de corrida DB frutadas, mas é definitivamente possível fazer.
Magic hein?
fonte
Recebi isso no boletim informativo do Heroku recentemente. Estou enviando um e-mail para eles para descobrir se realmente é um uso aprovado.
fonte
O plugin Amazon RDS funciona bem para isso. Vários aplicativos podem compartilhar a mesma instância RDS.
Você tem a flexibilidade de fazer com que eles compartilhem tabelas ou evitar a colisão de nomes de tabelas usando o active_record.table_name_prefix.
fonte
Consulte a referência do Heroku: https://devcenter.heroku.com/categories/heroku-postgres
fonte