9

assetic:dumpCapifonyのデプロイでタイムアウトになる本番サーバーに問題があります(常にではありません)。

assetic:dumpローカルで実行することは問題ありません。また、別のステージング(それほど強力ではない)サーバーにデプロイすることもできます。

assetic:dumpこれを修正する(そしてデプロイをスピードアップする)ために、デプロイメントの前に実行して、それらのコンパイルされたアセットを残りのデプロイメントと一緒に送信することが可能かどうか疑問に思いました。

4

3 に答える 3

7

これは少し注意が必要です。私もこれを実行しようとしています(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
于 2012-12-11T19:24:36.797 に答える
0

このコマンドassetic:dumpは、現在の環境で使用可能なすべてのバンドルからアセットを取得し、それらをweb/bundles(または指示した場所に)配置します。これをローカルで実行してからファイルを移動するだけでも問題はありません。

オプションを指定してコマンドを実行し、env=prod本番環境で必要なすべてのバンドルが生成されるようにする必要があります。また、コマンドを実行する前にクリーンアップしてweb/bundles、開発でのみ使用されるバンドル(プロファイラーなど)のアセットが存在しないようにすることもできます。

コマンドをローカルで実行してテストを実行し、本番環境からアセットをダウンロードして比較します。cssとjsがクライアントに提供され、異なるマシンで生成されたときに異なるはずがないため、現時点では何も考えられませんが、間違っている可能性があります。

于 2012-09-05T07:00:12.380 に答える
-1

非常に簡単に追加できますdeploy.rb

set :dump_assetic_assets, true
于 2014-08-02T16:56:29.550 に答える