Despliegue a linode a través de capistrano usando git en una máquina de Windows

Estoy intentando implementar vía capistrano y git en una máquina de Windows sin mucho éxito. Me encuentro con el "Error de demasiados arguments". Alguien más tuvo un problema similar y publicó una solución en 2010, pero esta solución no funciona para mí. Está configurado para implementar desde la máquina local a través de "set: deploy_via,: copy".

Aquí está el post de error detallado:

$ cap staging deploy triggering load callbacks * executing `staging' triggering start callbacks for `deploy' * executing `multistage:ensure' * executing `uploads:register_dirs' * executing `deploy' * executing `deploy:update' ** transaction: start * executing `deploy:update_code' executing locally: "git ls-remote git@github.com:username/_app.git deve lopment" command finished in 2408ms * getting (via checkout) revision 121e566c349a1406cba1936abeda49109de7fd78 to C:/Users/myname/AppData/Local/Temp/20120329203009 executing locally: git clone git@github.com:user/_app.git C:/Users/ username/AppData/Local/Temp/20120329203009 && cd C:/Users/username/AppData/Local/Temp/ 20120329203009 && git checkout -b deploy 121e566c349a1406cba1936abeda49109de7fd7 8 Too many arguments. 

¿Alguna idea de lo que estoy haciendo mal?

Bueno, estoy en el mismo caso.

Lo que he descubierto es que mi Windows 7 64 bits se reconoce como una RUBY_PLATFORM diferente de la del caso planeado. El mío es el 'i386-mingw32' RUBY_PLATFORM.

Si lees el 'base.rb' alnetworkingedor de la línea 53, está la condición

 if 'RUBY_PLATFORM =~ /win32/' 

Entonces, en mi caso, no tiene éxito. Cambio la línea así:

 if 'RUBY_PLATFORM =~ /win32/' || RUBY_PLATFORM =~ /i386-mingw32/ 

Y está bien

Mantuve el código escrito por Railsblogger. (con una actualización para mostrar el time de ejecución)

Entonces, ahora, es así:

  # A wrapper for Kernel#system that logs the command being executed. def system(*args) cmd = args.join(' ') result = nil if RUBY_PLATFORM =~ /win32/ || RUBY_PLATFORM =~ /i386-mingw32/ cmd = cmd.split(/\s+/).collect {|w| w.match(/^[\w+]+:\/\//) ? w : w.gsub('/', '\\') }.join(' ') # Split command by spaces, change / by \\ unless element is a some+thing:// # code from http://lifeisrails.wordpress.com/2010/03/25/capistrano-deploy_via-copy-from-gitwindows/ if cmd =~ /\s&&\s/ && cmd =~ /^git\s+clone/ cmd1, cmd = cmd.split(" && ", 2) logger.trace "executing locally: #{cmd1}" elapsed = Benchmark.realtime do result = super(cmd1) end logger.trace "command finished in #{(elapsed * 1000).round}ms" result end cmd.gsub!(/^cd /,'cd /D ') # Replace cd with cd /D cmd.gsub!(/&& cd /,'&& cd /D ') # Replace cd with cd /D logger.trace "executing locally: #{cmd}" elapsed = Benchmark.realtime do result = super(cmd) end else logger.trace "executing locally: #{cmd}" elapsed = Benchmark.realtime do result = super end end 

Espero que ayude !!

Dime si funciona para ti ?

Y … si no está bien, puede probar para mostrar su 'RUBY_PLATFORM', agregando una línea antes de la condición como

 logger.trace RUBY_PLATFORM