Git WebHook (PHP) no puede acceder al entorno ruby, ejecutando jekyll como usuario apache

Tengo un gancho post-merge en mi repository de git que solo ejecuta el command jekyll .

Cuando ejecuto git pull , la post-merge ejecuta sin problemas.

Sin embargo, he configurado un file PHP que actuará como un WebHook para el control remoto:

 $pull = `cd .. && git pull`; echo $pull; 

Cuando accedo a este file, el git pull se ejecuta ( después de algunos problemas iniciales ) y es exitoso. Sin embargo, por alguna razón falla la post-merge . Si miro dentro de mi Apache error_log , encuentro el siguiente error:

.git/hooks/post-merge: line 5: jekyll: command not found

Esto es extraño, teniendo en count que post-merge ejecuta con éxito a jekyll cuando hago un manual git pull través de SSH.

Si utilizo la ruta completa al ejecutable como se sugiere aquí , aparece este error en mi error_log :

/usr/bin/env: ruby_noexec_wrapper: No such file or directory

Instalé Ruby a través de RVM.

¿Cómo es posible hacer que el usuario apache ejecute jekyll sin problemas?

Editar: Aquí está mi post-merge actual:

 #!/bin/sh unset GIT_DIR source /usr/local/rvm/environments/ruby-1.9.3-p194 /usr/local/rvm/gems/ruby-1.9.3-p194/bin/jekyll echo "Deployed!" 

Cuando ejecuto esto como el usuario de apache , ahora obtengo este error:

Node.js está instalado.

Creo que este error es muy claro:

 jekyll: command not found 

deberías usar la ruta completa a tu command jekyll .

 whereis jekyll 

luego ejecuta el command con la ruta completa como:

 /usr/local/bin/jekyll --params 

Aquí hay una solución para el problema ruby_noexec_wrapper .

/ usr / bin / env ruby_noexec_wrapper falla con ningún file o directory

Editar:

 Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available 

ExecJS y no pudo encontrar un time de ejecución de JavaScript

Debido a que estaba usando RVM, tuve que searchlo directamente en lugar de Ruby. No estoy seguro por qué, pero está funcionando ahora.

Mi post-merge ve así:

 #!/bin/bash unset GIT_DIR /usr/local/rvm/bin/rvm use 1.9.3 /usr/local/rvm/gems/ruby-1.9.3-p194/bin/jekyll echo "Deployed!" 

No es perfecto: rvm hace eco de una carga de cosas que no quiero, pero funciona.

Solucioné este problema agregando lo siguiente a mi file ~/.bash_profile :

 source ~/.bashrc 

El instalador rvm ya debería haber agregado

 [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function* 

Agregué la línea source sobre esto y solucionó estos problemas.