在过去的几年中,得益于 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 是 Ruby 社区的一个新版本。不仅仅带来了Ruby巨大的性能提升,还引入了大量的新功能。此外,symbols的垃圾收集获取了广泛的好评。有这样一个传说,当这个声明发布的时候,龙族的Valeria在Seventh王国落下了玫瑰雨。OK!也许我扯得太远了,但是一般来说是这样的。
注意:在迁移你的Rails 5之前你需要确认你的应用可以在Ruby 2.2.1上工作。
由于这些增强功能,Ruby 2.2+对Rails 5来说是一个可靠的选择。Rails 5将仅支持在Ruby 2.2.1以上的版本上工作。
现在需要项目使使用 Websockets 来推送实时更新到客户端。虽然大多数浏览器已经开始支持这一点,我们任然需要服务器上一个强大的客户端来,管理用户和适当的发送更新信号。这种功能在一些新的框架中已经出现,像 Phoenix for Erlang。Rails 社区需不得不需要求助于第三方解决方案来实现这个,像Pushr.
注意:对于新手来说,Websockets从浏览器开启双工连接是W3C的标准.服务器端可以在需要的时候和客户端通信(比如推送更新)并且同步更新客户端状态而不需要整个页面重新加载.举例来说,这就是Gmail如何在不重新加载真个页面的情况下加载新的邮件.
通常 Rails 都提供了所有需要建立应用的开箱即用的工具。这也是它为什么如此流行的原因,特别是在一些初创团队。对 Websocket 支持的缺乏是社区中主要的不满原因之一。看起来 Rails 核心团队已经注意到这一点并且开始讨论Action Cable。我们不得不等待一段时间看它是如何在现实生活中工作的,但它任然令人振奋。
一个改变是大多数时候忽略了对 tobelongs_to 的更新。当你创建一个 Student 类是 belongs_to 的关联类,创建一个 student 没有相关联的类是可行的。这导致了大量数据的不一致。对 Rails 5 来说,它的父类已经变成强制性的了。如果你在这里尝试插入一个空的记录,活动记录(Active Record)将会抛出异常。
如果你测试你的模板并将其渲染到你的控制器,那你就做错了。对你的模板做个简单的变更将会留给你一个不眠之夜,抓住那个罪魁祸首。这就是为什么在 Rails 5 中,assert_template 被废弃的原因。但是,在目前你还会继续使用 assert_select 去检查特定的 DOM 元素。
如果你已经在一个控制方法内测试了实例变量,你就应该记得 assigns 也应该消失了。
如果你正在写控制器的测试用例,需要关注 cookies 的新命令,HTTP 返回值和 DB 调用。如果有得话,等等,这听起来像一个集合测试。好吧,你知道我想表达什么了。。。在将来的集成测试中会去掉控制器测试。
注意:点击链Rails Dom testing取等多详细内容和最佳实践
在 web 开发中 javascript 扮演着统治地位的今天,web 框架仅仅是在降低更少的 api 服务。Rails 核心团队意识到这点并且在朝向正确的方向。欢迎在评论中加入我们的讨论行列。
评论删除后,数据将无法恢复
评论(12)
引用来自“kideny”的评论
php7还不出来,thinkphp4.0还不出来!引用来自“kideny”的评论
php7还不出来,thinkphp4.0还不出来!