Rails アプリケーション (開発では問題なく動作します) を運用サーバーにデプロイしようとしています。Apache、Passenger、および必要な gem をインストールして構成しました。Apache を再起動してサーバーに移動すると、次のエラーが表示されます。
Exception PhusionPassenger::UnknownError in PhusionPassenger::Railz::ApplicationSpawner (no such file to load -- money (MissingSourceFile))
gem list money
ショー:
*** LOCAL GEMS ***
money (3.0.5)
サーバー上のirb
セッション:
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'money'
=> true
この宝石は次の場合に必要ですconfig/environment.rb
:
require 'money'
何が起きてる?
編集:宝石はルートとしてインストールされました:
# ls -l /usr/lib/ruby/gems/1.8/gems/money-3.0.5/lib
total 8
drwx------ 2 root root 4096 Sep 2 10:26 money
-rw-r--r-- 1 root root 1284 Sep 2 10:26 money.rb
編集 2:そのロードブロッキングで成功しなかった後、Passenger は Ruby Enterprise Edition に合わせて作成されていることに気付いたので、それをインストールしてみました。その後、Ruby Enterprise のバージョンの gem を使用して、必要なすべての gem をインストールしました。Apache を再起動してサーバーに移動すると、次のようになります。
Exception LoadError in PhusionPassenger::Railz::ApplicationSpawner (no such file to load -- logger)
Rubyの古いバージョンでも新しいバージョンでも、ロガーを必要とすることに問題はありません。
# which irb
/usr/bin/irb
# irb
irb(main):001:0> require 'logger'
=> true
irb(main):002:0> exit
# /opt/ruby-enterprise-1.8.7-2010.02/bin/irb
irb(main):001:0> require 'logger'
=> true
パスまたはアクセス許可で何かが起こっているに違いありませんが、私は Passenger と Ruby Enterprise Edition の両方のインストーラーの指示に正確に従いました。他のアイデアはありますか?