乘客不承认本地安装的gem,与打包的gem一起工作

这是一个生产服务器。 我安装了Passenger,它在大多数情况下都能正常工作。 但是,我总是要把gem打包成项目。 如果我不这样做,我收到此错误消息:

Missing the Rails 2.3.8 gem. Please `gem install -v=2.3.8 rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed. 

gem list –local返回rails 2.3.8以及2.3.5所以gem实际上并没有丢失。 由于我无法解决此问题,因此我会在每个项目中都包含rails gem(结果是正常运行的应用程序)。

有任何想法吗?

PS我确实尝试了错误消息的建议,我的配置是要求2.3.8我已安装

确保使用与Passenger相同的用户权限安装/运行gem命令。

默认情况下,Passenger在具有超级用户权限的Apache内部运行。 如果您键入gem install ,Gems将保存在您的用户文件夹中,除非您是root用户。

如果您正在安装以普通用户(非root用户)登录或未使用sudo登录的gem,您的gem将进入.gems目录中的.gems文件夹(例如/home/matt/.gems ),而Passenger无法找到它们。

您可以将它们安装为root / sudo,也可以将本地目录添加到GEM_HOME / GEM_PATH中。 不确定这是否是最好的解决方案,但我把它放在我的应用程序中的config/environment.rb的顶部:

 if ENV['RAILS_ENV'] == 'production' ENV['HOME'] = "/home/matt" ENV['GEM_HOME'] = "/home/matt/.gems" ENV['GEM_PATH'] = "/home/matt/.gems" end