Следует ли игнорировать schema.rb, потому что расширение отличается от ОС разработки/производства?

В моей базе данных используется PostgreSQL. Я разрабатываю Mac, и эта строка нужна:

  # db/schema.rb on Mac environment
  enable_extension "plpgsql"

Однако расширение не требуется в Linux.

В этом случае следует ли просто игнорировать schema.rb и сгенерировать это через db: migrate для обеих dev и производственных сред?

Ответ 1

Насколько я понял, проблема в том, что автоматически сгенерированный schema.rb будет отличаться по производительности и разработке и, следовательно, вызывать измененные файлы в git из-за этой дополнительной строки.

Является ли строка, созданная адаптером postgres на mac? Если бы он был добавлен вручную, я бы попытался поместить его в другое место, возможно, в инициализатор (где вы могли бы переключить его использование на платформе через что-то отсюда: Обнаружение операционных систем в Ruby).

Ответ 2

Я всегда использовал бы миграцию. schema.rb имеет недостаток быть только рубином. Если по какой-то причине у вас есть простой SQL в ваших миграциях, возможно, для использования BIGSERIAL вместо SERIAL или так, у вас возникнет проблема с schema.rb. Переход на SQL-схему с помощью схемы решает только часть проблемы, оставляя возможными необходимые коррекции данных или семена данных из изображения.