7

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

4

4 に答える 4

12

私は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 $*

どちらも機能します。前者のアプローチは少しハックが少ないと思います。

于 2008-09-17T08:54:05.643 に答える
2

必要なことを行う前に(特にrubygemsを必要とする前に)、次のことができます。

ENV['GEM_HOME'] = '/foo'

これにより、このプロセス内の環境変数が変更されます。

于 2008-09-17T04:30:03.547 に答える
2

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

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

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

于 2008-12-12T16:39:51.530 に答える
1

私もこの問題に遭遇しました。残念なことに、PassengerはSetEnvapache ディレクティブを使用して設定された値をパススルーしないようです。

おそらく、environment.rb または boot.rb で環境変数を設定できる可能性があります (Rails アプリについて話していると仮定します。私は Rack に精通していませんが、おそらく同様の機能を備えていると思われます)。

于 2008-09-17T03:22:09.887 に答える