Как сделать так, чтобы Rails caches_page выдерживал развертывание capistrano? - PullRequest
4 голосов
/ 09 марта 2010

Можно ли настроить Rails так, чтобы кэши, созданные с помощью caches_page, выдерживали развертывание Capistrano? Т.е. можно ли настроить кеш для сохранения в общем каталоге, а не в общем каталоге?

Ответы [ 3 ]

4 голосов
/ 09 марта 2010

Принятый ответ - ОК, но, как правило, лучше не копировать все данные при развертывании, а просто символическую ссылку на папку кэша.

Таким образом, вы можете создать папку в каталоге shared / и создать символическую ссылку на нее при развертывании, например:

namespace :deploy do
   desc "Link cache folder to the new release"
   task :link_cache_folder, :roles => :app, :on_error => :continue do
     run "ln -s #{shared_path}/cache #{latest_release}/public/cache"  
   end
end

before "deploy:symlink", "deploy:link_cache_folder"
1 голос
/ 09 марта 2010

Capistrano на самом деле не имеет отношения к Rails, он просто широко используется сообществом Rails для развертывания. Так что нет, вы не можете "настроить Rails", чтобы делать то, что вы хотите. Что вы можете сделать, это добавить задачу в ваш Capfile, которая запускает команды оболочки, чтобы скопировать кеш в новое развертывание, прежде чем он будет обозначен как «текущий».

namespace :deploy do
   desc "Copy cache to the new release"
   task :cache_copy, :roles => :app, :on_error => :continue do
     on_rollback {
       run "rm -rf #{latest_release}/public/cache"
     }

     run "cp -a #{current_path}/public/cache #{latest_release}/public"  
   end
end

before "deploy:symlink", "deploy:cache_copy"

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

0 голосов
/ 10 февраля 2013

Я обнаружил, что этого было достаточно, чтобы каталог public / cache имел ссылку на общий ресурс:

set :shared_children, shared_children + ["public/cache"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...