2008-09-17 22 views
7

開発時にPassengerを設定しました(Mac OS X)、問題なく動作します。唯一の問題は後で来た:今私はカスタムGEM_HOMEとImageMagickバイナリが"/usr/local"にインストールされている。ソースとなるシェルrcファイルの1つにそれらを入れることができ、これはコンソールから生成されたプロセスの環境変数を解決します。乗客はどうですか?同じアプリケーションがこのように実行されたときに私の宝石を見つけることができません。Phusion Passengerアプリケーションの環境変数を設定する

+3

アップデート:旅客2.2.3以降、「SetEnvディレクティブがサポートされています:http://blog.phusion.nl/2009/06/17/phusion-passenger-223-released-bugfixedition/」。 ベンの回答から得た手法はとてもうまくいっていますが、今はもう使用する必要はありません(ほとんどの場合)。 – mislav

答えて

12

私は2つの解決策を知っています。最初のもの(hereと書かれています)は、manveruのものと本質的に同じです。あなたのコードで直接ENV変数を設定してください。

2番目は、Passengerが使用するRubyインタプリタのラッパーを作成し、here(passenger_with_rubyを探してください)と書かれています。要点はあなたが、は/ usr/binに/ ruby​​_with_env(あなたのApacheの設定にしてPassengerRubyをしてポイント)からなる実行ファイル作成することです:

#!/bin/bash 
export ENV_VAR=value 
/usr/bin/ruby $* 

両方の仕事を。前者のアプローチはちょっとハッキリしていないと思います。

+0

他の人が同じ問題を抱えている場合に備えて、 'chmod + x/usr/bin/ruby​​_with_env'。 –

+0

これは古い答えなので、私はちょうどこの答えがこの問題を扱うための推奨された方法であると確信しています。参考文献:http://blog.phusion.nl/2008/12/ 16 /通過環境変数/ルビー/フュージョン乗客/と:http://dev.mensfeld.pl/2011/09/phusion-passenger-and-environment-variables-with-ruby-rake-アプリケーション/ – Felixyz

+0

もっと最近、このように見えるcぶら下がった。 Phusion 4.0以降、Apacheディレクティブ 'PassEnv'と 'SetEnv'を使用できます:http://www.modrails.com/documentation/Users%20guide%20Apache.html#env_vars_passenger_apps – nielsbot

1

私もこの問題に遭遇しました。 appears PassengerはSetEnv apache指令を使用して設定したパススルー値を使用しません。これは残念です。

は、おそらくあなたのenvironment.rbにまたはboot.rbで環境変数を設定することが可能であるかもしれない(あなたがRailsのアプリの話をしていると仮定すると、私はラックに慣れていないんだけど、おそらく、それは同様の機能を持っている)

2

あなたがいずれかの操作を行う前には、あなたが行うことができます(特にRubyGemsのを必要とする前に)必要があります。

ENV['GEM_HOME'] = '/foo' 

これは、このプロセス内で環境変数を変更します。

2

コンピュータにroot権限がある場合、 "envvars"ファイルに必要な環境変数を設定でき、Apacheを起動する前にapachectlがこのファイルを実行することが分かりました。

envvarsは通常、apachectlが置かれているのと同じディレクトリにあります。Mac OS Xの場合、envvarsは/ usr/sbinにあります。見つからない場合は、apachectlスクリプトのソースを参照してください。

envvarsファイルを変更した後、Apacheを「apachectl -k restart」で再起動します。

関連する問題