编写背景:
Klobo离职已经3周了,接手自动化缺货监控报告工具也3周了,有一部分功能用到了ruby on rails,业务部门提出了个新需求,以后每天都要抽一些时间来学习学习才能搞定这个工具的维护,同时为以后自己搭建自动化测试工具框架做准备。今天就从最基础的开始。
本文资料来源:http://zh.wikipedia.org/wiki/Ruby_on_Rails
简介
Ruby on Rails 是一个可以使你开发,部署,维护 web 应用程序变得简单的框架。
Ruby on Rails,简称Rails,是一个使用Ruby语言写的开源Web应用框架,它是严格按照MVC结构开发的。它努力使自身保持简单,来使实际的应用开发时的代码更少,使用最少的配置。
Ruby on Rails是一种结合Ruby语言与Rails平台的一种网页编程语言,Ruby语言以自然、简洁、快速著称,全面支持面向对象程序设计,而Rails则是Ruby广泛应用方式之一,在Rails平台上设计出一套独特的MVC开发架构,采取模型(Model)、外观(View)、控制器(Controller)分离的开发方式,不但减少了开发中的问题,更简化了许多繁复的动作。
Rails的设计原则包括“不做重复的事”(Don't Repeat Yourself)和“惯例优于设置”(Convention Over Configuration)。
来历
Ruby的作者于1993年2月24日开始编写Ruby,直至1995年12月才正式公开发布于fj(新闻组)。之所以称为Ruby,是因为Perl的发音与6月的诞生石pearl(珍珠)相同,因此Ruby以7月的诞生石ruby(红宝石)命名。
2004年7月,Rails的创始人大卫•海纳梅尔•韩森从37signals公司的项目管理工具Basecamp里面分离出Ruby on Rails,并且以开源方式发布。
Rails在发布以后的短短的时间内就迅速获得很多开发人员欢迎,大卫认为这归功于Rails设计为opinionated software。Rails当中有很多规矩从一开始就按照David的意见制定好了,所以在Rails上开发应用程序时,开发人员可以专注于应用程序自 身的设计,省却那些花在了解及配置基础框架上面的时间。这也正是Rails很重要的精神“约定优于配置”,开发人员遵照Rails本身的惯例便可以省却配置组态档的时间;此外,Rails虽然强调惯例的重要及便利性,但针对不同的需求,Rails也提供修改的空间让开发人员可以进行自定义的组态。
运作模式
Rails框架是以固定的命名习惯来自动判断整个架构,默认下会将网址分析成http://domain-name/ControllerName /ActionName/Attribute/ 然后运行目标Controller中的Action,并取出指定的View(视图)回传给浏览器显示。面对数据库则以Model(模块)的形式,借由Active Record作为与数据库之间的传输接口。
Rails的MVC架构
Ruby on Rails的模型-视图-控制器架构由以下各部分组成:
模型
模型包含着应用的状态,状态可能是临时的也可能是长久性保存在数据库中的。需要注意的是模型不仅包含数据,而且包含数据代表的逻辑。在Rails中,模型通常是由一些代表关系数据库中RDBMS表的类组成的。
在RoR中,模型类是通过Active Record模式进行处理的。一般来说,程序员要做的是继承ActiveRecord类,同时程序会自动计算出要使用哪个RDBMS表,这个表有哪些列。表与表之间的关系通过简单的命令来指明。
控制器
控制器将用户界面和数据模型关联起来,并充当协调运作的角色。它接收各种用户操作,更新数据模型,并用合适的view展示结果给用户。像他的名字一样,可以说应用的主要控制中心就是各个控制器。
视图
View负责根据Model中的数据显示用户界面。作为web应用,Rails里的View通常是生成整个或者部分网页。当然可以是XML或者甚至是JavaScript代码。表现为使用内嵌Ruby的HTML/XML/JavaScript模板。
Rails的组成模块
Rails使用如下Gems
actionmailer (1.3.2)
Service layer for easy email delivery and testing.
actionpack (1.13.2)
Web-flow and rendering framework putting the VC in MVC.
actionwebservice (1.2.2)
Web service support for Action Pack.
activerecord (1.15.2)
Implements the ActiveRecord pattern for ORM.
activesupport (1.4.1)
Support and utility classes used by the Rails framework.
rails (1.2.2)
Web-application framework with template engine, control-flow layer, and ORM.
模型:Active Record
ActiveRecord实现了Rails的对象关系映射。
控制器和视图:ActionPack
ActionController是Rails中的控制器,提供各种方法供用户操作使用。
ActionView是Rails中的视图,负责展现用户界面。
常用实用工具:ActiveSupport
ActiveSupport包提供一些工具和支持代码。
处理邮件:ActionMailer
ActionMailer用来发送和接收email。
Web服务:ActionWebService
ActionWebService来提供SOAP和XML-RPC支持。需要注意的是,Rails趋向使用更加简单明了的REST方式web服务而不再提倡SOAP格式的web服务。ActionWebServices在未来的版本里面会逐步淡出。
网络资源:ActionResource
用REST对Web服务提供了优秀的支持。这种风格的Web服务使用指定的资源。
Rails中的AJAX
AJAX(异步JavaScript与XML)是一种异步传输接口,可以借由浏览器使用JavaScript和XML来处理传输请求,而将Web服务器作为后台来处理,这样无须载入额外的网页。Rails自带有Prototype包 来实现这个技术。Ajax已经和Ruby on Rails结合在了一起成为了一个新的系统叫做“Ajax on Rails”。Rails提供一些助手工具来更方便地实现AJAX应用。 Rails提供了一些Helper,可以在服务器一端用纯Ruby语言生成给浏览器用的JavaScript代码,从而让Rails的开发者不需掌握 JavaScript就可以简单方便的开发出AJAX的应用。
Rails和Web服务
稍早的版本的Rails中提供了ActionWebService作为开发XML-RPC和SOAP的web服务的基础。但是最近的Rails 1.2更加倾向于是用REST方式的web服务,而ActionWebService在Rails 2.0中作为plugin而不再是rails核心的一部分。
Web服务器支持
对于开发和测试来说,一个很轻量的WEBrick网页服务器已经被包含在了Ruby中,常被用来作为应用服务器。而对于生产应用,常推荐使用带FastCGI的Apache或者Lighttpd,但任何支持CGI或者FastCGI的网页服务器都可以使用。在Apache上,mod_ruby也可以考虑用来提高性能。
数据库支持
使用Rails的架构开发网络应用一般都使用数据库,所以推荐使用一个关系数据库系统来进行数据存储,若不能运行一个关系数据库服务器,Rails也支持SQLite库。很多关系数据库系统都支持,包括MySQL、PostgreSQL、SQLite、IBM DB2、Oracle和SQL Server。
系统要求
• Ruby语言
• Web服务器,如Apache、lighttpd等。
• FastCGI,或者Mongrel为了提高效率
• 数据库和驱动程序
集成开发环境
开发用的IDE有:Eclipse , IntelliJ, Aptana。
类似的框架
• CakePHP
• Django
• TurboGears
• CodeIgniter