@Jowan

Почему при вызове cap deploy затирается старая информация на сервере?

Использую capistrano 2.
Не вдаваясь в подробности проекта, скажу, что есть возможность загрузки картинок, и, след-но, последующей записи в базу.
Но при очередном вызове cap deploy все информация затирается. Приходится заново выполнять db:migrate на машине.
Пробовал использовать cap deploy:update_code - изменения не вступали в силу.
деплою на locum.ru
  • Вопрос задан
  • 2329 просмотров
Решения вопроса 1
Freika
@Freika
Senior Ruby on Rails developer
Потому что каждый раз при деплое Capistrano создает новую директорию, в которую загружается свежий релиз вашего приложения. Соответственно, ваши изображения остаются в старой директории. Вам нужно настроить в файле deploy.rb симлинк с папками, в которых будут храниться изображения, сами эти папки обычно хранятся в директории shared выше по дереву относительно директории, содержащей релизы. Надеюсь, понятно объяснил :)

И судя по тому, что информация в БД у вас затирается, вы используете SQLite3 в качестве базы данных. Локум предоставляет для каждого проекта базу данных на PostgreSQL, MySQL или какую-то еще на выбор, рекомендую перебраться в PostgreSQL. Эта БД - де-факто стандарт для приложений на Rails, хотя иной раз выбор зависит от проекта. А SQLite - это только для этапа, когда разработка на Rails только-только постигается. Раньше переберетесь - проще будет в дальнейшем.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
recomp
@recomp
web developer
Вот пример, как после деплоя создать симлинк с пользовательскими данными в shared директорию/

/app/config/deploy.rb

task :symlink_shared do
    run "rm -rf  #{current_path}/public/uploads"
    run "ln -nsf #{shared_path}/uploads #{release_path}/public/uploads"
end

after 'deploy:restart', 'symlink_shared'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы