乐博娱乐»RubyOnRails»Rails 5 有什么新特性?

Rails 5 有什么新特性?

来源:oschina 宣布时间:2015-06-27 阅读次数:乐博

  Rails 5 即将在 2015 年秋季宣布,新版本拥有许多令人激动的特性。如果你使用 Rails 乐博娱乐开发商城,那你必须使你的应用准备好迎接新的 Rails 新特性。

  别担忧!我们会在新版本到来之前让你了解新特性,现在就让我们让你了解有哪些新特性,这将会大大提高你的乐博娱乐开发能力。

乐博

  主要革新

  有许多新特性将从基础上改变我们使用 Rails 的方式。好比说 Action Cable 和革新的 Turbolinks 新特性,能够立马提高我们乐博娱乐开发 Rails 应用的事情流程。让我们看一些这两个新特性的细节。

  合并 Rails API

  在已往的几年中,得益于 Backbone.JS 和 Angular.JS 类库,单页面应用程序(SPA)获得了生长。我在近期乐博娱乐开发的几个单页面应用程序借助了 Rails 的威力。我曾经实验涉猎 Sinatra 项目甚至纯粹的 Rack 项目,但是最终的结果都是写了大量 的boilerplatee 项目。我的做法没有参照 Rails,而且需要处置惩罚许多宁静缺陷。我不得不在 rails-api 的社区驱动上层和传统的 rails 上进行乐博娱乐开发。

  在 Rails 5 中,rails-api 被整合到焦点包中,而且能够像简朴 JSON API 那样子使用 Rails。结合小我私家经历,我认为这是一个伟大的革新。我不再用为我的 JavaScript 客户端建树后台 API 发愁了。

  Ruby 2.2.1

  Ruby 2.2 是 Ruby 社区的一个新版本。不仅仅带来了Ruby巨大的性能提升,还引入了大量的新功效。此外,symbols的垃圾收集获取了广泛的好评。有这样一个传说,当这个声明宣布的时候,龙族的Valeria在Seventh王国落下了玫瑰雨。OK!也许我扯得太远了,但是一般来说是这样的。

注意:在迁移你的Rails 5之前你需要确认你的应用可以在Ruby 2.2.1上事情。

  由于这些增强功效,Ruby 2.2+对Rails 5来说是一个可靠的选择。Rails 5将仅支持在Ruby 2.2.1以上的版本上事情。

  Turbolinks 3

  传统的 web 应用一般整页加载,而导致响应比力慢。解决这个问题的一个措施是只加载最小的内容区域。 Turbolinks 只从服务器重载某个区域而不是刷新整个页面。 这个革新虽然一定水平上革新了性能,但是相对照旧比力慢。Turbolinks 3 将解决这个问题。

 Tubolinks 3 让你可以有选择性的更新部门区域(通过 partial),而大部门页面都不更新。这很像 SPA的事情。你可以选择直接在 server 端完成所有这样的事情,是不是很棒?

  这是一个很赞的特性,目前的趋势朝着单页应用生长。然而,乍一看,它似乎需要你去手动治理。这意味着你必须在特定的点上记着程序需要重载的部门。对我来说,这增加了不少代码累赘,而且容易搞砸。就我小我私家而言,我更喜欢使用React类似的工具,它通过虚拟DOM处置惩罚这个很在行。

备注: React的事情方式是:它维护了一个所发生操作的虚拟DOM。然后,比力虚拟DOM和实际DOM的差异,然后只做需要的变换。它确保DOM只有在绝对须要才发生变化且是最小化的。

  不得不说的是,对于那些不喜欢围着JS转的人,这提供了一个即时的性能提升。

  Action Cable

  现在需要项目使使用 Websockets 来推送实时更新到客户端。虽然大多数浏览器已经开始支持这一点,我们任然需要服务器上一个强大的客户端来,治理用户和适当的发送更新信号。这种功效在一些新的框架中已经泛起,像 Phoenix for Erlang。Rails 社区需不得不需要求助于第三方解决方案来实现这个,像Pushr.

注意:对于新手来说,Websockets从浏览器开启双工连接是W3C的尺度.服务器端可以在需要的时候和客户端通信(好比推送更新)而且同步更新客户端状态而不需要整个页面重新加载.举例来说,这就是Gmail如何在不重新加载真个页面的情况下加载新的邮件.

  通常 Rails 都提供了所有需要建树应用的开箱即用的工具。这也是它为什么如此流行的原因,特别是在一些初创团队。对 Websocket 支持的缺乏社是区中主要的不满的主要原因之一。看起来 Rails 焦点团队已经注意到这一点而且开始讨论Action Cable。我们不得不期待一段时间看它是如何在现实生活中事情的,但它任然令人振奋。

  一些新的细节

  Rails 内置 Rake

  对于许多 Rails 新手来说,困惑的原因来自于不得不想出什么时候是有 rake 什么时候使用 rails。现在你不再需要在 rake 和 ralis 命令的上下文直接切换。你可以使用 ralis 命令运行所有的 Rake 任务。好比说:

   rake db:migrate

  将会酿成:

  ils db:migrate

  这外貌上看起来不太相同,但是对于许多初学者来说会变得简朴。Rails 5 也会添加 restart 命令来快速重启应用。

  运动纪录(Active Record)的改变

  一个改变是大多数时候忽略了对 tobelongs_to 的更新。当你创建一个 Student 类是 belongs_to 的关联类,创建一个 student 没有相关联的类是可行的。这导致了大量数据的纷歧致。对 Rails 5 来说,它的父类已经酿成强制性的了。如果你在这里实验插入一个空的纪录,运动纪录(Active Record)将会抛出异常。

  改变对控制器(Controller)的测试

  如果你测试你的模板并将其渲染到你的控制器,那你就做错了。对你的模板做个简朴的变换将会留给你一个不眠之夜,抓住那个罪魁罪魁。这就是为什么在 Rails 5 中,assert_template 被废弃的原因。但是,在目前你还会继续使用 assert_select 去检查特定的 DOM 元素。

  如果你已经在一个控制要领内测试了实例变量,你就应该记得 assigns 也应该消失了。

  如果你正在写控制器的测试用例,需要关注 cookies 的新命令,HTTP 返回值和 DB 调用。如果有得话,等等,这听起来像一个荟萃测试。好吧,你知道我想表达什么了。。。在未来的集成测试中会去掉控制器测试。

注意:点击链Rails Dom testing取等多详细内容和最佳实践

  专注

  在 web 乐博娱乐开发中 javascript 饰演着统治职位的今天,web 框架仅仅是在降低更少的 api 服务。Rails 焦点团队意识到这点而且在朝向正确的偏向。接待在评论中加入我们的讨论行列。

  原文地址:http://www.sitepoint.com/whats-new-rails-5/