Ruby on Rails(又叫RoR或者Rails)是用Ruby语言编写的一种Web应用程序框架,而Ruby是以语法简洁出名的面向对象的编程语言。2004年发布的RoR是个开源项目,最初为Web开发公司37signals LLC设计的一个项目管理工具充当基础。它很容易在Linux、Windows和Macintosh等诸多环境之间移植,能够对Web开发小组构建及维护企业网站和应用程序的速度带来显著影响。
Rails采用同样的组件设计理念和开发环境,在构建数据库支持的Web应用程序时,为开发人员在代码层面提供了几个重要优点。其中一个核心原则强调通过避免冗余代码、遵守Rails的约定,减少开发应用程序的代码。这意味着可提高性能,并且有望缩短开发时间。
由于Ruby on Rails具有的这些效率和开源特性,这种Web开发框架的知名度急剧上升。用Rails构建的知名应用程序和网站包括:37signals公司自己的Basecamp项目管理工具、Jobster工作搜索网站和Revolution Health(这是由AOL公司前CEO Steve Case主管的互动健康信息网站)。
Ruby
Ruby是一种纯粹的面向对象的开源编程语言,语法非常简洁,被称为“集Smalltalk的优雅性、Python的易用性和Perl性的实用性于一体。”作为一种解释型的脚本语言,Ruby既适用于创建临时的小脚本,也适用于编写完整的应用程序。Ruby使用直接执行模型和动态类型(dynamic typing),可以逐步开发代码;大多数情况下,添加一项功能后,可以马上试用。Ruby程序通常比Perl、Python或者C++程序来得简短。
Ruby的开发者:松本行弘说过,他需要既能提高工作效率、又易于使用的一种语言。实际上,追求编程乐趣的这种渴望也许是Ruby与其他任何语言最大的不同之处。头一次开始阅读Ruby文献时,很容易认为这是精品语言,有一群近乎狂热的用户对它顶礼膜拜。不过请记住:Perl、PGP和Python开始时几乎也是同一种情况。
每种语言都是为特定目的而设计的:易于编程、代码紧凑性、可读性、执行速度、面向特定情形(如文本处理、数据库处理或者数值计算)。即便如此,由于大多数语言都是完备的语言,几乎可以用它们处理各种事务;它们之间的实际差异在于形式、风格、大小、易用性和可管理性。松本行弘在接受网上采访时说:“各语言确实不同,但区别很有限。譬如说,Python和Ruby为程序员提供了几乎同样的功能。”
松本在设计Ruby时尽量少用“装置”及冗词赘语,譬如标题以及对变量和类说明的诸多要求。Ruby的语法是这样的:一旦你熟悉了它的词汇和风格,就可以像读自然语言那样阅读多行代码,这大大简化了程序的读解及维护。
Ruby不需要每个程序的开头部分要有长长的语句来说明结构和变量。Ruby与Perl一样也有不少功能,很容易用来处理文本文件和系统管理等任务。你可以为类添加方法,甚至在运行时为实例添加方法,从而让一个类的实例其行为有别于同一个类的其他实例。另外与Perl一样(但与Python大不相同),Ruby让你可以用多种方法来编写代码,因而它能吸引风格和个性截然不同的程序员。
Rails
Rails是用Ruby实现的一种全堆栈(full-stack)、开放源代码的编程架构,旨在快速、轻松地编写面向数据库的实际Web应用程序。它由丹麦的大学生David Heinemeier Hansson开发而成,基于他所编写的名为Basecamp的项目管理工具。Ruby on Rails在2004年7月向大众发布。
Hansson说,全堆栈架构的意思是指,构建应用程序的各层,以便协同工作,从而不必重复你自己(DRY);自上而下都使用一种语言。Rails里面的一切都是用Ruby编写的。为了实现DRY,Rail依靠两条指导原则。
第一条原则是软件要简洁,这意味着编写较少的代码行。保持代码简短可以加快开发、减少错误,并且使代码更容易理解、维护及改进。Ruby中有助于编写简短代码的一个特性就是,它假定架构本身能够并且应当处理元数据。
第二条原则是约定优于配置原则,这意味着Rails不使用配置文件,而是依靠一些简单的编程约定,通过使用应用程序代码里面已有的信息以及运行的数据库,让Rails弄清楚它需要知道哪些东西。据Hansson声称:“这意味着不需要由XML文件来说明代码已经里面说明的情况。这意味着没有编译阶段:改动代码后,就可以看它的效果。”