3

アプリケーションに関する情報を表示するページを備えたsinatraアプリがあります。その一部は、ページの読み込み時にコマンドを実行することによって生成されます。ユニコーンで実行している場合は MacBook ですべて正常に動作し、ユニコーンで実行している場合は実稼働サーバーですべて正常に動作しますが、Apache/Passenger に切り替えると、突然コマンドが nil を返し始めます。

たとえば、私が使用するコミッターのリストを取得するには:

comitters = `cd /path/to/app && git shortlog -s -n`

これは、apache/passenger セットアップで実行するまで完全に機能します。

システムコマンドを無効にするパッセンジャー内のオプションはありますか?

4

1 に答える 1

1

問題は、システムがコマンドを探すために使用する $PATH 環境変数にあります。シェルから Unicorn を実行していませんか? したがって、Unicorn はシェルから $PATH を継承します。しかし、Phusion Passenger から開始されたアプリ プロセスは、Apache/Nginx から開始されます。これは、通常、シェルとはまったく異なる環境変数を持つシステム init サービスから開始されます。解決策についてはhttp://blog.phusion.nl/2008/12/16/passing-environment-variables-to-ruby-from-phusion-passenger/を参照してください。

于 2013-01-27T23:18:22.567 に答える