Rails 学习感想

后端(应用层)不同于前端,最重要的概念是 middleware/pipeline.

Rails能较为深入的理解一定要建立在对后端整体架构理解架构的基础上,不然就会进入开始很爽越来越晕的尴尬节奏。

大致分为两大部分:Server/App,一个负责接收分发 request,一个负责业务逻辑,他们之间的数据对接靠 Rack 规范。Server 具体可参考这篇文章。而 App 部分就是 Rails。

Rails干的活一句话就是一个按照 Rack 标准数据格式化的 Request 进来,分析url,分配给它一个 Handler 方法处理:

  1. 解析 url 参数,HTTP header/body
  2. 身份验证,权限验证
  3. Database操作
  4. 渲染需要返回的数据(html/json)

当然为了控制 App 的逻辑复杂度,Rails 采用 MVC 架构,遵循 convention over configuration,don't repeat yourself 理念,尽量将 Server API 设计的 restful.

Rails 重要的组件都是根据 Handler 来,ActionController,ActiveRecord(ORM),ActiveView(view).

然后对一个项目还有:配置,第三方库管理(bundler),测试(RSpec/factory_girl)

这里要提一下Rspec,对于魔法语言 Ruby 来说,只有相对完善的测试(最好TDD)心里才踏实,推荐一本书《Everyday Rails Testing With RSpec》。

有时有些 Request 是好是操作,我们需要后台任务,需要了解 sidekiq.
对于 HTML 有时可能需要 Cache,这时简单粗暴的内存KV数据库 memcached。

有哪些地方容易写出坑:

  1. 低效 SQL,所以对 SQL 也要有一定了解,知道一个链式 ActiveRecord 操作背后执行的哪条 SQL,而且对所用数据库(MySQL/Postgresql/MongoDB)有一定了解。
  2. 尽可能不要在 View 中写业务逻辑。
  3. Controller 中有过多逻辑。
  4. 当我们把逻辑从 Controller 迁入 Model,Model 会迅速臃肿起来。

对 Ruby 的理解需要达到什么程度?看懂《Ruby元编程》。

拓展阅读:

再谈 API 的撰写 - 架构-程序人生

你可能感兴趣的:(Rails 学习感想)