<分区>
我的同事有一个使用 Nginx、Phusion Passenger 和 RVM 的 Rails 开发环境。当他尝试加载一个项目时,它提示说它需要一个与可用版本不同的 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 --create default@ourapp
。
rvm list default
返回 ruby-1.9.2-p290
- 我们已经更改并返回目录,看到它说它正在使用 1.9.2
- 据我所知,nginx 的配置文件正确设置了
passenger_root
和 passenger_ruby
- Passenger 已使用 Ruby 1.9.2 编译。
还有什么我想念的吗?
尝试阅读文档?
https://www.phusionpassenger.com/documentation_and_support#documentation
您通过为 rvm 命令指定 --passenger 来使用包装器,并告诉 Apache 或 Nginx 使用它生成的包装器。 Ruby 不是“编译在”中。
这只会给你一个 rvm 实例,但它会工作。
对于多个 RVM,我发现唯一可行的解决方案是对正在运行的 unicorn 进程使用 Unicorn 和反向代理。 Unicorn 可以适当扩展并且是一个成熟的 Unix 公民 - 这是我个人用于生产的东西。
编辑 - 刚刚注意到 Passenger 3 对 RVM 更友好(如上面的文档中所述) - 但你仍然必须针对包装器运行。
在 Mac 上,对于开发人员,37 Signals 有一个名为 POW 的替代方案,可以轻松配置开发环境。