Nginx的乘客找不到导轨2.3.8宝石

时间:2010-09-08 15:30:58

标签: ruby-on-rails ruby nginx passenger

我一直试图与乘客一起设置nginx几天,并继续遇到问题。当我使用浏览器访问我的Rails应用程序时,它会显示: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,则会显示:rails (3.0.0, 2.3.8, 2.3.5)

有趣的是,当我在同一台机器上使用Apache时,乘客会发现我的红宝石很好!但我想尝试使用nginx,因为Apache并没有按照我的意愿行事。

该机器是Ubuntu 10.04服务器

  • which ruby显示:/usr/local/bin/ruby(REE)
  • 这些是nginx.conf中的乘客指令:
    • passenger_root /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.15; passenger_ruby /usr/local/bin/ruby;

2 个答案:

答案 0 :(得分:0)

作为检查,您确定您的乘客是否安装在正确版本的红宝石中。基本上

这两颗红宝石都有独立的宝石,这意味着你必须将另一颗宝石安装在一起......

检入/usr/local/lib/ruby/gems/1.8/gems目录以查看是否存在rails 2.3.8。你需要在这个红宝石中安装它。

两个红宝石都有单独的gem bin文件供安装..

可能/ usr / bin / gem用于系统ruby  和/ usr / local / bin / gem用于安装REE

答案 1 :(得分:0)

@Nik Rishav是正确的,因为在系统Ruby旁边安装Ruby Enterprise Edition(REE)时必须要小心。错误地安装REE会导致一些非常奇怪的事情发生。

虽然Rails 3.0可能是导致问题的原因,但我的直觉告诉我,您的真正问题是安装REE时错过了一步。但是,只是在这种情况下这不起作用,快速谷歌搜索将向您展示任何显示how to host a Rails app with Phusion Passenger for Nginx的好教程。好吧,让我们试试吧,我们吧!

REE与系统Ruby一起运行良好,但您必须将其安装到自己的目录中。例如:

/opt/ruby-enterprise-X.X.X/bin/ruby

您的另一个选择是仅安装REE,但这可能不是您的选择。我怀疑当Nginx运行时,它确实找到了你指定的REE。你是否从REE堆栈为Nginx安装了Passenger?

/opt/ruby-enterprise-X.X.X/bin/passenger-install-apache2-module

如果还没有,你可能想看一下。我假设你做到了。

根据您的描述,您似乎没有告诉REE在哪里可以找到您的宝石。为此,您需要将REE设置为默认的Ruby解释器。为此,请在文件 / etc / environment 中添加一个条目。在Ubuntu上,目录是 / etc / environment 。将REE的bin目录添加到PATH环境变量中,如下所示:

PATH="/opt/ruby-enterprise-x.x.x/bin:/usr/local/sbin:/usr/local/bin"

首先在PATH中放置REE会将其设置为默认的Ruby解释器。

然后重启Nginx,如下:

sudo /etc/init.d/nginx restart

希望这会有所帮助。我遇到了部署问题,这真的令人沮丧。不希望任何人......祝你好运!