Ruby on Rails

✍ dations ◷ 2024-09-20 08:37:20 #自由发展元件与函式库,用Ruby编程的自由软件,Web 2.0,Web应用框架,使用MIT许可证的软件

Ruby on Rails(官方简称为Rails,亦被简称为RoR),是一个使用Ruby语言写的开源Web应用框架,它是严格按照MVC结构开发,努力使自身保持简单,使实际应用开发时的代码更少,使用最少的配置。

Rails的设计原则包括“不做重复的事”(Don't Repeat Yourself)和“惯例优于设置”(Convention Over Configuration)。

Ruby on Rails是一种结合Ruby语言与Rails平台的一种网页程序框架,Ruby语言以自然、简洁、快速著称,全面支持面向对象程序设计,而Rails则是Ruby广泛应用方式之一,在Rails平台上设计出一套独特的MVC开发架构,采取模型(Model)、视图(View)、控制器(Controller)分离的开发方式,不但减少了开发中的问题,更简化了许多繁复的动作。

Ruby on Rails的数千个程序已经在线上得到应用。现在使用Ruby on Rails的网站有:

于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作为与数据库之间的传输接口。

Ruby on Rails的模型-视图-控制器架构由以下各部分组成:

模型包含着应用的状态,状态可能是临时的也可能是长久性保存在数据库中的。需要注意的是模型不仅包含数据,而且包含数据代表的逻辑。在Rails中,通常是由一些代表关系数据库中RDBMS表的类组成的。

在Rails中,模型类是通过Active Record模式进行处理的。一般来说,程序员要做的是继承ActiveRecord类,同时程序会自动计算出要使用哪个RDBMS表,这个表有哪些列。表与表之间的关系通过简单的命令来指明。

View负责根据Model中的数据显示用户界面。作为web应用,Rails里的View通常是生成整个或者部分网页。当然可以是XML或者甚至是JavaScript代码。表现为使用内嵌Ruby的HTML/XML/JavaScript模板。

控制器将用户界面和数据模型关联起来,并充当协调运作的角色。它接收各种用户操作,更新数据模型,并用合适的view展示结果给用户。像他的名字一样,可以说应用的主要控制中心就是各个控制器。

查看系统里面安装的gem包,可以发现如下的Rails相关的Gems。

ActiveRecord实现了Rails的对象关系映射。

ActionController是Rails中的控制器,提供各种方法供用户操作使用。

ActionView是Rails中的视图,负责展现用户界面。

ActiveSupport包提供一些工具和支持代码。

ActionMailer用来发送和接收email。

ActionWebService来提供SOAP和XML-RPC支持。需要注意的是,Rails趋向使用更加简单明了的REST方式web服务而不再提倡SOAP格式的web服务。ActionWebServices在未来的版本里面会逐步淡出。

用REST对Web服务提供了优秀的支持。这种风格的Web服务使用指定的资源。

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中提供了ActionWebService作为开发XML-RPC和SOAP的web服务的基础。但是最近的Rails 1.2更加倾向于是用REST方式的web服务,而ActionWebService在Rails 2.0中作为plugin而不再是rails核心的一部分。

对于开发和测试来说,一个很轻量的WEBrick网页服务器已经被包含在了Ruby中,常被用来作为应用服务器。而对于生产应用,常推荐使用带FastCGI的Apache或者Lighttpd,但任何支持CGI或者FastCGI的网页服务器都可以使用。在Apache上,mod_ruby也可以考虑用来提高性能。

使用Rails的架构开发网络应用一般都使用数据库,所以推荐使用一个关系数据库系统来进行数据存储,若不能运行一个关系数据库服务器,Rails支持嵌入式数据库SQLite。Rails还支持关系数据库系统,包括MySQL、PostgreSQL、IBM DB2、Oracle和SQL Server。

开发用的IDE有:Eclipse,MyEclipse,NetBeans,RubyMine,Aptana,Sublime Text,Visual Studio Code

相关

  • 唇裂唇裂与颚裂(英语:Cleft lip and cleft palate),常被合称为唇颚裂,是一系列包含唇裂(CL)、颚裂(CP)、或二者皆有的疾病(CLP)。唇颚裂常包含上颚裂到鼻腔,甚至裂到耳朵都有可能;裂口可能发
  • 外阴上皮内瘤变外阴上皮内瘤变(英语:Vulvar intraepithelial neoplasia, VIN)是外阴癌的癌前病变,是一组外阴疾病的统称,包括外阴上皮不典型增生和原位癌。外阴上皮内瘤变不是癌症,在一些妇女体
  • 法国茴香酒法国茴香酒 (英语:Pastis 英国发音:/ˈpæstɪs/, 美国发音:/pæˈstiːs/)是一种来自法国的茴香味力娇酒和开胃酒,通常含有40-45%酒精浓度,也有不含酒精的法国茴香酒。第一款法国茴
  • 爱德华二世爱德华二世(英语:Edward II,1284年4月25日-1327年9月21日),英格兰国王(1307年—1327年在位),金雀花王朝成员。他的一生皆为其宠信的弄臣和叛乱的贵族所主宰,以致最后悲惨地死去。葬于
  • 普罗万普罗万(Provins)是一座法国塞纳-马恩省市镇,也是该省的副省会。位于巴黎东南77公里处。普罗万在中世纪是一座属于香槟伯爵的防御城镇。由于交通便利,普罗万在12—13世纪成为香槟
  • 芋粄粄条是流行于华南的客家美食。是大米类副食产品。客家人将粄切成条状加以烹煮,故称粄条,例如台湾新竹县新埔镇以粄条出名。同时粄条亦有“板条”之类的俗写。台湾高雄市美浓区
  • 大西263﹣581益州蜀郡新都郡汉嘉郡汶山郡江阳郡犍为郡越巂郡梁州巴郡广汉郡巴西郡巴东郡梓潼郡涪陵郡• 成汉 304 – 347• 谯蜀 405 – 413大西是明朝末年民变领袖之一张献忠在16
  • 《刺胳针》《柳叶刀》(The Lancet),是世界上最悠久及最受重视的同行评审医学期刊之一,主要由爱思唯尔出版公司发行,部分与里德·爱思唯尔集团协同出版。1823年由汤姆·魏克莱(英语:Thomas Wak
  • 阿尔图里·伊尔马里·维尔塔宁阿尔图里·伊尔马里·维尔塔宁(芬兰语:Artturi Ilmari Virtanen,1895年1月15日-1973年11月11日),芬兰化学家,1945年获诺贝尔化学奖。1895年1月15日生于芬兰赫尔辛基。1924—1948年,
  • 瓦莱丽·索拉纳斯瓦莱丽·让·索拉纳斯(英语:Valerie Jean Solanas,1936年4月9日-1988年4月25日)是一位美国激进女性主义作家,曾经试图暗杀艺术家安迪·沃霍尔。1936年索拉纳斯出生于新泽西州,十几