我有一个服务器,ruby和基本宝石设置如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>';
如果我尝试在没有红宝石路径的情况下运行此操作
bash ruby command not found
任何建议如何从远程服务器简单地执行我的ruby脚本。
答案 0 :(得分:0)
这听起来像是无法正确设置RVM而不是其他任何东西。
从那里改编:
# Assumes that 2.2.0 is already fully-installed under RVM.
rvm --default use ruby-2.2.0
这需要为您登录的用户运行。您可能希望阅读并理解该答案,以确保获得所需。
将宝石安装到默认的红宝石可能要简单得多......