Rails 3.1 - Использование Postgres в разработке - какой-нибудь способ заставить Git обрабатывать состояния миграции БД? - PullRequest
0 голосов
/ 29 января 2012

Решение Heroku заставить использовать Postgres вызывает у меня серьезное горе. Пытаясь какое-то время продолжать использовать SQLite в dev и Postgres в рабочей среде / Heroku, я сдался и сделал, как Heroku «настоятельно рекомендует», я начал использовать Postgres для разработки. После нескольких проблем, связанных с установкой postgres на моем Mac, он, наконец, устанавливается и работает с Rails.

В отличие от SQLite, для установки Postres / Rails требуется, чтобы моя база данных существовала в иерархии Postgres, а не локально в каталоге моего проекта. Это означает, что git не может обрабатывать состояния миграции базы данных в моих различных ветвях кода. Теперь мне нужно вручную отслеживать, какие миграции связаны с какими ветвями, и выполнять откат вручную и загрузку образцов данных каждый раз, когда я меняю ветви git.

Есть ли решение для этого? Может ли база данных Postgres вашего Rails 3.1 проекта быть легко поставлена ​​под контроль версий git?

1 Ответ

2 голосов
/ 29 января 2012

Лично у меня просто все время мигрирует с нуля (хотя я не использую рельсы - синатру и драгоценный камень сиквела). Для рельсов вы можете сделать это: 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 своего приложения.

...