/ / lance le script ruby ​​de PHP avec des gemmes - php, ruby, pivotaltracker

exécuter le script ruby ​​de PHP avec des gemmes - php, ruby, pivotaltracker

J'essaie d'exécuter de PHP mon script Ruby. Quand je l’exécute en ligne de commande, c’est correct, mais quand je l’exécute depuis du code PHP, je ne peux pas utiliser de gems

voici mon script PHP

$rubyBin = "/usr/local/rvm/rubies/ruby-2.1.1/bin/ruby";
echo (shell_exec("$rubyBin server.rb 2>&1"));

et ceci est une réponse du serveur

file exists/usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require": cannot load such file -- pivotal-tracker (LoadError)
from /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require"
from server.rb:5:in `<main>"

mais nécessite "rubygems" fonctionne bien

Réponses:

0 pour la réponse № 1

La sortie indique que votre environnement utilise Ruby Version Manager (rvm). Votre environnement PHP utilise probablement une version de Ruby et / ou un Gemset différente de celle de votre environnement de ligne de commande.

La solution consiste à envelopper votre script Ruby dans un wrapper RVM en lançant la commande suivante:

rvm wrapper 2.1.1@commandline_gemet php server.rb

Assurez-vous de spécifier la version correcte de Ruby (voirListe rvm), Gemset (voir la liste de rvm gemset) et chemin d'accès à server.rb. Cela crée un exectubale de serveur php dans / usr / local / rvm / bin. Le wrapper prépare l'environnement Ruby demandé pour votre script. Par conséquent, si vous appelez cela à partir de votre script PHP, tout devrait fonctionner comme prévu.