1

我正在研究 Bluehost。我安装了 3.2.8 gem of rails,现在我得到了:

> gem list --local | grep rails
rails (3.2.8)

但:

rails --version
Rails 2.3.11

如何使“rails”命令使用最新的 gem?我想这与我的 $PATH 变量有关,但我对此一无所知。

此外,gem 和 rails 命令会产生一些如下所示的错误:

Invalid gemspec in [XXX]: invalid date format in specification: "YYY"

我不确定这是否相关(而且我想知道是什么导致了此类错误)。

4

1 回答 1

1

尝试运行以下命令:

curl -L https://get.rvm.io | bash -s stable --ruby --rails

它所做的是安装 RVM,它为每个安装的 Ruby 版本维护单独的 gem。--rubyand参数告诉它在--rails安装 RVM 时安装 ruby​​ 和 rails。RVM 安装会自动更新 $PATH 和任何其他必要的环境变量。

在安装结束时,它应该提示您运行:

source ~/.rvm/scripts/rvm

这将使这些环境变量更改立即生效。或者,您可以注销然后重新登录。

运行rails -vruby -v在那一点上,您应该看到它们指向新版本。从您的 RoR 应用程序的目录运行bundle install,您需要的所有 gem 都应该安装在 ~/.rvm/gems/ruby-/gems 中。

此时,您可以在安装 RVM 之前删除/卸载任何 gems/rails/ruby。

2012 年 10 月 17 日编辑:没关系我的回答。尽管有可能让 Rails 3.x 与当前安装的 Ruby 1.8 一起运行(请参阅这个 Stackoverflow 问题),但您将无法使用 Bluehost Shared Hosting 运行 Ruby 1.9.x。您唯一的选择(目前)是 VPS 托管。

原因是Passenger Phusion 与安装在/usr/lib 中的Ruby 版本相关联,如果没有root 访问权限,您无法更改该版本。即使您可以使用 RVM 安装任何版本的 Ruby,您也不会让Passenger 与它对话,因此您的 Rails 项目不会使用它的 gem。

于 2012-10-16T05:01:26.420 回答