专攻难题:Rails、MVC及最常用的Rails命令

全文共5560字 , 预计学习时长14分钟
专攻难题:Rails、MVC及最常用的Rails命令文章插图
图源:unsplash
在使用Ruby编写web应用程序时 , 创始人David HeinemeierHansson说 , 他只不过是将以往应用程序的通用部分复制粘贴到新程序中 。
包括他在内 , 所有程序员都喜欢解决难题 。 尝试解决工作领域内独有难题的唯一方法 , 是构建一个抽象层 , 并清除脑海中所有关于基础web程序的细节 。 使用Rails可以专注解决困难部分 , 消减重复性工作 。 Rails命令十分神奇 , 但我们必须了解每个命令的功能和编写过程 。
Rails是什么?
Rails是一种web应用框架 。 根据模型-视图-控制器(MVC)模式 , 它包括了创建数据库支持的web应用程序时所需的所有内容 。 MVC将应用分为三层:模型、视图和控制器 , 每一层都有特定任务 。
专攻难题:Rails、MVC及最常用的Rails命令文章插图
模型-视图-控制器(MVC)结构示意图
模型层
模型层代表领域模型(如Account、Product、Person、Post等) , 概述应用程序中特有的业务逻辑 。
在Rails中 , 数据库支持的模型类源于 ActiveRecord::Base 。 Active Record支持用户将数据库行的数据表示为对象 , 并使用业务逻辑方法修饰这些数据对象 。 大多数Rails模型由数据库支撑 , 模型也可以是Ruby普通类或实现由 Active Model模块提供的一组接口的Ruby类 。
控制层
控制层的功能在于处理传入的HTTP请求以及给出适当响应 。 通常这一层意味着返回HTML , 但Rails控制器还可以生成XML、JSON、PDF、移动专用视图及其他格式 。
控制器加载和操作模型 , 并呈现视图模板 , 以便生成适当的HTTP响应 。 在Rails中 , 传入要求由Action Dispatch发送至相应控制器 , 控制类来自 ActionController::Base 。 Action Dispatch和Action Controller一起绑定于Action Pack中 。
专攻难题:Rails、MVC及最常用的Rails命令文章插图
图源:unsplash
视图层
视图层由“模板”组成 , 主要负责提供应用程序资源的适当描述 。 模板可以有多种格式 , 但大多数视图模板都是带有内嵌Ruby代码的HTML(ERB 文件) 。 视图通常生成控制器响应 , 或生成电子邮件正文 。 在Rails中 , 视图生成由Action View处理 。
开发一款新型Rails应用
首先从头构建一个应用程序 , 这步之前要确保系统内装有Ruby、RubyGems和Bundler 。 打开终端导航到一个有权限创建文件的目录 。 先要做的是安装Rails并通过运行railsnew 命令构建一个新型Rails应用程序 。
要从头开始创建只支持API的Rails , 创建时--api应在Rails应用程序名称之后:railsnew --database=postgresql --api (使用Postgresql数据库配置应用程序更为容易 , 但别忘了在运行命令前安装这一数据库) 。 例如:rails new Gallery --database=postgresql –api 。
通过使用 --api 旗标 , Rails能够删除许多默认功能和中间件(大多是涉及无用的浏览器) 。 控制器继承ActionController::API而非ActionController::Base , 生成器会跳过生成视图 。 为只支持API的Rails构建设置资源无须作任何改变 。
将所有所需gem添加至Gemfile中后开始运行bundle install 。
· 初始化数据库:rails db:create
· 运行Rails服务器:rails s
Rails生成
Rails团队的首要目标是高效地构建核心应用程序功能 。 Rails系统拥有大量生成器 , 能帮助用户完成一些手动作业 。 生成器除了节省时间 , 还有一些其他优点:
· 生成器能够为应用程序测试套件设置基本规格 。 它们会为用户提供一些基本例子而非编写复杂的逻辑测试 。
【专攻难题:Rails、MVC及最常用的Rails命令】· 经设置 , 生成器的运行方式保持不变 , 这样便能标准化代码并帮助用户更有效地开发 , 原因在于用户不必过多担心手写代码时可能会出现的拼写、语法错误或其他相关漏洞 。
· 生成器遵循Rails最佳操作 , 包括使用RESTful命名模式、删除重复代码、使用部分和许多其他最佳类型设计模式 。
然而 , 某些生成器会创建相当多的代码 。 如果不使用某个代码 , 它就会造成应用程序代码不必要的混乱 , 从而给以后的程序员带来困扰 。 所以何时使用生成器最好呢?所有Rails生成器作为命令输入终端 , 并遵循下列语法:
rails generate --no-test-framework--no-test-framework 是一个旗标 , 意在提醒生成器不要为新生成模型和控制器等创建任何测试 。 当用户运行自己的Rails应用程序时则不需要旗标 , 这十分有助于快速建立测试套件 。