2011-12-28 5 views
2

gitからcapistranoを使用してphpプロジェクトをデプロイします。私は現在、私のjavascript(jammitを使って)とcss(yuiを使って)をいくつかのcapistranoタスクを使って既にミニナイズしています。私が見ている問題は、コードベースをローカルに事前に展開するのではなく、宛先サーバでこの縮小をやっていることです。懸念するのは、javascriptの縮小をyuiからjammitに切り替えて、デプロイメントサーバにすでにインストールされている場合に、この新しいruby gemを複数の実稼働サーバーにインストールする必要がないようにすることです。私はanohter開発者からcapistranoファイルを継承したので、コードがチェックアウトされたとき、リモートサーバーに送信されたとき、そしてどのような作業に取り掛かるべきかについては100%明確ではありません。デプロイメント前にソースコードを小さくするには

私の最初の考えはbefore "deploy"ですが、もう一度やり直すためのソースコードを用意しておきます。

答えて

1

短い答えは「あなたはしていません」です。 deployフック呼び出しは展開:update_code

展開:update_code、{:=> {除く:no_release =>真}}

コピープロジェクトのリモートサーバーへの。これはどの展開の第1段階です。更新されたコードとアセットをデプロイメントサーバーに移動します。ただし、このタスクを直接呼び出すことはほとんどありません。代わりに、deploy’ task (to do a complete deploy) or the更新タスクを呼び出す必要があります( `restart 'タスクを別々に実行したい場合)。

:scm変数を使用するソースコントロールソフトウェア(デフォルトは:subversion)に設定し、deploy_via変数を展開に使用する戦略に設定する必要があります(デフォルトは:チェックアウト)。一挙に以下のことを行い

  1. アウトコード
  2. ローカルコード

をクリーンアップ

  • リモートサーバにコード
  • 移動コードをジップアップ(展開設定に応じていくつかのバリエーションがあります)。

    ただし、 私はダウンロードとアップロードのコマンドを利用してこれを回避することができました。

    tmp_path = "/tmp/#{release_name}/public" 
    download "#{current_path}/public/javascripts", "#{tmp_path}/javascripts/":via => :scp, :recurisve => true 
    system "jammit -o #{tmp_path}/javascripts -C#{tmp_path}/javascripts/assets.yml" 
    upload "#{tmp_path}/javascripts/common.js", "#{current_path}/public/javascripts", :via => :scp 
    system "rm -rf #{tmp_path}" 
    

    それはかなりのようにきれいではないと私はそれを好きではないが、それは私がそれを成し遂げるために必要な方法を仕事を取得します。

  • 関連する問題