Questo è un po 'complicato, sto anche cercando di farlo (java non funziona correttamente sul mio server, quindi la distribuzione fallisce).
Il problema è che Capifony distribuisce da un repository di controllo di origine e in genere le risorse scaricate non si trovano nel repository (e non dovrebbero).
Quindi immagino che l'unico modo per farlo sia quello di creare un'attività Capistrano (Capifony è basata su Capistrano) che scaricherà le risorse e le sincronizzerà sul server.
Edit: Ecco il mio tentativo Edit: funziona, ho usato da quando ho risposto alla domanda.
Sono sicuro che ci sono molti miglioramenti possibili, non sono un ragazzo rubino, non sono neanche un ragazzo di sceneggiatura.
Nel vostro deploy.rb è possibile aggiungere due compiti:
before "deploy:update_code", "deploy:dump_assetic_locally"
after "deploy:update_code", "deploy:rsync_local_assets_to_server"
E il codice associato a tali compiti (nello stesso file):
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
Hai provato la mia soluzione? Credo che sia il mio miglior contributo a S.O., quindi sarei felice di averlo accettato se funzionasse :-) – Julien