0

suコマンドを使用して別のユーザーの下で、別のスクリプトからrubyスクリプトを起動する最良の方法は何ですか?

ユニコーンを起動するための次のコマンドを含む bash スクリプトがあります。

sudo -u unicornuser sh -l -c "bundle exec unicorn_rails -E production -D"

このスクリプトはinit.dスクリプトであり、システムの起動時および手動でも実行されます。

問題は、システムのデフォルトの ruby​​ が 1.8 で、他の ruby​​ (1.9) が RVM で動作していることです。RVMでRubyを実行できるように上記のスクリプトを変更する必要があります(システム全体ではありません)

今、私はこの表記のために移行しました:

su -l -c "rvm use ruby-1.9.3-p125 && bundle exec unicorn_rails -E production -D" unicornuser

これは私にとってはうまくいきましたが、これを行うためのより良い方法があるに違いないと思います。

4

1 に答える 1

1

ラッパーを使用する必要があります。

rvm wrapper ruby-1.9.3-p125 ext_1.9.3 bundle

これにより が作成されるため$rvm_path/bin/ext_1.9.3_bundle、次を使用できます。

/full/path/to/rvm/bin/ext_1.9.3_bundle exec unicorn_rails -E production -D

/full/path/to/rvmからの出力に置き換えますecho $rvm_path

于 2012-06-14T13:18:14.593 に答える