Развернуть Capistrano и schema.rb - PullRequest
       24

Развернуть Capistrano и schema.rb

3 голосов
/ 22 февраля 2011

Я новичок в Rails и пытаюсь развернуть свой первый проект. Я использую рельсы 3, ruby ​​1.8.7, Passanger, Mysql и Git

Я прошел много уроков, чтобы узнать о развертывании с capistrano, и есть вопрос, который я не могу понять. В уроках они никогда не говорят о schema.rb Если этот файл отвечает за миграции, которые я уже сделал, и когда мы развертываем приложение, capistrano скопирует все файлы в «текущую» папку (schema.rb to), как он может выполнить правильные миграции на рабочем сервере. Должен ли я сказать capistrano сделать simlink на правильный файл schema.rb для «текущей» папки? если да, как я могу это сделать? Tnks.

1 Ответ

8 голосов
/ 22 февраля 2011

Файл schema.rb содержит определение базы данных. Он не несет ответственности за миграцию.

Миграции содержатся в папке db/migrations. Когда вы развертываете новый выпуск и просите Capistrano перенести текущую базу данных, Capistrano вызывает rake db:migrate. Задача переноса не зависит от schema.rb. Он подключается к базе данных, считывает список выполненных миграций из таблицы schema и выполняет все файлы в db/migrations, для которых в этой таблице нет записи.

Файл schema.rb используется только при вызове rake db:schema:load или при загрузке Rails. В последнем случае Rails будет использовать схему для предотвращения проверки структуры базы данных каждый раз, когда вы обращаетесь к модели.

Тем не менее, файл schema.rb должен быть версионным в вашем SCM, и вы должны включить его во время развертывания. Вам не нужно делать ничего особенного. Capistrano извлекает файл из вашего SCM, как и все остальные файлы, если вы не проигнорировали его.

...