1

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

リモートサーバーからルビースクリプトを簡単に実行するにはどうすればよいですか。

4

1 に答える 1