Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 带Nginx的乘客找不到rails 2.3.8 gem_Ruby On Rails_Ruby_Nginx_Passenger - Fatal编程技术网

Ruby on rails 带Nginx的乘客找不到rails 2.3.8 gem

Ruby on rails 带Nginx的乘客找不到rails 2.3.8 gem,ruby-on-rails,ruby,nginx,passenger,Ruby On Rails,Ruby,Nginx,Passenger,几天来,我一直在尝试与乘客一起设置nginx,但一直遇到问题。当我使用浏览器访问Rails应用程序时,它会显示:缺少Rails2.3.8gem。请gem install-v=2.3.8 rails,在config/environment.rb中更新您已安装的rails版本的rails\u gem\u版本设置,或者注释掉rails\u gem\u版本以使用已安装的最新版本 如果我在终端中键入gem list,它会显示:rails 3.0.0、2.3.8、2.3.5 有趣的是,当我在同一台机器上与A

几天来,我一直在尝试与乘客一起设置nginx,但一直遇到问题。当我使用浏览器访问Rails应用程序时,它会显示:缺少Rails2.3.8gem。请gem install-v=2.3.8 rails,在config/environment.rb中更新您已安装的rails版本的rails\u gem\u版本设置,或者注释掉rails\u gem\u版本以使用已安装的最新版本

如果我在终端中键入gem list,它会显示:rails 3.0.0、2.3.8、2.3.5

有趣的是,当我在同一台机器上与Apache一起使用时,乘客会发现我的ruby gems很好!但是我想用nginx做实验,因为Apache并不是我想要的

这台机器是Ubuntu 10.04服务器

哪个ruby显示:/usr/local/bin/ruby-REE 以下是nginx.conf中的乘客指令: passenger_root/usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.15; 乘客_ruby/usr/local/bin/ruby;
作为检查,您是否确定您的乘客安装了正确版本的ruby。基本上

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

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

两个rubies都将有单独的gem bin文件用于安装

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

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

虽然Rails 3.0可能是您出现问题的原因,但我的直觉告诉我,您真正的问题是在安装REE时遗漏了一步。但是,如果这不起作用,快速的谷歌搜索将向您显示任何数量的优秀教程。好吧,让我们试一试,好吗

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

/opt/ruby-enterprise-X.X.X/bin/ruby
您的另一个选择是只安装REE,但这可能不是您的选择。我怀疑当Nginx运行时,它确实会找到您指定的REE。您是否从REE堆栈安装了适用于Nginx的乘客

/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"
将REE放在路径的第一位将把它设置为默认的Ruby解释器

然后重新启动Nginx,如下所示:

sudo /etc/init.d/nginx restart

希望这能有所帮助。我也遇到过部署问题,这确实令人沮丧。我不希望这发生在任何人身上…祝你好运

当我选中/usr/local/lib/ruby/gems/1.8/gems时,它显示了Rails2.3.8gem。当我输入'which gem'时,它会显示/usr/local/bin/gemhmm,这可能是rails 3+最新机架版本导致的问题。为了测试起见,请卸下rails 3和最新机架版本。。我会在我的机器上试试,然后告诉你。如果这不起作用。。试一下irc上的乘客,当我这样做的时候,我得到了:错过了轨道宝石。请gem install-v=rails几乎就像乘客在nginx下装载时ruby找不到我的gem一样。在apache2模式下,没有问题。哪种版本的Nginx和Passenger?我看到gem路径上有乘客2.2.15。你确定Passenger正确地从Nginx获得了所有相关的配置指令吗?嗯,也许我应该从虚拟机上从头开始,看看我是否可以完成所有步骤而不遗漏它们。我以为REE安装在我的机器上的/usr/local/bin/ruby,ruby安装在/usr/bin/ruby。我认为您删除ruby标准并单独尝试REE是正确的。这将使其减少到可能导致问题的移动部件。