0

Heroku 强制使用 Postgres 的决定让我很伤心。在尝试了一段时间继续在 dev 中使用 SQLite 和在生产/Heroku 中使用 Postgres 之后,我放弃了并按照 Heroku “强烈推荐”的方式去做,我开始使用 Postgres 进行开发。在我的 Mac 上多次 postgres 安装挑战后,它终于被安装并与 Rails 一起使用。

与 SQLite 不同,Postres/Rails 设置似乎要求我的数据库存在于 Postgres 层次结构中,而不是本地存在于我的项目目录中。这意味着 git 无法在我的各种代码分支中处理数据库迁移状态。现在我必须手动跟踪哪些迁移与哪些分支相关联,并在每次更改 git 分支时手动回滚和加载样本数据。

有针对这个的解决方法吗?您的 Rails 3.1 项目的 Postgres 数据库能否轻松置于 git 版本控制之下?

4

1 回答 1

2

就我个人而言,我只是让它一直从头开始迁移(尽管我没有使用 rails——sinatra 和 sequel gem)。对于 Rails,您可以让它执行 db:schema:load,然后运行缺少的迁移。我还有一个 rake 任务,可以加载我需要时执行的虚拟数据。

但是,您可以从本地目录而不是系统范围运行 postgres。

如果它正在运行,您首先需要停止守护进程的 postgres(在 os x 上,没有分配足够的共享内存来运行两个 postgres 进程)。然后执行以下操作:

  1. initdb data或您希望数据进入的任何本地目录
  2. postgres -D data &或省略&并打开一个新终端
  3. createdb myapp-development

我希望有一天能将这一切简化为一步。

我的一些大学喜欢拥有一个 Sysfile,并使用它foreman -f Sysfile来独立于他们的应用程序的 Procfile 来启动系统依赖项。

于 2012-01-29T02:08:33.860 回答