まず、月額 50 ドルの追加料金を支払うことを強くお勧めします。そのために、フォークやパイプラインなどのあらゆる種類のクールなものと、これが一種のハッキーであるという事実を取得します。ステージング データベースをクリアしたときに、これが本番データを消去することになるかどうかは正直わかりません。これを試す前にバックアップを作成してください。
この回答は、ビジネス上の決定ではなく、技術的な課題に対する回答と見なします。難しい話は抜きにして、
Heroku Postgres スキーマを使用して同じデータベースに複数の環境を設定する
最初に、既存の開発データベースを削除し、実稼働データベースを実稼働アプリに追加しました。
heroku addons:add heroku-postgresql:crane
> Adding heroku-postgresql:crane on test-shared-app... done, v# ($50/mo)
> Attached as HEROKU_POSTGRESQL_RED_URL
これにより、色の下にデータベースがアタッチされたので、アプリに適した色にRED
置き換えます。HEROKU_POSTGRESQL_RED_URL
これにより、データベースが本番アプリにアタッチされますが、ステージングのために同じアプリに接続する必要があります。まず、ステージング スキーマを作成します
heroku run "bundle exec rails runner 'ActiveRecord::Base.connection.execute(%q{CREATE SCHEMA staging})'"
次に、ステージング アプリを作成します。詳細については、アプリの複数の環境の管理を参照してください。
heroku create --remote staging test-shared-app-staging
heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging
次に、既存のアプリから環境データをコピーします。URL の末尾に追加します。?schema_search_path=staging
heroku config --remote heroku --shell
# make note of your database URLs
heroku config:set --remote staging \
DATABASE_URL=postgres://...?schema_search_path=staging \
HEROKU_POSTGRESQL_RED_URL=postgres://...?schema_search_path=staging
そしてステージングにプッシュ
git push staging master
次に、ステージングで移行を実行します
heroku run --remote staging bundle exec rake db:migrate
そして試してみてください。
私の「アプリ」はhttp://test-shared-app.herokuapp.com/postsとhttp://test-shared-app-staging.herokuapp.com/postsで実行されています。ソースはhttps://github.com/benmanns/heroku-shared-appで確認できます。