1. ホーム
  2. ruby-on-rails-3

[解決済み] Herokuで2つのアプリの間でデータベースを共有する

2023-02-10 04:17:17

質問

別のHerokuアプリからアプリのデータベースにアクセスしたいです。共有データベースで可能でしょうか?

どのように解決するのですか?

アップデートのお知らせ

元々、この回答では、ちょっとしたコツで可能であるが、それは 強く を推奨していました。これは、Herokuの開発者サポートウェブサイトのアドバイスに基づいていました。しかし、最近 Heroku は、これを達成する方法を具体的に説明する連絡を発行し、開発者向けサイトでのアドバイスを弱めました。電子メールのこのセクションの完全なテキストを以下に示します。

Herokuアプリが共通のデータベースを共有できることをご存知ですか? 共通のデータベースを共有できることをご存知ですか?例えば、分析機能をユーザー向けコードとは別のアプリケーションに置くことができます。 を、ユーザー向けのコードとは別のアプリケーションに置くことができます。

複数のアプリケーションの DATABASE_URL 設定変数を同じ値に設定するだけです。 を同じ値に設定するだけです。まず、既存のアプリの DATABASE_URL を取得します。

$ heroku config | grep DATABASE_URL  --app sushi DATABASE_URL => postgres://lswlmfdsfos:[email protected]/ldfoiusfsf

次に、新規アプリのDATABASE_URLをこの値に設定します。

$ 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

- これで、両方のアプリが1つのデータベースを共有することになります。

参考までに、Heroku のオリジナルのアドバイスは、データにリモートでアクセスするために API を作成して使用することでした。私の個人的な見解では、全体として、多くの状況において、これは 良いアドバイス

(すなわち、複数のアプリケーションを同じ DB に接続するよりも良い)ですが、その価値があるよりも多くの問題がある状況を私は見ることができます。

UPDATE

この回答に対するコメントのように、Herokuは必要に応じてデータベースのURLを変更する権利を留保していることは知っておく価値があります。これが発生した場合、セカンダリ接続が失敗する原因となりますので、適宜URLを更新する必要があります。