Ruby 2015 年回顾
Ruby 2015 年回顾
我们来到了 2015 年末,今年对于 Ruby 来说是重要的一年。我想回顾一下今年重要的主题和其中的故事是很有必要的。就像来一次敏捷过程回顾,我将把 2015 年的工作划分成几个主题,以此回顾下我们做的怎么样。
为了保证我们想法的一致性,我将会先定义几个要考虑的主题。其实每年评价 Ruby 是否成功的完成了冲刺,都会通过以下几个方面是否来评价。
-
语言的改进
-
社区的发展
-
跟上编程业界的其他方面
这些就是我预先定义的主题。为了衡量 Ruby 社区做的如何,我将回顾本年度上述主题相关的一些重要的博客、文档、视频。我相信肯定会疏漏,同时我也相信小伙伴儿们肯定会在评论里补上的,对吧?
最后,这一年里与 Ruby 相关的任何值得回顾的事件都可以来交流下,今天我有充足的时间来和大家讨论。我猜肯定会有好多机智的读者想向我的列表里加东西的。
语言的改进
Ruby
Ruby 2.2 大约一年前就发布了,但我将把它算在今年里。2.2 版本添加了很多的语言方面的东西,下列的文章就对此进行了介绍:
-
超级元数据方法的加入使调试更加容易。
-
垃圾收集标志给 Ruby 垃圾收集器一个巨大的性能提升,这可能是很长时间内最好的语言改进之一。
-
当然,另一个内存垃圾回收方面的改进是增量回收,保证了垃圾回收时性能一致性。
-
还有一些较小的语言改进也不能被忽视。
-
今年圣诞节当天 Ruby 发布了 2.3 版本
-
,下面是关于这次发布的一些介绍:
-
你可以通过一个命令行选项冻结你所有的字符串,然后看看还要做多少工作来处理代码中的字符串。
-
如果你还没有听说过安全导航操作符,那么你肯定是生活在石器时代。
-
所有版本都会包含 bug 修复,但这篇文章讲的就是一个不太好的(译者注:2.2 版本引入了一个内存泄露的 Bug)。这篇文章详细介绍了 2.3 版本中这个 Bug 是如何修复的,值得一读。
有时语言的改进意味着告别旧版本。Ruby 停止对 1.9.3 版本的支持就是这样的。《晚安吧,Ruby 1.9.3》,我们会记住你的。
所有 Ruby 解释器改进中最值得期待的也是最重大的是 JRuby 9000:
-
这篇公告列举了一些主要的改进项。
-
JRuby EU 主题视频很值得一看,看过你便知道 JRuby 9000 有多重要。Charles Nutter 和他的团队值得大大的支持和称赞。
提高对 Ruby 的掌握的另一种方法是学习新鲜而且和有用的东西。下面是很多这方面的文章:
-
这篇 Reddit 上的文章《你最喜欢的 Ruby 技巧是什么》,吸引了很多人的回复。
-
认真学习下《使用 rack-mini-profiler 进行性能评估》如何?真的,你必须得看看。
-
这里还有一个很棒的网站《酷毙了的 Ruby》,全都是关于 Ruby 的东西。
-
你永远无法真正了解正则表达式,你可以吗?
基于下面的文章,我认为 2015 年是属于 Ruby“深入,性能相关文章“的:
-
Richard Scheeman(今年的另一个关于 Ruby 的 MVP 博客)写的两篇关于 Ruby 中堆转储的文章,第一篇,第二篇。
-
这是一篇关于如何在 Ruby 调试内存泄漏的文章。
-
你有没有被 Ruby 垃圾收集器设置烦到头大?我也是,但是也许我们应该这样做。
年度之战
最后,当一个语言给它的社区提供选择,它的水平就上升了,RSpec 和 Minitest 之间的战争就是一个很重要的例子:
好吧,好吧,也许“年度之战”只是一个噱头,但我真的希望这一年关于 Minitest vs RSpec 有更多讨论。
Rails
像 Ruby 2.2 一样,Rails 4.2 也是大概在去年 12 月底的时候发布的。我也准备再次将此消息当做 2015 年的存货,因为其发布所带来的反响也是直到经年才真正升温起来的。如下是它所带来的东西:
-
当然,想了解发生了哪些变化,最好的地方就是发布事项了, 你会在其中看到像ActiveJob,Asynchronous Mails,以及 Adequate Record 这些东西。
-
ActiveJob 容易上手,也让队列系统的运用变得易如反掌。
-
发送异步消息邮件这样的普通任务也变得更加容易进行测试和实现了。
Rails 会随着后端网络环境的变化而变化。下面是一些建议,用来帮你缓解即将到来的转型压力:
-
Rails 越来越多的被用来创建 API,而这里是一些做好这项工作的建议。哦,这里还有更多。
-
有没有很棒的 Rails gem 的合集? 保准你的甜心 Ruby 这儿就有。
Rails 主要的一个问题来源总会是安全。这次发布对此也有了一些改进:
-
理解最常见的一些攻击方式,像 CSRF 和 Rails, 它们能长久的改善你的工作。
-
很明显, 4.2 有几个发布点大多数都是关于安全和 bug 修复的。详细信息见发布事项。
当然,也有很多讨论 Rails 性能方面的文章:
-
《业界观点》推出的四篇《关于优化 Rails 内存使用》的系列文章。
-
你在读上面这几篇文章前,你肯定得理解《Rails 性能的衡量方式》。
-
一旦你理解了性能特征,你最终还是得看看《ActiveRecord 调优》,这是一个两篇的系列文章,由另一位社区 MVP 贾斯汀 维斯(Justin Weiss)发表。
Rails 4.2.x 相比于 Ruby 来说在性能方面其实并没有太大的改进,但是为 5.0 打下了基础,我相信在 5.0 版本中性能将会有重大提升。
Rails 之外
不消说,其它基于 Ruby 的非 Rails 的框架和库从各个方面也提升了 Ruby。下面是一些 2015 年里很酷炫的新东西。
-
Lotus 迎来了它重要的一年,如果你需要一个面向对象的强大的非 Rails 的 web 框架,Lotus 值得一试。
-
对于 Opal 来说,2015 年也是很重要的一年,Opal 是一个广受欢迎的 Ruby-to-JavaScript 编译器。
-
跟 Opal 比较相关的是 Volt,Volt 是一个 Web 框架,它通过 Opal 来让开发者使用 Ruby 进行 Web 前台和后台开发。
-
Pakyow 是一个新的 web 框架,它的目标是使实时应用开发更容易,的确值得一看。
壮大社区
任何一门想要繁荣发展的语言都需要让越来越多的人知道它。对于那些 Ruby 新人,有一些博客可以帮助你早日成为 Ruby 家族的一员:
-
我们亲爱的 Kingsley Silas 的博客,成为 Ruby 家族的一员。
-
Nihal Sahu 写在 SitePoint 上面的向 Ruby 语言新手介绍 Ruby 社区。
技术的多样性毫无疑问成为了热门话题,像 Rails Girls 和 RailsBridge 都是用来发掘 Ruby 语言的多样性的,下面也是一些相关的故事:
Stephanie Burns 分享了她在 Ruby 训练营的经验。各种编码训练营正在如火如荼的举办,这种形式吸引了很多人加入社区。
一些组织,比如 Makers Academy 为在他们那上课的女学生设立了奖学金。
Hello Ruby 一书的出版真的让我欣喜万分,它可以吸引小孩子编程的乐趣。如果你还没有买这本书,强烈建议你买一本送给小朋友。
总的说来,今年 Ruby 多样性的发展还不错。这里预祝在 2016 年这些项目能够获得更多的支持。
跟上时代
对于任何编程语言,与语言本身之外其它技术相得益彰也是语言持续发展的关键。Ruby 在核心设计上就遵循这个准则,它的两个解释器(MRI 和 JRuby),使其能够拓展到外部运行时环境。下面是 2015 年的一些与 Ruby 相关的重大技术话题:
Docker
容器化在 2015 仍然十分流行,下面是一些有关 Ruby 和 Docker 的博文:
-
来自 Travis Reeder 的博文介绍了为你的 Ruby 应用建立最小化的 Docker 镜像;
-
Marko Locker 介绍了如何利用 Docker 简化 Rails 的测试;
-
Nick Gauthier 提供了如何利用 Docker 进行并行化测试的参考。
确实,如果你在 2015 没有看到 10 篇以上有关 Docker 的博文,就会显得力不从心。有时间学一下 Docker 吧,它真的值得。
Slack
你正在用 Slack 吗?所有人都在用呢!它真的很棒,对拉动发达国家的 GDP 都起了作用。Ruby 配合 Slack 也很不错,看看吧:
-
用 Rails 建立一个 Slack 服务,挺有趣的;
-
或者用 Sinatra 来做,Slack 喜欢各种框架;
-
还有一个 Ruby gem,为你做了从 Rails Post 到 Slack 的所有工作。
其它编程语言
用 Ruby 的人经常回去学习和利用其它编程语言来进行更好的编程。下面是一些关于其它编程语言的故事:
-
Parse 从 Ruby 迁到 Go 从而获得更好的效果;
-
Rust 在今年赢得了很多关注,这篇由 Robert Qualls 写的博文展示了怎么利用 Rust 来与 Ruby 共同编程;
-
Ruby 届的新宠毫无疑问要是 Elixir 了,看一下这篇博文,来看看大家为什么赌 Elixir 会是下一个大事件。
最后,还有两件影响 Ruby 的两个事件:
-
React 现在是 javascript 框架的又一选择,可以学习一下如何利用它和 Rails 交互;
-
如果你用 Ruby 写 web app,而不是 DHH,不如看看最近很火的微服务架构。这篇博文展示了如何微服务架构你的 Rails 应用。
哪些还不奏效
大凡回顾,都要花点时间总结一下过往的疏漏。这方面的事情容易使人消沉,如此就得大费周章了,而我在这儿将只提一提几项:
-
把 Spring 加入到 Rails 开发流程中过去的反向总是褒贬不一。 许多人总觉得该作者像是要整个放弃 Spring。
-
Adam Hawkins 就社区需要作出的完善还有要制定的高级别的路线图提了一大堆事情。
-
前面我已经提过微服务了,相当多的人对此持抵触态度。Nick Sutterer (他是许许多多 gem,以及 Trailblazer 框架的作者) 对这一块进行了大刀阔斧的设计 ,让你在把整个微服务弄得一团糟之前能用上好的设计。
-
最后,不管会发生怎样的改良? 会有人用它们吗? MVP Candidate Starr Horne 用了,不过我并没感觉有许多人用了。不知道我们应不应该用。
我确信在 Ruby 的领域还有更多东西以失败而告终,尚未提及。你可以在评论中告诉我。
还有….我们的远景!
2015 还有几天就过去了。它对于 Ruby 这门在我看来仍然有一个光明未来的语言而言是重要的一年。未来的 2016 会发生什么呢?你怎么看?你可以把你的想法放到评论中或者论坛上。让我们携手并进,在 2016 让 Ruby 和我们的社区变得更好吧。新年快乐!