私は開発中のPassenger(Mac OS X)をセットアップしましたが、問題なく動作します。唯一の問題は後で発生しました。カスタムGEM_HOME
パスとImageMagickバイナリがにインストールされてい"/usr/local"
ます。それらをソースとなるシェルrcファイルの1つに入れることができます。これにより、コンソールから生成されたプロセスの環境変数が解決されます。しかし、乗客はどうですか?この方法で実行すると、同じアプリケーションが私の宝石を見つけることができません。
4 に答える
私は2つの解決策を知っています。最初の(ここに記載されている)は、基本的にmanveruのものと同じです。コードに直接ENV変数を設定します。
2つ目は、Passengerが使用するRubyインタープリターのラッパーを作成することであり、ここに文書化されています(passenger_with_rubyを探してください)。要点は、以下で構成される実行可能ファイルである/ usr / bin / ruby_with_envを作成する(そしてApache構成でPassengerRubyを指すようにする)ことです。
#!/bin/bash
export ENV_VAR=value
/usr/bin/ruby $*
どちらも機能します。前者のアプローチは少しハックが少ないと思います。
必要なことを行う前に(特にrubygemsを必要とする前に)、次のことができます。
ENV['GEM_HOME'] = '/foo'
これにより、このプロセス内の環境変数が変更されます。
コンピューターにルート権限がある場合、必要な環境変数を「envvars」ファイルに設定すると、Apache を起動する前に apachectl がこのファイルを実行することがわかりました。
envvars は通常、apachectl が置かれているのと同じディレクトリにあります。Mac OS X では /usr/sbin にあります。見つからない場合は、apachectl スクリプトのソースを調べてください。
envvars ファイルを変更したら、「apachectl -k restart」で Apache を再起動します。
私もこの問題に遭遇しました。残念なことに、PassengerはSetEnv
apache ディレクティブを使用して設定された値をパススルーしないようです。
おそらく、environment.rb または boot.rb で環境変数を設定できる可能性があります (Rails アプリについて話していると仮定します。私は Rack に精通していませんが、おそらく同様の機能を備えていると思われます)。