2016-02-18 4 views
0

У меня есть приложение для рельсов, и я использую Capistrano в качестве развертывающего драгоценного камня.Как установить подкаталоги в Capistrano?

Мой файл deploy.rb имеет это:

set :application, 'appname' 
set :repo_url, '[email protected]:someone/some_app.git' 
set :linked_files, fetch(:linked_files, []).push('config/database.yml', 'config/secrets.yml', 'secrets.json') 
set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system', 'public/uploads', 'public/assets/') 
set :rvm_ruby_version, '[email protected]' 

Проблема заключается в том, что не все мои активы находятся в папке приложения, некоторые из них в общей папке, так как я использую много кода шаблона , Внутри папки public/assets есть много подкаталогов, необходимых для запуска приложения. Помещение «public/assets» в опции linked_dirs только символизирует эту конкретную папку и вручную записывает все подкаталоги внутри, кажется, ужасное решение. Как сообщить Capistrano включить все (даже подкаталоги) в папку в развертывании?

ответ

1

Хороший вопрос. Я вижу пару возможностей, все способы обойти основную проблему, которую вы должны определить каждую отдельную папку.

  1. Проверьте, действительно ли вам нужно public/assets. Недостатком их совместного использования является то, что при развертывании новой версии приложения с измененными активами старые активы исчезают. Для публичного приложения это может быть проблемой. Если это внутреннее приложение или у вас есть CDN стиля Akamai/Cloudflare перед его кешированием старых файлов, это может и не быть.
  2. Переместите неавтогенерируемые активы в другую папку, возможно, public/static_assets. Они также будут доступны.
  3. Оборотная сторона - move the Sprockets managed assets to a different folder.
  4. Подумайте, как заставить Sprockets на самом деле управлять этим кодом, так что все это заканчивается public/assets.

Есть, вероятно, другие способы, но, надеюсь, это либо предлагает решение, либо дает вам отправную точку для выхода.

+0

Я думаю, что самый простой вариант - не разделять активы, спасибо! –