【问题标题】:Starting a rails 3 project today, which ruby 1.87 or 1.92 to use and why?今天开始一个 rails 3 项目,使用哪个 ruby​​ 1.87 或 1.92,为什么?
【发布时间】:2011-01-27 22:56:55
【问题描述】:

我们应该使用哪个版本的 ruby​​,为什么?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    Ruby 1.9.2 稳定,运行更快,并提供更多基本功能(例如良好的 Unicode/multi-charset/multi -编码支持)。

    有一个广泛一致推动让 Ruby 库和框架与 Ruby 1.9.2 良好配合。我只使用 Ruby 1.9.2,几乎所有我想使用的东西都支持 Ruby 1.9.2。仍然存在一些与 1.9.2 不兼容的 gem,但到目前为止,这是一个罕见的例外。

    z3cko 调出 Rails 启动时间。这是无关紧要的。您将很少启动 Rails。使用 1.9.2 获得的运行时速度提升比使用 1.8.7 获得的 Rails 启动提升相形见绌。请注意,我没有进行任何测量。

    z3cko 也带来了 REE。 REE 非常适合 Ruby 1.8 行。但是 Ruby 1.9 系列使用了一个全新的 VM,它已经比 1.8 VM 好很多。如果您想使用 Ruby 的替代实现,请尝试 JRubyRubinius,一旦这些运行时实现了完全的 1.9.2 兼容性(目前两者都完全兼容 1.8.7 并且正在兼容 1.9.2)。这两种替代运行时都可以提供更好的性能:JRuby 可以利用 HotSpot JVM,而 Rubinius 可以利用 LLVM。此外,JRuby 与 JVM 有很好的集成,让您可以非常轻松地使用 Java 库。此外,REE 最好与 Phusion Passenger 一起使用,但有一些新的方法可以部署 Rails 应用程序(ThinUnicorn 前面的Nginx),它们提供了强大的优势,并且不使用 Phusion Passenger。

    Ruby 环境正在迅速变化,Rails 部署环境也是如此。带有 Phusion 乘客的 REE 1.8.7 是可靠的。但我们有更新、更闪亮、更快、更轻薄、可用于生产的工具来切割、锐化和抛光我们的基础设施。

    【讨论】:

    • 我想说的一切以及更多。让我的答案黯然失色。
    • 正义,你能告诉我更多关于 nginx 和 unicorn/thin 的信息吗?对乘客有什么好处?
    • Heroku 使用 Thin。厨师application 食谱建议使用独角兽并提供如何设置它的示例,这种支持特别使他们之前对乘客的支持黯然失色:github.com/opscode/cookbooks/tree/master/application
    【解决方案2】:

    嗯,当然是 1.9.2。为什么?因为它是最新的稳定版本。 1.9.2 是对 1.8.7 的改进。速度、标准库,当然还有更多功能。 1.8.7 推广太多了,我看不出有什么理由超过 1.9.2* 使用它。

    请参阅this question 了解更准确的差异。

    *EDIT - z3cko 带来了 2 个优点。 REE 无疑以其在 Rails 应用程序中的速度和敏捷性而自豪。当然有很多 gem 不支持 1.9.2,但也有很多 gem 只支持 1.9。现在任何希望人们在生产环境中使用 gem 的作者都应该考虑到 1.8 和 1.9 的兼容性。

    【讨论】:

    • 我认为您夸大了仅支持 1.9 的 gem。举个反例,如果您将注意力转向 ruby​​gems,您可能会注意到“RubyGems 1.4 已发布!在此处下载。Ruby 1.9+ 用户应等待升级”。这里只有我的 2 美分。
    • RubyGems 1.5 刚刚发布。它与 Ruby 1.9.2 和 Ruby 1.9.3(开发)系列兼容。 Bundler 1.0.10 与 RubyGems 1.5 兼容,并在几小时后发布。
    【解决方案3】:

    如果您开始开发,您应该使用 ruby​​ 1.8.7 - 特别是 Ruby Enterprise Edition。您会发现其中的大多数 gem 和示例都适用于 Ruby 1.8.7(不过,有些 gem 并不完全兼容 1.9.2)。

    此外,正如一些人所说,基准测试表明rails with 1.8.7 (REE) is still faster than Ruby 1.9.2 - 和:Rails startup time is also slower with 1.9.x

    我建议等待 1.9.2 成熟并同时坚持使用 REE。 当该 Ruby 分支有 REE 版本时,可能是切换到 1.9.x 的好时机。

    【讨论】:

      【解决方案4】:

      我在一个基本的 Rails 应用程序上遇到了一些令人讨厌的 1.9.1(当时还没有发布 1.9.2)的段错误,然后又恢复到 1.8.7。也许这是我的环境,但现在我会担心在关键应用上使用它。

      使用 1.8.7 的另一个论点(尽管是主观的)是我的代码更有可能在 1.9.x 上运行,而不是相反。

      如果性能是一个问题,您可能希望使用 1.9.x,但大多数情况下瓶颈在数据库中的某个地方(如果您在网络上使用它)。

      【讨论】:

      • 没有人建议使用 1.9.1,Rails 3 仅适用于 1.8.7 和 1.9.2,所以我认为任何人都会担心将 1.9.1 用于 任何东西。不过,1.9.2 很好。同意第二点
      • 确实,我在第一点上得到了纠正。但是,我仍然会在一个严肃的项目中使用经过验证的解决方案,而不是最新最好的解决方案。
      • Rails 3.0 的发布被特别推迟到 Ruby 1.9.2 发布,因为 Ruby 1.9.1 的一些问题(包括严重的段错误)在 Ruby 1.9.2 中得到了修复。 Ruby 1.9.1 早在严肃的项目开始敲定它之前就已经发布了。 Ruby 1.9.2 的发布是为了响应严肃项目在 1.9 系列上提供的所有反馈,并专门处理了 1.9.1 系列中剩余的任何稳定性问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      • 2018-02-10
      相关资源
      最近更新 更多