Я использую Capistrano для развертывания в рабочей среде в первый раз и получаю сообщение об ошибке при запуске
cap production deploy
Ошибка:
** Invoke deploy:migrate (first_time)
** Invoke deploy:set_rails_env
** Execute deploy:migrate
DEBUG [048f89c6] Running /usr/bin/env if test ! -d /home/deployer_user/apps/ap_production/releases/20140209005208; then echo "Directory does not exist '/home/deployer_user/apps/ap_production/releases/20140209005208'" 1>&2; false; fi on eslope.net
DEBUG [048f89c6] Command: if test ! -d /home/deployer_user/apps/ap_production/releases/20140209005208; then echo "Directory does not exist '/home/deployer_user/apps/ap_production/releases/20140209005208'" 1>&2; false; fi
DEBUG [048f89c6] Finished in 0.160 seconds with exit status 0 (successful).
INFO [52f75214] Running ~/.rbenv/bin/rbenv exec bundle exec rake db:migrate on eserver.net
DEBUG [52f75214] Command: cd /home/deployer_user/apps/ap_production/releases/20140209005208 && ( RBENV_ROOT=~/.rbenv RBENV_VERSION=2.1.0 RAILS_ENV=production ~/.rbenv/bin/rbenv exec bundle exec rake db:migrate )
DEBUG [52f75214] rake aborted!
DEBUG [52f75214] An error has occurred, this and all later migrations canceled:
DEBUG [52f75214]
DEBUG [52f75214] PG::UndefinedTable: ERROR: relation "client_infos" does not exist
DEBUG [52f75214] : ALTER TABLE "client_infos" RENAME TO "clients
Ошибка на самом деле имеет полный смысл. Указанная таблица не существует. Чего я не понимаю, так это почему миграция вообще выполняется? Почему база данных не создается из схемы при первом запуске. Я непреднамеренно удалил файл, в котором говорится, какие миграции были выполнены? Либо просто удалив его, либо ".gitignoring"?
Я думаю, что знаю, как я могу это исправить (rake db:create или подобное), но чего я не понимаю, так это того, что если в Capistrano v3 он знает, что это первый раз, почему бы ему не использовать схему напрямую, а не запускать все миграции? Я нуб, это кажется разумным, но, с другой стороны, выполнение миграций приведет к тому же результату, так что... (Но как насчет людей, которые не знают, что использовать миграции вслепую в производстве; не будут они застряли?) Спасибо.
cap deploy:cold
? - person gmaliar   schedule 09.02.2014