我正在尝试将 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'
这里发生了什么?
编辑: gem 以 root 身份安装:
# 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 安装程序中的说明进行操作。还有其他想法吗?