2011-11-28 74 views
2

我的同事有一个使用Nginx,Phusion Passenger和RVM的Rails开发环境。当他尝试加载一个项目时,它抱怨需要不同版本的Ruby的比什么是可用:如何让Phusion Passenger使用正确版本的Ruby?

The given ruby environment requires ruby-1.9.2-p290 (versus ree-1.8.7-2011.03) (RVM::IncompatibleRubyError) 

我们从稀土切换到MRI红宝石。以下是我目前检查的内容:

  • .rvmrc在该目录中是rvm use --create [email protected]
  • rvm list default回报ruby-1.9.2-p290
  • 我们改变了出来,放回目录,发现它说,它的使用1.9.2
  • 为nginx的配置文件设置passenger_rootpassenger_ruby正确的,据我可以告诉
  • Passenger已经用Ruby 1.9.2编译。

还有别的东西我失踪了吗?

+0

这个问题最终导致他的设置非常具体,以至于我怀疑这对其他人有用。由于我不能再删除它,所以我投票决定将它关闭为“太本地化”。 –

+0

是的,但评论指出做文档仍然有效:) – Ghoti

回答

0

乘客必须使用特定版本的Ruby进行编译,并锁定到从那一点开始。您不能在RVM中切换它,也不能通过passenger-install-X-module方案运行。

+0

好抓,但我错了 - 乘客已与Ruby 1.9.2编译。更新的问题。 –

1

尝试阅读文档?

https://www.phusionpassenger.com/documentation_and_support#documentation

通过指定--passenger您RVM命令中使用的包装,并告诉Apache或Nginx的使用它生成的包装。 Ruby不是'编译'的。

这只会给你一个rvm实例,但它会工作。

对于多台RVM,我唯一能找到的解决方案是使用Unicorn和反向代理来运行独角兽进程。独角兽可以适当扩展,并且是一个长大的unix公民 - 这正是我个人用于制作的东西。

编辑 - 刚刚注意到Passenger 3对RVM友好一些(如上面的文档中给出的那样) - 但是你仍然必须运行一个包装器。

在Mac上,对于开发者来说,37信号有一个称为POW的替代方案,它允许对开发环境进行简单的配置。

+1

链接已更新为指向新网站 – Ghoti

0

如果你真的想使用不同的红宝石并且尊重RVM,请使用apache +独角兽。为apache安装mod_proxy和mod_rewrite模块,使用unicorn.conf设置unicorn_rails并运行'unicorn_rails -E production -D -c config/unicorn.conf'。这是假设你把独角兽的配置放在rails应用程序的配置目录中。

相关问题