Вопрос Noob Capistrano о сохранении каталогов загрузки

В ответ на это сообщение в блоге: http://www.simonecarletti.com/blog/2009/02/capistrano-uploads-folder/

У меня три вопроса:

  1. Кто-нибудь может подтвердить, работает ли там рецепт?
  2. Куда и как мне положить этот рецепт?
  3. У меня есть две папки, которые должны оставаться в каждой ревизии: / products и / public / images / site_images, какой рецепт мне следует использовать, чтобы достичь этого?

У меня почти нулевой опыт работы с Capistrano, и все, что я мог сделать до сих пор, это просто cap deploy и cap deploy: cold, поэтому сценарий, который я мог бы просто скопировать и вставить, был бы очень признателен.

Спасибо


person jaycode    schedule 13.05.2010    source источник
comment
Я хотел бы знать, как распространить скрипт на множество папок. Любая идея?   -  person Ben Orozco    schedule 09.04.2011
comment
нет .. извините, я перестал использовать capistrano и размещаю все свои приложения на heroku   -  person jaycode    schedule 18.04.2011


Ответы (2)


  1. Да, сейчас использую в своих проектах.

  2. Вы можете просто добавить код в конец файла deploy.rb

  3. Если продукты находятся за пределами общедоступной папки, вы не можете связать их с общедоступной стороны. Кроме того, ожидается, что общедоступные / изображения уже будут зарегистрированы в вашем репозитории SCM.

В рецепте предполагается, что вы хотите иметь полностью новую папку, доступную с публичной стороны, для размещения загруженных пользователем документов. Папку следует исключить из конфигурации SCM, чтобы предотвратить случайные коммиты. Вам следует избегать использования папки public / images для внешних загруженных файлов, иначе у вас будет много головных болей при попытке синхронизировать конфигурацию разработки, управляемую SCM, с общедоступным состоянием.

person Simone Carletti    schedule 13.05.2010
comment
Привет, спасибо за ответ на это (и вау! От самого автора этого поста). Для №3: я знаю, что это не может быть связано с публичной стороной, это действительно должно быть так. Мой вопрос: что мне нужно изменить в рецепте, чтобы разрешить две папки? Могу ли я просто изменить его на: task: symlink,: except = ›{: no_release =› true} do run rm -rf # {release_path} / public / images run ln -nfs # {shared_path} / images # {release_path} / public / images run rm -rf # {release_path} / products run ln -nfs # {shared_path} / products # {release_path} / products end Спасибо! - person jaycode; 13.05.2010
comment
Привет, снова, это не работает, он удалил папки, но ничего не делает. Может я что то не так сделал? - person jaycode; 13.05.2010

Так я и сделал в итоге, ручным подходом

Я надеюсь, что это поможет всем ранним программистам:

1. cd to releases to find out folder to synchronize
cd /home/yourapp/rails_apps/main/releases/

2. find the folder to sync, one level above last folder shown with ls
REMEMBER!
With ls, the folder list goes as follows:
folder1    folder5
folder2    folder6
folder3    folder7
folder4    folder8

So in this case, copy from folder7

3. copy the folders
To copy images
rsync -av --stats --progress /home/yourapp/rails_apps/main/releases/20100517183232/public/images/ /home/yourapp/rails_apps/main/current/public/images/

To copy products
rsync -av --stats --progress /home/yourapp/rails_apps/main/releases/20100517183232/products/ /home/yourapp/rails_apps/main/current/products/

Хотите знать, можно ли их как-то автоматизировать?

person Community    schedule 15.05.2010