¿Cómo minimizo mi código fuente antes de la implementación?

Estoy implementando un proyecto de php desde git mediante el uso de capistrano. Actualmente estoy minificando mi javascript (usando jammit) y css (usando yui) a través de algunas tareas de capistrano. El problema que veo es que estoy haciendo esta minimización en los serveres de destino en lugar de una vez localmente pnetworkingespliegue de la base de código. La causa de preocupación es que cambié la minificación de javascript de yui a jammit y no quiero tener que instalar esta nueva gem de Ruby en múltiples serveres de producción cuando mis serveres de implementación ya la tienen instalada. Henetworkingé el file capistrano de otro desarrollador, por lo que no estoy 100% claro en el process de cuándo se revisa el código y cuándo se envía al server remoto, y en qué tarea debo engancharme.

Mi idea inicial es hacerlo before "deploy" pero nuevamente, no estoy seguro de que tenga el código fuente disponible para actuar.

La respuesta corta es "usted no". deploy llamadas hook deploy: update_code

deploy: update_code, {: except => {: no_release => true}}

Copia tu proyecto a los serveres remotos. Esta es la primera etapa de cualquier implementación; mover su código actualizado y activos a los serveres de implementación. Raramente llamará a esta tarea directamente, sin embargo; en su lugar, debe llamar a la deploy' task (to do a complete deploy) or the actualización' (si desea realizar la tarea `restart 'por separado).

Deberá asegurarse de establecer la variable: scm en el software de control de origen que está utilizando (por defecto es: subversión), y la variable: deploy_via a la estrategia que desea usar para implementar (por defecto: checkout).

Que hace lo siguiente de una sola vez:

  1. Código de pago
  2. Código de la cremallera
  3. mover el código al server remoto
  4. limpiar el código local

(con algunas variaciones según la configuration de implementación).

Sin embargo, pude evitar esto al utilizar los commands de descarga y carga.

 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}" 

No me gusta, ya que no es tan limpio, pero hace el trabajo de la manera que necesito para hacerlo.