Ruby on Rails(官方简称为 Rails,亦被简称为 RoR)是一个使用Ruby语言写的开源Web应用框架,它是严格按照MVC结构开发的。它努力使自身保持简单,来使实际的应用开发时的代码更少,使用最少的配置。
Ruby on Rails(官方简称为 Rails,亦被简称为 RoR),是一个使用 Ruby 语言写的开源 Web 应用框架,它是严格按照 MVC 结构开发的。它努力使自身保持简单,来使实际的应用开发时的代码更少,使用最少的配置。 Rails 的设计原则包括“不做重复的事”和“惯例优于设置” 。
Ruby on Rails 是一种结合 Ruby 语言与 Rails 平台的一种网页程序框架,Ruby 语言以自然、简洁、快速著称,全面支持面向对象程序设计,而 Rails 则是 Ruby 广泛应用方式之一,在 Rails 平台上设计出一套独特的 MVC 开发架构,采取模型(Model)、视图(View)、控制器(Controller)分离的开发方式,不但减少了开发中的问题,更简化了许多繁复的动作。
历史
于 2004 年 7 月,Rails 的创始人大卫·汉森从 37signals 公司的项目管理工具 Basecamp 里面分离出 Ruby on Rails,并且以开源方式发布。
Rails 在发布以后的短短的时间内就迅速获得很多开发人员欢迎,大卫认为这归功于 Rails 设计为 opinionated software。Rails 当中有很多规矩从一开始就按照 David 的意见制定好了,所以在 Rails 上开发应用程序时,开发人员可以专注于应用程序自身的设计,省却那些花在了解及配置基础框架上面的时间。这也正是 Rails 很重要的精神“约定优于配置”,开发人员遵照 Rails 本身的惯例便可以省却配置配置文件的时间;此外,Rails 虽然强调惯例的重要及便利性,但针对不同的需求,Rails 也提供修改的空间让开发人员可以进行自定义的配置。
Rails 的 MVC 架构
Ruby on Rails 的模型-视图-控制器架构由以下各部分组成:
模型
模型包含着应用的状态,状态可能是临时的也可能是长久性保存在数据库中的。需要注意的是模型不仅包含数据,而且包含数据代表的逻辑。在 Rails 中,模型通常是由一些代表关系数据库中 RDBMS 表的类组成的。
在 Rails 中,模型类是通过 Active Record 模式进行处理的。一般来说,程序员要做的是继承 ActiveRecord 类,同时程序会自动计算出要使用哪个 RDBMS 表,这个表有哪些列。表与表之间的关系通过简单的命令来指明。
视图
View 负责根据 Model 中的数据显示用户界面。作为 web 应用,Rails 里的 View 通常是生成整个或者部分网页。当然可以是 XML 或者甚至是 JavaScript 代码。表现为使用内嵌 Ruby 的 HTML/XML/JavaScript 模板。
控制器
控制器将用户界面和数据模型关联起来,并充当协调运作的角色。它接收各种用户操作,更新数据模型,并用合适的 view 展示结果给用户。像他的名字一样,可以说应用的主要控制中心就是各个控制器。
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。Rails 还支持关系数据库系统,包括 MySQL、PostgreSQL、IBM DB2、Oracle 和 SQL Server。
系统要求
Ruby 语言Web 服务器,如 Apache、lighttpd 等FastCGI,或者 Mongrel 为了提高效率数据库和驱动程序
集成开发环境
开发用的 IDE 有:Eclipse,MyEclipse,NetBeans,RubyMine,Aptana,Sublime Text,Visual Studio Code