在OS X上安装多个Rails版本

3

OS X 10.6 默认安装了 Rails 2.2.2。
如何升级到 Rails 2.3.8?

既然 Rails 3 已经发布,是否可以在 OS X 上安装多个版本的 Rails(比如同时安装 2.3.8 和 3)?
(例如,我可能正在开发两个 Rails 项目,一个是 Rails 2.x,另一个是 Rails 3.x。)


需要记住的一件事是,Ruby、Python、Perl以及系统默认安装的任何其他内容都应该在已知的版本级别上运行,无论是操作系统开发人员还是编写系统级代码的其他人都应该如此。在他们认为是神圣的代码中任意更改库可能会导致难以诊断的错误,因为没有可用的集成和回归测试。将系统的Ruby更改视为更改/usr/bin中的命令,你可能会很安全,但要理解它也可能出错。 - the Tin Man
使用 locate *.py | grep ^/usr | grep -v /System 命令,并结合不同的语言扩展名,查看苹果公司使用的编程语言。这些语言不只是锦上添花,它们也有具体的用途。 - the Tin Man
5个回答

15

使用 rvm

RVM 是一个命令行工具,允许我们轻松安装、管理和使用多个 Ruby 环境,包括解释器和一组 gem…

RVM 允许用户为每个项目部署一个完全独立和专用的环境——从特定版本的 Ruby 到运行应用程序所需的精确 gem 集。具有精确的 gem 集还可以避免项目之间版本冲突的问题,导致难以追踪的错误和长时间的头发损失。使用 RVM,仅安装所需的 gem,这使得处理多个具有长列表 gem 依赖项的复杂应用程序变得高效。RVM 允许我们轻松地通过切换到一个新的干净的 gem 集来测试 gem 升级,同时保留我们原始的 gem 集不变。它足够灵活,甚至可以为每个环境或开发分支或甚至每个开发人员的喜好设置一组 gem…


1
同意,这正是rvm创建的目的。查看gemsets以获取2.x和3.x一组宝石。 - Jesse Wolgamott
2
Rvm 用于管理多个 Ruby 版本和 gem 环境,而不是特定的 gems。你可以轻松地在没有 rvm 的情况下完成这个任务,对吧? - Icid
RVM 不仅支持多个 Ruby 版本,还有一个叫做 gemsets 的功能。使用两个 gemsets,你可以轻松地安装两个版本的 Rails 而不会出现任何问题。 - AboutRuby
1
我认为对于不需要在操作系统级别管理Ruby版本或gemset的用户来说,rvm是过度杀伤力的。 - John Bachir
我必须说,当我写下这个答案将近三年前时,我正在使用RVM,但我发现它相当笨重。如果你正在编写Rails 3+应用程序,我建议使用rbenv来安装多个rubies,并在应用程序内的vendor/bundle中直接安装bundler。这样可以使事情几乎完全自包含,并且在我的经验中,与通常对RVM挑剔的生产环境相比更加友好。 - jxpx777

7

我个人不会去烦恼gemsets,只需按其他人所提到的那样操作即可:

gem install -v=2.3.8 rails

然后使用:

rails _2.3.8_ new rails app

请注意,这个“_versionnumber_”的东西是指定任何RubyGems已安装可执行文件版本的标准方式。

2

使用

gem install -v=2.3.8 rails

请在命令行中输入 -v=[您想安装的版本号]。

然后

list gem rails

在你的config/environment.rb文件中,你可以指定你想要使用的Rails版本。

1

升级rails gem的操作系统版本:

sudo gem install rails --version 2.3.8

顺便提一下,您还可以升级您的操作系统 RubyGems 系统本身,覆盖 OS X 自带的二进制文件。这可能看起来有点 hacky,但这是每个人都在做的稳定的事情。

sudo gem install rubygems-update
sudo update_rubygems

关于在项目中管理Rails版本,如果您的需求仅限于:

  1. 指定Rails项目中所需的Rails版本
  2. 在多个Rails项目中指定不同版本的Rails和/或其他gems

那么RVM就过于复杂了。您唯一需要的是Bundler,它也是一个完整而愉悦的工具。Bundler就像是为您的Rails项目提供软件更新服务。实际上,Rails 3默认就带有Bundler,您只需要在Gemfile中列出所需的gems,它就会自动处理剩下的事情。您无需担心OS中安装了哪些版本的gems。

(但是,在首次生成Rails项目之前,您需要在OS中安装适当版本的rails gem)


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接