Ruby on Rails
![]() | |
開發者 | Rails Core Team |
---|---|
当前版本 | 2.1(2008年5月31日) |
源代码库 | |
操作系统 | 跨平台 |
类型 | 網頁應用框架 |
许可协议 | MIT許可證 |
网站 | rubyonrails.org |
Ruby on Rails,也称 RoR 或简称 Rails,是一个使用Ruby语言写的开源网络应用 框架,它是严格按照MVC结构开发的。它努力使自身保持简单,来使实际的应用开发时的代码更少,使用最少的配置。
Rails的设计原则包括“不要重复自己”(Don't Repeat Yourself)和“约定胜于配置”(Convention Over Configuration)
Ruby on Rails介紹
Ruby on Rails是一種結合Ruby語言與Rails平台的一種網頁程式語言,Ruby語言以自然、簡潔、快速著稱,全面支援面向对象程序设计,而Rails則是Ruby廣泛應用方式之一,在Rails平台上設計出一套獨特的MVC開發架構,採取模型(Model)、視圖(View)、控制器(Controller)分離的開發方式,不但減少了開發中的問題,更簡化了許多繁複的動作。
歷史
於2004年7月,Rails 的創始人David Heinemeier Hanson從 37signals 公司的項目管理工具 Basecamp 裡面分離出 Ruby on Rails,並且以開源方式發佈。 Rails在發佈以後的短短的時間內就迅速獲得很多開發人員歡迎,David 認為這歸功於Rails設計為 opinionated software。Rails 當中有很多規矩從一開始就按照David的意見制定好了,所以在Rails上開發應用程序時,開發人員可以專注於應用程序自身的設計,省卻那些花在瞭解及配置基礎框架上面的時間。這也正是Rails很重要的精神「慣例優於配置」(Convention over Configuration),開發人員遵照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 的组成模块
察看系统里面安装的gem包,可以发现如下的 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套件來實現这个技术已经和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 On Rails 官方網站
- (简体中文)Ruby On Rails 简体中文官方网站
- (繁體中文)Ruby on Rails台灣官方網站
其他
- JavaEye社区Ruby板块
- ROR培训 国内首家Ruby on Rails培训
- RailsCN
- Onlamp.com的Ajax on Rails
- Fast-track your Web apps with Ruby on Rails(David Mertz article at IBM developerWorks)
- Ruby on Rails 和 J2EE:两者能否共存?
- 道喜技术日记首页
- Full Ruby on Rails Tutorial
- Steve Yegge把Rails移植到JavaScript/Rhino
![]() | 这是一篇與计算机相關的小作品。您可以通过编辑或修订扩充其内容。 |