Следует ли игнорировать 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-схему с помощью схемы решает только часть проблемы, оставляя возможными необходимые коррекции данных или семена данных из изображения.