乘客不承认本地安装的宝石,使用包装好的宝石

时间:2010-10-13 07:37:53

标签: ruby-on-rails passenger

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

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(结果是正常运行的应用程序)。

有什么想法吗?

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

如果您要安装以普通用户(非root用户)身份登录或未使用sudo登录的gem,您的gem将进入主目录中的.gems文件夹(例如/home/matt/.gems })和乘客找不到它们。

您可以将它们安装为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