У меня есть сервер, на котором установлены рубины и базовые драгоценные камни, такие как mysql2, capistrano, и я пытаюсь запустить мой ruby-скрипт с удаленного сервера (PHP сервер) с использованием SSH2. Мой скрипт работает на ОК на сервере Ruby, но когда я пытаюсь сделать то же самое с удаленного сервера, используя ssh2, я не могу запустить этот рубиновый скрипт.Ошибка при запуске рубинового скрипта и использовании gems с использованием ssh2 php с удаленного сервера
Для тестирования я написал простые сценарии, которые просто печатают оператор, и он работает, когда мне нужно пройти абсолютный путь, где установлен рубин.
Но теперь для меня очень утомительно получить путь для каждого камня, установленного для моего рубинового скрипта. Ниже ошибка
"/home/user/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- sshkit (LoadError)
"/home/user/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- mysql2 (LoadError)
Ниже сценарий, который я пытаюсь выполнить на моем PHP сервере
$ssh = new Net_SSH2('ip');
if (!$ssh->login('user', 'password')) {
exit('Login Failed');
}
echo '<pre>';
print_r($ssh->exec('/home/user/.rvm/rubies/ruby-2.2.0/bin/ruby /home/user/deployment/crm/crm.rb'));
echo '</pre>';
Если я пытаюсь запустить это без рубинового пути я получаю
bash ruby command not found
Любые предложения, как я могу просто выполнить свой рубиновый скрипт с удаленного сервера.
Интересно, если бы лучше работать с PTY или читать()/запись(): HTTP: //phpseclib.sourceforge .net/SSH/pty.html – neubert