Taski capistrano dla asset servera

Ma ktoś gotowe (i mógłby się podzielić) taski Capistrano do władowania całego statycznego kontentu na asset server?
Chodzi oczywiście o aplikacyjne js, css i obrazki, ażeby mogły być serwowane przez osobny serwer pod inną domeną (docelowo: przez inną maszynę).
Wrzucacie tam odpowiednie katalogi przez ssh, czy po prostu podmontowujecie z NFS?

Nie mam gotowych tasków, ale w jednym z projektów robimy to via rsync. NFS za szybki nie jest, kopiowanie wszystkiego po SSH też mało fajne. Rsync (również może działać via ssh) zrobi przyrostowy update więc dlatego go polecam.

Możesz również po prstu robić wdrożenie całej aplikacji na 2 serwery, i z tego drugiego tylko assety serwować jak jesteś leniwy, a wszystkie assety i tak są w gicie.

OK, dzięki, poradziłem sobie. Ponieważ i tak mamy po NFS katalog shared/ oraz i tak są w nim user-uploaded obrazki (żeby oba serwery aplikacyjne pracowały na tym samym), czyli załatwiamy to w ten sposób:

set :app_symlinks, %w(group_images user_avatars) desc "Symlinks the :app_symlinks directories from current/public to shared/public" task :symlink_public do if app_symlinks app_symlinks.each do |link| run "rm -rf #{release_path}/public/#{link}" run "ln -nfs #{deploy_to}/#{shared_dir}/public/#{link} #{release_path}/public/#{link}" end end end
to zrobiłem copypastę zmieniając treść samego zadania:

set :app_assets, %w(images javascripts stylesheets) desc "Syncs the :app_assets directories and links them from shared/public" task :symlink_assets do if app_assets app_assets.each do |link| run "mv #{release_path}/public/#{link} #{release_path}/public/_latest_#{link}" run "ln -nfs #{deploy_to}/#{shared_dir}/public/#{link} #{release_path}/public/#{link}" run "rsync -a --delete #{release_path}/public/_latest_#{link}/* #{deploy_to}/#{shared_dir}/public/#{link}/" run "rm -rf #{release_path}/public/_latest_#{link}" end end end
chociaż trochę mało koszerny ten kod (tzn. wydaje mi się, że mógłby być czystszy i ładniejszy).

Jeszcze jedno: jak nie zmieniając treści domyślnych tasków, takich jak deploy:update czy deploy:update_code, uniknąć ich uruchamiania dla pewnych ról (np. mam rolę “proxy” z paroma taskami wyłącznie dla owej roli i nie chcę, żeby capistrano wrzucało mi tam kod czy próbowało restartować unicorna – tam nawet gita nie ma)?

My właśnie robimy coś podobnego by uploady serwować.
Teraz w projekcie mamy trochę większy sajgon bo CSS i JS, obrazki z CSS jest wlaściwie pobierana z innego projektu i do konca nie wiemy jak to polaczyc. HTTPS wiec nie bardzo mozna zaciagac z innych domen. Ktoś spotkał się z czymś podobnym?