2013-09-17 2 views
11

В моей базе данных используется PostgreSQL. Я разрабатываю на Mac, и эта строка необходима:Должен ли я игнорировать schema.rb, потому что расширение отличается от ОС разработки/производства?

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

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

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

+0

Это, кажется, не повредит производству. –

+0

Однако, Git жалуется, когда тянет, когда я забываю «git checkout db/schema.rb» –

+0

Нет. Я тяну от разработки, которая имеет 'enable_extension'. В производстве я делаю следующее: 'pull',' migrate', 'git checkout schema.rb', прежде чем я смогу« вытащить »в следующий раз. –

ответ

2

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

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

+0

Изменения, сгенерированные в процессе производства, не должны находиться в управлении версиями. Тем не менее, если вы используете разные базы данных в разработке, изменение в этом конфиге приведет к возникновению различной 'schem.rb' и беспорядок с вашим управлением версиями. case, я проигнорирую 'schem.rb', если он будет производным файлом, а не отредактирован вручную. – jgomo3

0

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