Problema de deployment de los novatos capistrano carriles (no se puede encontrar git en el path)

Estoy usando: Rails 3, ruby ​​1.9.2 y tratando de implementar usando capistrano. Cuando ejecuto la implementación de cap: check, capistrano me dice que no puede encontrar git en mi server de implementación (ver a continuación).

¿Alguna idea sobre lo que estoy haciendo mal?

Aquí está mi configuration.

  • Tengo un git repo @ github
  • Tengo una computadora portátil con una copy local actualizada del repository github
  • Tengo un server de "producción" local (192.168.0.103) donde la aplicación de producción debe implementarse
  • Estoy ejecutando todos los commands del repository local en mi computadora portátil (no en el server de producción)

Si ejecuto cap deploy:setup , mi file deploy.rb agrega con éxito los directorys "releases" y "shanetworking" en mi server de producción (también conocido como 192.168.0.103).

Si ejecuto el command cap deploy: check, falla con el post de error de `git 'no se pudo encontrar en la ruta (192.168.0.103).

Lo que es extraño (al less para mí) es que git definitivamente está instalado en 192.168.0.103 y el command que se usa para ver si git está ahí (que git) funciona cuando me conecto a 192.168.0.103.

Entonces, obviamente estoy haciendo algo mal (¿tal vez en el file deploy.rb?)

Aquí hay una versión desinfectada del file deploy.rb

 default_run_options[:pty] = true set :application, "myapp" set :repository, "git@github.com:xxxxxxx/myapp.git" set :user, "abcde" #username that's used to ssh into 192.168.0.103 set :scm, :git set :scm_passphrase, "xxxxxxxx" set :branch, "master" set :deploy_via, :remote_cache set :deploy_to, "/Users/abcde/www" role :web, "192.168.0.103" role :app, "192.168.0.103" 

Aquí está el resultado del deployment de tapa: verificación

  * executing `deploy:check' * executing "test -d /Users/abcde/www/releases" servers: ["192.168.0.103"] Password: [192.168.0.103] executing command command finished * executing "test -w /Users/abcde/www" servers: ["192.168.0.103"] [192.168.0.103] executing command command finished * executing "test -w /Users/abcde/www/releases" servers: ["192.168.0.103"] [192.168.0.103] executing command command finished * executing "which git" servers: ["192.168.0.103"] [192.168.0.103] executing command command finished The following dependencies failed. Please check them and try again: --> `git' could not be found in the path (192.168.0.103) 

De acuerdo, creo que lo descubrí.

Básicamente estaba teniendo el mismo problema que el descrito aquí: http://groups.google.com/group/capistrano/browse_thread/thread/50af1daed0b7a393

Aquí hay un extracto de elección:

Intento implementar una aplicación en un entorno compartido en el que instalé git. He agregado el path a bashrc, pero esto funcionaría solo en un bash interactivo. Cuando la tapa está iniciando session, no ejecutará bash . Si ejecuto implementar: compruebe que falla por -> `git 'no se pudo encontrar en la ruta (example.com) Si configuro: scm_command," / home / user / opt / bin / git "el problema se resuelve con el command deploy: check, pero cuando ejecuto deploy: cold, falla porque intenta ejecutar / home / user / opt / bin / git localmente y ni siquiera puedo poner git allí, porque uso Windows en mi pc .

agregando: scm_command, "path / to / my / git" corrigió el problema, aunque no estoy al 100% de que este sea el enfoque correcto a seguir.

Yo recomendaría usar:

 default_run_options[:env] = {'PATH' => '/home/user/opt/bin/git:$PATH'} 

Esto permitirá ajustar la variable de entorno del sistema PATH (y de ellos más si es necesario) para que no solo se solucione el problema "Capistrano no puede encontrar el SCM" sino también cualquier otro problema similar con Capistrano que no se ejecute en bash interactivo (no se ejecute el .bashrc etc.).