9

上周我成功完成了我们公司所有应用程序从 Ruby 1.8.6 到 Ruby 1.8.7 的转换,包括本地和远程配置。从现在开始,开发不需要确保与 Ruby 1.8.6 的向后兼容性。

出于好奇,我尝试针对 Ruby 1.9.1 运行几个项目的测试套件。正如预期的那样,我发现了一些与编码相关的问题,但当我发现低级不兼容性(例如 Rack::Link 已知错误)时,我真的很震惊。在这一点上,将开发转移到 Ruby 1.9.1 的想法根本不适用。

我想知道是否有人使用 Ruby 1.9.1 成功部署了 Rails 项目。您在 Rails 项目中使用哪个 Ruby 版本?您是否打算升级到更新的版本?

4

5 回答 5

10

Matz 最近在伦敦的 RubyFoo 上谈到了 ruby​​ 1.9.1 的采用。很简单,ruby 1.9.1 还没有准备好生产,还不应该用于部署。

Ruby 1.9.2 将可用于生产,但在此之前,您应该只使用 ruby​​ 1.9.1 进行游戏和测试。

尽管许多人已经使用 1.9.1 成功部署,但我建议在 1.9.2 发布之前坚持使用 REE 1.8.7。Rails 3.0 将支持 1.9.2,但在 1.8.7 上也能很好地工作(它不适用于 1.8.6)。

于 2009-11-03T15:28:49.947 回答
5

Gitorious是一个非常庞大且复杂的 Rails 项目,拥有大量用户。Gitorious 在 Ruby 1.8 和 Ruby 1.9 上运行良好,但最大的 Gitorious 安装,即 Gitorious.Org 本身,已经在 Ruby 1.9 和 YARV 上运行了一段时间。(至少从五月开始,我想。)

最好的部分当然是它不仅是开源的,而且是一个真正的开放项目,具有开放的邮件列表、开放的 bugtracker 和开放的存储库,这样您就可以准确地看到他们是如何做到的以及做了多少工作。

于 2009-11-03T17:01:22.937 回答
2

我花了一天的时间研究这个的可行性,我还要再等一段时间。

就目前而言,您可以使大部分工作正常工作,但是您必须采取一些非常可怕的解决方法才能使工作正常进行。

  1. MySql gem(2.8.1 版)以 ASCII 编码返回所有字符串,这意味着当您开始将它们附加到您的视图中时,您会遇到各种令人讨厌的错误。有一个解决方法,但它涉及使用补丁编译 gem,请参阅:Encoding questions in rails on ruby​​ 1.9.1
  2. 您需要使用 hacks 或 env vars 全局强制 utf-8 编码
  3. 由于 Ruby 临时文件中的错误,Passenger 2.2.7 遇到了麻烦,因此您必须从源头破解:Ruby 1.9.1-p234、Passenger 2.2.5、Rails 2.3-stable POST 请求上的关闭流
  4. 有些宝石根本不起作用。

尽管我很喜欢性能提升,但我认为目前它有点过于前沿,等到 2010 年中初可能是个好主意

于 2009-12-06T11:49:17.360 回答
1

这里没有转换到 Ruby 1.9.1。我倾向于对升级持保守态度。对于生产工作,我喜欢坚持使用久经考验的东西。此外,恕我直言 1.9.1 很好,确保您的依赖版本保持最新是一个好习惯。正如您所注意到的,在出血边缘发育有时会很痛苦。如果您不想遇到此类问题,则将一个版本留在最前沿会更安全。

于 2009-11-03T14:30:25.073 回答
1

这里也没有 1.9.1。尽管说起来让我很恶心,但我们还是等 37signals 先做吧。

一旦拥有提交权限的人这样做,错误将得到更快的解决。

于 2009-11-03T15:01:48.037 回答