【问题标题】:Having multiple versions of Rails installed on OS X在 OS X 上安装多个版本的 Rails
【发布时间】:2010-12-14 18:38:24
【问题描述】:

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 中的命令一样,您可能会很安全,但请理解它也可能出错。
  • 使用 locate *.py | grep ^/usr | grep -v /System 和各种语言的扩展来查看 Apple 使用什么。这些语言并不是锦上添花,它们也是为了特定目的而存在的。

标签: ruby-on-rails ruby macos rubygems


【解决方案1】:

使用rvm

RVM 是一个命令行工具,它允许我们轻松安装、管理和使用从解释器到 gem 集的多个 ruby​​ 环境...

RVM 允许用户使用自己完全独立的专用环境来部署每个项目——从特定版本的 ruby​​ 一直到运行应用程序所需的精确 gem 集。拥有一套精确的 gem 还可以避免项目之间的版本冲突问题,从而导致难以追踪的错误和数小时的脱发。使用 RVM,无需安装所需的其他 GEMS。这使得处理多个复杂的应用程序,其中每个应用程序都有一长串的 gem 依赖项高效。 RVM 允许我们通过切换到一组新的干净的 gem 来轻松测试 gem 升级,同时保持我们的原始集不变。它足够灵活,甚至可以在每个环境或开发分支中拥有一组 gem——甚至是个人开发者的口味......

【讨论】:

  • 同意,这正是创建 rvm 的目的。查看 2.x 和 3.x 宝石集的 gemsets
  • Rvm 适用于多个版本的 Ruby 和 gem 环境。不适用于特定的宝石。你可以很容易地做到这一点,而无需 rvm。对吗?
  • RVM 不仅适用于多个版本的 Ruby,它还有一个叫做 gemsets 的特性。使用两个 gemset,您可以轻松安装两个版本的 Rails,完全没有问题。
  • 我认为 rvm 对于不需要在操作系统级别管理 ruby​​ 版本或 gemsets 的用户来说太过分了。
  • 我必须说,当我将近三年前写这个答案时,我正在使用 RVM,但我发现它相当笨拙。如果您正在编写 Rails 3+ 应用程序,我建议您使用 rbenv 安装多个 rubies 和安装在应用程序内的 vendor/bundle 中的直接捆绑程序。这使事情几乎完全独立,并且在我的经验中通常对 RVM 很挑剔的生产环境中表现得更好。
【解决方案2】:

我不会像其他人提到的那样为宝石组烦恼:

gem install -v=2.3.8 rails

然后使用:

rails _2.3.8_ new rails app

请注意,这个 _versionnumber_ 是指定任何 ruby​​gems 已安装可执行文件版本的标准方法。

【讨论】:

    【解决方案3】:

    使用

    gem install -v=2.3.8 rails
    

    其中 -v=[您要安装的版本号]

    然后

    list gem rails
    

    在您的 config/environment.rb 中,您可以声明要使用的 Rails 版本。

    【讨论】:

      【解决方案4】:

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

      sudo gem install rails --version 2.3.8
      

      当您使用它时,您还可以升级您的 OS ruby​​gems 系统本身,覆盖 OS X 附带的二进制文件。这可能看起来有点老套,但这是每个人都会做的稳定的事情。

      sudo gem install rubygems-update
      sudo update_rubygems
      

      关于在您的项目中管理 Rails 版本,如果您的唯一需要是:

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

      然后 rvm 是矫枉过正。您唯一需要的是Bundler。 Bundler 就像您的 rails 项目的软件更新。事实上,Rails 3 默认带有 Bundler,你只需要在 Gemfile 中列出你需要的 gem,剩下的就交给它了。您无需担心操作系统中安装了哪些版本的 gem。

      (但是,您需要在操作系统中安装适当版本的 rails gem 才能首先生成 rails 项目)

      【讨论】:

        【解决方案5】:

        http://rubygems.org/

        这就是你所需要的 =)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-09-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-01
          • 2011-08-14
          • 1970-01-01
          相关资源
          最近更新 更多