Хранение статических файлов на сервере при развертывании с Capistrano - PullRequest
6 голосов
/ 04 ноября 2008

Я загружаю файлы в папку public/files приложения Rails на постоянной основе через веб-интерфейс.

Я не хочу держать их в управлении исходным кодом, поскольку они занимают почти 2 ГБ, поэтому каждый раз, когда я делаю cap deploy, они сохраняют эти файлы в releases/ и заменяют каталог сохраненной первичной копией. в хранилище.

Мне интересно, как лучше всего хранить эти файлы на сервере, в каталоге current. Вот некоторые из моих идей:

  • Удалите каталог из системы контроля версий и замените его ссылкой на внешний каталог, который не управляется Capistrano.
  • Создайте задачу Capistrano, чтобы скопировать каталог в / tmp перед развертыванием, а затем скопировать его обратно в / public после завершения развертывания.

Есть ли стандартный способ сделать это?

Ответы [ 3 ]

7 голосов
/ 04 ноября 2008

Для будущей записи, это задача, которую я использовал для работы с общим каталогом:

task :link_shared_directories do     
  run "ln -s #{shared_path}/files #{release_path}/public/files"   
end    

after "deploy:update_code", :link_shared_directories   
6 голосов
/ 04 ноября 2008

Вы можете сделать файлы символической ссылкой на другой каталог на вашем компьютере, например, каталог / shared на том же уровне, что и / current и /releases.

Проверьте, что capistrano управляет каталогами / log и / tmp.

2 голосов
/ 20 октября 2013

Теперь мы можем просто использовать: connected_files в deploy.rb:

set :linked_files, %w{config/database.yml}

В этом случае файл [target_dir] /shared/config/database.yml должен существовать на сервере.

...