0

Postgres の使用を強制するという Heroku の決定は、私に大きな悲しみを与えています。dev で SQLite を使用し、本番環境/Heroku で Postgres を使用し続けようとしばらく試みた後、私はあきらめて、Heroku が「強く推奨する」ように、開発に Postgres を使用し始めました。私の Mac に複数の postgres インストールの課題が発生した後、最終的にインストールされ、Rails で動作します。

SQLite とは異なり、Postres/Rails のセットアップでは、データベースがプロジェクト ディレクトリにローカルに存在するのではなく、Postgres 階層に存在する必要があるようです。つまり、git はさまざまなコード ブランチでデータベースの移行状態を処理できません。今では、git ブランチを変更するたびに、どのマイグレーションがどのブランチに関連付けられているかを手動で追跡し、手動でロールバックしてサンプル データをロードする必要があります。

これに対する解決策はありますか?Rails 3.1 プロジェクトの Postgres データベースを簡単に git バージョン管理下に置くことができますか?

4

1 に答える 1

2

個人的には、常にゼロから移行するだけです (ただし、レール (sinatra とその続編の gem) は使用していません)。Rails の場合は、db:schema:load を実行してから、不足している移行を実行できます。また、必要なときに実行するダミー データをロードする rake タスクもあります。

ただし、システム全体ではなく、ローカル ディレクトリから postgres を実行できます。

デーモン化された postgres が実行されている場合は、最初に停止する必要があります (os x では、2 つの postgres プロセスを実行するのに十分な共有メモリが割り当てられていません)。次に、次の操作を行います。

  1. initdb dataまたは、データを移動したいローカルディレクトリ
  2. postgres -D data &またはを省略して&、新しいターミナルを開きます
  3. createdb myapp-development

いつかは、そのすべてをたった一歩に落とし込みたい。

私の大学のいくつかは、Sysfile を持ち、foreman -f Sysfileアプリの Procfile とは別にシステムの依存関係を起動するために使用しています。

于 2012-01-29T02:08:33.860 に答える