由于 Phusion Passenger 上的 Ruby 版本错误,在共享主机上部署 RoR 应用程序失败

Deploying RoR App on Shared Host fails due to Ruby version error on Phusion Passenger

我正在尝试在具有 ruby 1.9.3-p551 的共享主机上部署 Ruby On Rails 应用程序。 Phusion Passenger 现在 returns 错误信息:

Rails 4 prefers to run on Ruby 2.1 or newer.

    You're running
       ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux]

     Please upgrade to Ruby 1.9.3 or newer to continue.

  (SystemExit)
  /.../my_home_directory/.../vendor/cache/gems/railties-4.2.3/lib/rails/ruby_version_check.rb:12:in `abort'

然后是一个大堆栈跟踪。我正在使用 rbenv 来控制不同的 ruby 版本。当我输入 rbenv versions 它说:

   system
*  1.9.3-p551 (set by /my_home_directory/.rbenv/version)

ruby -v

1.9.3p551 (2014-11-13 revision 48407) [x86_64-linux]

但是乘客的报错信息中有这样的信息:

General Interpreter Information
RUBY_VERSION = 1.9.2

我无法检查 Apache 配置文件,因为我在共享主机上,因此没有 root 权限。所以我无法重新安装 ruby 或 rubygems。

我已经尝试重新安装每个本地 gem。我多次输入 bundle installbundle upgrade。我尝试在主目录、.rbenv 目录、应用程序主目录和 app/public 目录中安装本地 ruby 版本 rbenv local 1.9.3-p551。我尝试用 rbenv shell 1.9.3-p551 更改使用过的 ruby 版本,并且可能还做了一些事情,我目前不记得了,因为我很晚才开始写下我已经做过的事情。

除了 Apache 配置文件中的 PassengerRuby 错误之外,为什么 passenger ruby 版本错误?我认为这不太可能,因为我认为我的托管服务提供商知道他在做什么。我可以做些什么让乘客或 rails 使用正确的(已安装)版本?

Does anybody have an idea why passenger has the wrong ruby versions besides that PassengerRuby in the Apache config file is wrong?

这里是客作者。配置文件中的 PassengerRuby 错误是 only 您遇到此问题的原因。 唯一 解决方案是将 PassengerRuby 设置为正确的实例。

如果您的共享主机不允许您设置 PassengerRuby,那么我建议您换一个。以 Digital Ocean 为例。它们很便宜,让您完全控制,我们有 full end-to-end deployment walkthrough for Digital Ocean.