我有一个服务器,上面安装了 ruby 和基本 gems 集,如 mysql2,capistrano,我正在尝试使用 SSH2 从远程服务器(PHP 服务器)触发我的 ruby 脚本。我的脚本在 ruby 服务器上运行正常,但是当我使用 ssh2 从远程服务器尝试相同的操作时,我无法运行该 ruby 脚本。
为了进行测试,我编写了一个简单的脚本,它只打印一个语句,当我必须传递安装 ruby 的绝对路径时,它就可以工作。
但是现在为我的 ruby 脚本安装的每个 gem 获取路径对我来说非常乏味。下面是错误
"/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>';
如果我尝试在没有 ruby 路径的情况下运行它,我会得到
bash ruby command not found
任何建议我如何简单地从远程服务器执行我的 ruby 脚本。