2

Passenger のインストールを (最終的に) バージョン 3 から 4 に更新したかったのですが、v3 で行ったように GEM_PATH 環境変数の設定に問題があります。

私の Apache 構成には、次の行があり、乗客に rvm gemsets の場所を伝えています (注@my_set):

SetEnv GEM_PATH "/.../.rvm/gems/ruby-1.9.3-p448@my_set:/.../.rvm/gems/ruby-1.9.3-p448@global"

これは Passenger v3 で問題なく動作します。ただし、バージョン 4 に切り替えると、アプリケーションの読み込みに失敗し、デバッグ ビューに次のように表示されます。

GEM_PATH = /.../.rvm/gems/ruby-1.9.3:/.../.rvm/gems/ruby-1.9.3-p448@global

これはシステムのデフォルトのようです。

setenv を使用して他の ENV 変数を設定すると機能します。たとえば、次の行を追加しました

SetEnv TEST_VAR "FOO"

私のApache構成に追加すると、パッセンジャーデバッグビューで問題なく表示されました:

TEST_VAR = "FOO"

Passenger が私の GEM_PATH 環境変数を何らかの形で具体的に上書きしているように感じます。私が知る限り、ドキュメントにはこれについての言及はありません。どんな考えでも大歓迎です。

4

2 に答える 2

1

これを別の方法で行うことができます。バージョン 3 または 4 の Rails を bundler で使用しているため、bundler ですべての gem をアプリケーション用に分離し、本番サーバーでそれらのコピーをアプリケーション フォルダーに配置することができます。その問題を行うには:

bundle install --deployment

詳細については、Bundler Deployment のドキュメントを参照してください。

RVM を Passenger 3 (4 に転送可能かもしれません) で gemset を使用して動作させる方法についても読むことができますが、私の意見では、bundler デプロイメントを使用する方がはるかに優れたオプションです。

于 2014-03-26T01:19:31.763 に答える