To trochę trudne, ja też próbuję to zrobić (java nie działa poprawnie na moim serwerze, więc wdrożenie nie powiedzie się).
Problem polega na tym, że Capifony jest wdrażany z repozytorium kontroli kodu źródłowego, a zwykle aktywa po cenach dumpingowych nie znajdują się w repozytorium (i nie powinny).
Domyślam się, że jedynym sposobem na zrobienie tego jest stworzenie zadania Capistrano (Capifony bazuje na Capistrano), które zrzuci zasoby i zsynchronizuje je na serwerze.
Edit: Oto moja próba Edit: To działa, używam go od czasu, kiedy odpowiedział na pytanie.
Jestem pewien, że istnieje wiele możliwych usprawnień, nie jestem facetem z rubinem, nie jestem też facetem od skryptów.
W swojej deploy.rb można dodać dwa zadania:
before "deploy:update_code", "deploy:dump_assetic_locally"
after "deploy:update_code", "deploy:rsync_local_assets_to_server"
a kod związany do tych zadań (w tym samym pliku):
namespace :deploy do
task :dump_assetic_locally, :roles => :web do
run_locally "php app/console assetic:dump --env=prod"
end
task :rsync_local_assets_to_server, :roles => :web do
finder_options = {:except => { :no_release => true }}
find_servers(finder_options).each {|s| run_locally "rsync -az --delete --rsh='ssh -p #{ssh_port(s)}' #{local_web_path}/js/ #{rsync_host(s)}:#{release_path}/web/js/" }
find_servers(finder_options).each {|s| run_locally "rsync -az --delete --rsh='ssh -p #{ssh_port(s)}' #{local_web_path}/css/ #{rsync_host(s)}:#{release_path}/web/css/" }
end
def local_web_path
File.expand_path("web")
end
def rsync_host(server)
:user ? "#{user}@#{server.host}" : server.host
end
def ssh_port(server)
server.port || ssh_options[:port] || 22
end
end
Wypróbowałeś moje rozwiązanie? Uważam, że jest to mój najlepszy wkład do S.O., więc byłbym zadowolony, gdyby został zaakceptowany, jeśli zadziałał :-) – Julien