【问题标题】:RVM: Why my Ruby on Rails project is still running with the Ruby version 1.9.3 even if I am using the 1.9.2?RVM:为什么即使我使用的是 1.9.2,我的 Ruby on Rails 项目仍在运行 Ruby 版本 1.9.3?
【发布时间】:2012-04-03 16:57:22
【问题描述】:

我正在使用 Ruby on Rails 3.2.2 和 RVM(Ruby 版本管理器)。通过使用 RVM,我安装了 2 个 Ruby 版本:首先是 1.9.3,然后是 1.9.2。运行rvm use --default 1.9.2 命令行后,我关闭并重新打开了终端窗口。最后,我在终端窗口中运行以下命令行:

$ which ruby
/<MY_USER_PATH>/.rvm/rubies/ruby-1.9.2-p318/bin/ruby

$ ruby -v
ruby 1.9.2p318 (2012-02-14 revision 34678) [x86_64-darwin10.8.0]

但是,如果我在我的 Ruby on Rails 项目的视图文件中添加 &lt;%= "Ruby version #{RUBY_VERSION}" %&gt; 代码,我会得到 Ruby version 1.9.3。

为什么我的 Ruby on Rails 项目仍在运行 Ruby 1.9.3 版?我怎样才能让它在 Ruby 1.9.2 中运行?

【问题讨论】:

  • 您的项目目录中有.rvmrc 文件吗?
  • 你是如何启动你的应用程序的?什么服务器?
  • @Andrew Marshall - 我正在使用 Apache 和虚拟主机。
  • 好的,但是 Apache 是如何与 Ruby 对话的呢?通过乘客?或者它是代理到杂种或类似的?
  • @Andrew Marshall - 通过乘客。

标签: ruby apache rvm passenger


【解决方案1】:

Passenger 不关心 RVM,你需要用你想使用的 Ruby 版本编译Passenger,并按照它的说明来设置 Apache 的配置。

如果你想切换Ruby版本,你需要通过passenger-install-apache-module重新安装Passenger的Apache模块并按照说明操作。

您可能会看到 Apache 配置中的 PassengerRuby 指令指向特定的 ruby。

如果您需要带有 Passenger 的不同 Ruby 版本,Phusion's blog post 可能会有所帮助。 RVM's docs on Passenger integration 也值得一读。

【讨论】:

    【解决方案2】:

    我猜 Apache(Passenger?)正在使用您全局安装的 Ruby 版本,它看起来像 ruby​​ 1.9.2。执行sudo su,然后尝试which ruby,看看您是否仍然指向RVM 版本的ruby。该版本的 Ruby 是 Apache 正在使用的版本,您必须全局设置 ruby​​ 以允许 Apache (Passenger) 使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      相关资源
      最近更新 更多