Ruby on rails 如何让Phusion乘客使用正确版本的Ruby?
我的同事有一个Rails开发环境,使用Nginx、Phusion Passenger和RVM。当他试图加载一个项目时,it部门抱怨它需要一个不同于现有版本的Ruby:Ruby on rails 如何让Phusion乘客使用正确版本的Ruby?,ruby-on-rails,ruby,rvm,passenger,Ruby On Rails,Ruby,Rvm,Passenger,我的同事有一个Rails开发环境,使用Nginx、Phusion Passenger和RVM。当他试图加载一个项目时,it部门抱怨它需要一个不同于现有版本的Ruby: The given ruby environment requires ruby-1.9.2-p290 (versus ree-1.8.7-2011.03) (RVM::IncompatibleRubyError) 我们正在从REE切换到MRI Ruby。以下是我到目前为止检查的内容: 该目录中的.rvmrc是rvm use-
The given ruby environment requires ruby-1.9.2-p290 (versus ree-1.8.7-2011.03) (RVM::IncompatibleRubyError)
我们正在从REE切换到MRI Ruby。以下是我到目前为止检查的内容:
- 该目录中的
是.rvmrc
rvm use--createdefault@ourapp
返回rvm列表默认值
ruby-1.9.2-p290
- 我们已经更改了目录并返回到目录中,它显示它正在使用1.9.2
- 据我所知,nginx的配置文件正确地设置了
和passenger\u root
passenger\u ruby
- Passenger是用Ruby 1.9.2编译的
还有什么我遗漏的吗?乘客必须使用特定版本的Ruby进行编译,并且从那时起就被锁定。您不能在RVM中切换它,而不同时运行
passenger-install-X-module
程序。尝试阅读文档
您可以通过为rvm命令指定--passenger来使用包装器,并告诉Apache或Nginx使用它生成的包装器。Ruby不是“编译的”
这只会给您一个rvm实例,但它可以工作
对于多个RVM,我发现唯一可行的解决方案是使用Unicorn和反向代理来运行Unicorn进程。Unicorn可以正常扩展,是一个成熟的unix公民——我个人在生产中使用它
编辑-刚刚注意到乘客3对RVM更友好(如上面的文档所示),但是您仍然需要使用包装器
在Mac上,对于开发人员来说,37个信号有一个称为POW的替代方案,可以轻松配置开发人员环境。如果您真的想使用不同的rubies并尊重RVM,请使用apache+unicorn。为apache安装mod_代理和mod_重写模块,使用unicorn.conf设置unicorn_rails并运行“unicorn_rails-E production-D-c config/unicorn.conf”。这是假设您将unicorn的配置放在rails应用程序的config目录中。很好,但我错了-Passenger是用Ruby 1.9.2编译的。更新的问题。这个问题是如此具体到他的设置,我怀疑这将是有用的任何其他人。因为我不能再删除这个,我投票决定关闭它,因为“太本地化了”。是的,但注释指向文档仍然有效:)链接更新指向新站点