当前位置: 首页 > 工具软件 > Rails > 使用案例 >

Ruby on Rails 简介

解浩渺
2023-12-01

什么是Ruby on Rails

     Ruby on Rails(官方简称为RailsRoR非官方简称)是使用Ruby这套开放原始码(采用MIT授权)、物件导向程式语言所开发的Web开发框架,主要用于开发数据库网站应用程式。Rails是一套专业的开发框架,采用了MVC(Model-View-Control)模式、内建支援单元测试和整合测试、支援AjaxRESTful接口、ORM机制,以及支援各种最新的业界标准像是HTML5JQuery等等功能。它的发明人是David Heinemeier Hanson(DHH)DHH2004年将Rails37signals商业产品中独立出来成为开源专案。

它的设计目标是只要开发者熟悉它的惯例,它就可以让网站开发变的非常容易。而相对于其他程式语言和框架,Rails可以让你用更少的程式码达成更多的功能,它甚至让网站开发变得更有趣。

Rails的哲学包括以下指导原则:

  • 不要重复自己(DRY: Don’t Repeat Yourself) – 撰写出重复的程式码是件坏事
  • 惯例胜于设定(Convention Over Configuration) – Rails会默认各种好的设定跟惯例,而不是要求你设定每一个细节到设定档中。
  • REST是网站应用程式的最佳模式 – 使用Resources和标准的HTTP verbs(动词)来组织你的应用程式是最快的方式(我们会在路径一章详细介绍这个强大的设计)

为何选择Rails

这是一个开发框架的时代,熟悉开发框架的人,可以很快的完成任务以及熟悉网站程式的架构。而各种程式语言要入门上手,其实都不会太困难。我认为重点会在于你不能够熟悉做事情的框架。

所以,撇开程式语言的偏好,Ruby on Rails是目前网站开发框架中做前端(提供动态HTML给浏览器)应用服务器最为成功和技术先进的。它的概念也深深影响了非常多其他程式语言的后进网站开发框架,例如ASP.NET MVCCakePHPGrailsTurboGearsPylonsweb2pycatalyst等等(模仿是最大的恭维)。我们可以用非常有效率的程式码开发出网站应用程式。另外,可能会让你感到意外的是,它也是目前动态语言中,生态圈最为丰富的网站开发框架,相关的书籍、研讨会、顾问公司、第三方服务、外挂套件等等十分丰富。因为使用Rails的人数众多,所以在开发上各个方向都有人提供了最佳实务,像是如何写出好的程式码、网站安全性、网站性能、扩充性、全文搜寻、异步处理等等,这是一个非常活跃的社群。

当然,最重要的一个理由,就是采用Rails后生产力暴增:写新的应用程式、增加新功能变成容易地多。让你可以用更少程式码做更多的事情,而且程式也更容易维护。当然,学习新工具总是需要时间投资的,一开始可能没办法立刻见效。但是如果你有长期的开发工作,而且网站有一定的复杂性,那么一个短期学习Ruby on Rails的投资,长期来说将会是非常值得的。

Rails 不是什么

  • 如上所述,Rails是一个打造网站应用程式的开发框架,如果你只需要静态的HTML,那是绝不需要用到Rails的。
  • Rails不是CMS(Content Management System)内容管理系统。CMS是一套写好的架站系统,可以让你不需要写程式就可以架站。市面上流行成熟的CMS系统多为PHP写成,例如DrupalWordPress等。当然也有用Ruby写的,例如Radiant。如果这些架站系统刚好符合你的需求,那就不一定需要Rails
  • Rails是一套网站开发框架帮助你建立网站应用程式,它不是程式语言。

什么是Ruby

Rails是一套使用Ruby开发的网站框架。如果您对Ruby一无所知就一头栽进Rails,恐怕不是个好主意。

Ruby是一套开放原码、物件导向的动态直译式(interpreted)程式语言,它有着简单哲学、高生产力、精巧、自然的语法。他的创造者是来自日本的松本行弘(又名Matz),设计的灵感来自于LispPerlSmalltalk,设计的目的是要让程式设计师能够快乐地写程式。

让我们看一个非常简单的范例:

irb(main):001:0> str="aaaaa"
=> "aaaaa"
irb(main):002:0> 5.times {p str}
"aaaaa"
"aaaaa"
"aaaaa"
"aaaaa"
"aaaaa"
=> 5

这的范例就简单告诉我们有关Ruby的三件事情了:

  • 动态分型(typing),不需要宣告型态
  • 每样东西都是物件,包括数字
  • 使用Code Block形式的匿名函式(anonymous function)随处可见
 类似资料: