Ruby と mysql2 のような基本的な gem セットがインストールされているサーバーがあり、capistrano がインストールされており、SSH2 を使用してリモート サーバー (PHP サーバー)から Ruby スクリプトをトリガーしようとしています。私のスクリプトは Ruby サーバー上で問題なく実行されていますが、ssh2 を使用してリモート サーバーから同じスクリプトを実行しようとすると、その 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
リモートサーバーからルビースクリプトを簡単に実行するにはどうすればよいですか。