これは少し注意が必要です。私もこれを実行しようとしています(Javaがサーバー上で正しく機能していないため、デプロイメントが失敗します)。
問題は、Capifonyがソース管理リポジトリからデプロイされ、通常、ダンプされたアセットがリポジトリにないことです(そして、そうすべきではありません)。
したがって、これを行う唯一の方法は、アセットをダンプしてサーバー上でrsyncするCapistranoタスク(CapifonyはCapistranoに基づいています)を作成することだと思います。
編集:これが私の試み
です編集:それは機能します、私は質問に答えてからそれを使用しています。
改善の余地はたくさんあると思います。私はルビーの男ではなく、シェルスクリプトの男でもありません。
deploy.rbには、次の2つのタスクを追加できます。
before "deploy:update_code", "deploy:dump_assetic_locally"
after "deploy:update_code", "deploy:rsync_local_assets_to_server"
そして、それらのタスクに関連付けられたコード(同じファイル内):
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