Ruby on Rails 之旅(六)——Ruby on Rails 简介 ( 少就是多)

转自:http://ihower.tw/blog/archives/1743前端

繁体字看着头痛,转成简体字给你们看数据库

 

知名的 Web design 在线杂志 A List apart No.257期少见地刊出 Rails 入门介绍,心血来潮来作翻译,断断续续翻润了好几回,以为文章看起来没什么,翻起来好长啊。
终于再度体会 text.plain 果真是最难写的格式。写投影片,作翻译比写程序还辛苦…orz后端

如下翻译自 Creating More Using Less Effort with Ruby on Rails by MICHAEL SLATER 设计模式

若是你开发网站,想必应该听过 Ruby on Rails (RoR) 的大名。可是若是是网页设计师或前端工程师,或除了PHP没有用过其它框架,那么采用 Ruby on Rails 方案彷佛会是一个很大的改变。在这篇文章中,我但愿可以除去 Ruby on Rails 神秘的面纱,并说服你采起行动,这将会很是值得若是你的需求符合下述的 Ruby on Rails 甜蜜点。浏览器

学新方法去作原本就会作的事情,还要同时学新观念和新技巧,确实会花你一点时间。直接了当地说,即便是 Ruby on Rails,转换技术都将会摧毁你的生产力。然而,我相信网站开发者若是开始采用 Ruby on Rails,将变得更有生产力作出更好的网站,以及从中得到更多的乐趣。ruby

Rails乐趣

Ruby on Rails(简称Rails)是一个完整的框架,意思是说他包含了前端跟后端。它让要作多种不一样工做的人开发者能拥有极强有力的工具。即便基本上你只是前端或后端工程师,你仍能够有效率的使用 Ruby on Rails。咱们能够清楚定义前端(浏览器HTMLCSSJavaScript)和后端(RubyRails框架)的接口,因此若是你只想要专一在其中一端的话,不须要全盘了解。网络

若是你是网页设计师或前端工程师,你会学到如何使用 Ruby on Rails 样板系统,并且学一点内嵌Ruby程序代码在 View 档案。这将让你成为后端开发者更好的伙伴,由于你能够直接操做 Rails 应用程序,而不是让某人去整合HTMLCSS前端工程师

所以不管你用前端或后端工程师的角度采用 Ruby on Rails,能够想一想看有哪些项目能够考虑采用?架构

甜蜜点

Ruby on Rails  BasecampBlinksale43ThingsOdeoRevolution HealthTwitterYellowPages.com A List Apart 这些网页应用程序和网站的核心。这股Rails热情也扩展到许多大网络公司。YahooeBayAmazon AOL 都有 Ruby on Rails 专案,而ThoughtWorks 也正在创建Rails企业级应用程序。可是这么多不一样的 Ruby on Rails 应用程序,有几个重要的共通最适关键。框架

当一个网站或网络服务有如下三个特色的时候,最适合采用 Ruby on Rails 方案:

1.            一个数据库形式的网站(译注:一个透过存取数据库,动态产生内容的网站) 或有足够规模到适合使用一个强大功能的框架。

2.            一个特别而不适用于传统的 CMS 系统 (若是 Joomla Durpal 彻底符合你所需,这些系统会是更好的选择)。

3.            一个全新的应用,容许开发人员开始全新的数据库跟软件架构。

这些是 Ruby on Rails 应用程序的甜蜜点。应用程序若有这些特性,一旦决定投入学习Rails,采用 RoR 将极可能会比 PHP.NETJava 开发的更快速。

生产力爆增

一个最主要的理由就是 Ruby on Rails 增长生产力:创建新的应用程序、增长新功能变成容易地多。结合程序语言(Ruby)和框架(Rails)意指你将能够用更少程序代码。更少的程序和更好的架构表示当要改变时相对无痛,因此你能够迭代和实验更乐意。这将带咱们有更好的网站,并且怀但愿地更有乐趣去建构网站。

固然,采用主要的新工具须要时间的投资,一时没办法轻松。若是你正专一在一项目,可能不是很适合。可是若是你须要持续建构网站,并且是有必定程度的复杂,一个短时间学习 Ruby on Rails 的投资,长期来讲将会是值得的。

要了解我会为何相信你能够用 Ruby on Rails 作更多事且写更少程序,让咱们快速看一下 Ruby

碰见 Ruby

Ruby 是个现代的对象导向语言。在任何 Ruby 程序里,全部东西都是对象。Ruby也是一个动态语言,这表示:

Ruby 被动态直译(就像PHP),因此没有编译(CJava)。这加速了迭代式开发。在Ruby里,变量被使用的时候才被动态指定一个型别,下降了在其它程序语言必须定义跟设定变量。一个Ruby程序能够动态产生程序,修改即便正在执行的本身。Rails内部就使用这个能力,来让你能够简单享受所谓的 “Magic”(你不须要了解到底这个技巧如何运做)
Ruby
是一个读写很是美妙简洁的语言,可是他的优势不仅如此。正由于Ruby能够被强力扩展,Rails框架才能够将他转换成像是建造网站应用程序的专用语言。

Ruby(语言)Rails(框架)是两回事,他们彼此在不少地方相辅相成。全部 Ruby on Rails 应用程序由Ruby写成,而Ruby的特性带给Ruby on Rails很大的影响。有些框架,像是 CakePHP,带了不少 Rails 点子过去。可是Ruby的能力和弹性给了Rails比许多别的框架更多清楚和弹性。若是你正打算投资学习一个框架,学习Ruby并不会是很大的障碍,并且回报至关可观。

Rails 方案

许多网站并无使用任何应用框架:你就写你要的程序和尽量处处复制贴上你所需的程序。对小网站来讲这ok,可是很快你就会失去控制,乱七八糟的程序代码将很难理解与维护。

使用像 Ruby on Rails 这样的框架,不少关于如何组织你的程序代码的决定早就已经为你想好了,并且还有一堆可供挑选使用的函式库。

另外一个重要的Rails特性是使用 model-view-controller (MVC) 结构来组织每个应用。 MVC 是一个组织软件项目的良好设计模式,当你有不少网站或有新人加入工做时,它将带给你程序代码一致性的结构。它提供个别独立的档案,有着干净的接口能够分开前端与后端的开发者。

数据库与对象

Ruby on Rails 被设计成用来建构数据库应用程序,其中许多核心组件专一在与数据库的互动。Rails的核心函式库称做 Active Record,它实作了被称做对象-关联对应(ORM)。有了ORM,你能够操做表明数据的软件对象,而后 Active Record 函式库将会处理与数据库的操做。

这听起来可能有点抽象神秘,让咱们更具体些。即便不知道任何 Ruby 或任何对象导向语言,我打赌你也能够对下列的程序代码范例有感受,如下是实际的 Ruby on Rails 程序代码。

假设你有一个书店网站,你想要加入一本新书。你能够这样写:


newbook = Book.new

你正告诉这个 “Book” 类别你要一个空的 book 对象,称做 “newbook”。你能够设定标题或任何其它属性,直观以下:


newbook.title = "Angle of Repose"
newbook.author = "Wallace Stegner"

在这同时,你有一个对象在内存。这时你须要的是:


newbook.save

而后你的新书将会被写入数据库。Active Record 产生 SQL 告诉数据库插入一笔数据。你还能够只用少少几行的程序代码就能够作字段检查,并产生错误讯息。

如今你想要在成千上万中的数据库找那本书。只要写:


angle_of_repose = Book.find_by_title "Angle of Repose"

因而你获得对象被称做 “angle_of_repose”,它有着全部从数据库捞出来的数据。

固然还有更多,不过也不会太多了; 操做对应网站数据的软件对象是如此天然有威力的方式。在RoR,你有丰富的软件对象对应到你的数据库表格,这些对象被组合成 MVC 系统中的 “model” 层。

你的程序代码与 model 对象互动,而后 Active Record 产生 SQL 让数据库如你所写。你不须要撰写任何数据库SQL语法。正由于不须要让你的程序与数据库直接沟通,你也能够透过更改设定轻松更换数据库软件。

VIEWS CONTROLLERS

要创建网页,Rails 提供样本系统能够轻易地使用一致的网页结构,插入相同的组件不须要重复程序代码,展现来自数据库的数据,显示并处理窗体。这些样板组成MVC系统的 “view” 层。

若是你是前端开发者,这是 Rails 中你应该特别专一的部份。你能够简单假设你的 “view” 档案将会处理任何你要显示出来的数据变量。正如同 PHP 档案混合了 PHP 程序代码和 HTML,一个典型的 Rails view 也是混合了 Ruby HTML。继续咱们的书店范例,这里是一段 view 程序代码显示书的标题和做者:


<h1><%= book.title %></h1>
<p><%= book.author %></p>

Ruby 程序代码被标记成 <%= and %>; 其他则是HTMLHTMLRuby程序代码的输出结合后,创建出网页。

Rails 被整合成支持 Prototype  Scriptaculous Javascript 函式库,再加上一个称做 Ruby JavaScript(RJS) 用来建构 Ajax 使用者接口的厉害机制。你能够用 Ruby 几乎彻底全部事情,包括最终被执行在浏览器的 Javascript 程序代码 (Rails 框架会处理这些转换)

一个 “controller” 是一整块Ruby程序代码用来与 Model 沟通,并准备数据给 view。任何view所需的数据都会先在 controller 用一组变量所组成。这个 controller 也在页面加载好之后响应 Ajax 的需求。Controller 也提供多种其它功能,从使用者认证到错误处理等。

惯例胜于设定 (Convention over Configuration)

Rails 试图努力对任何事情都去提供一个合理的默认值。根据这个称做惯例胜于设定的哲学,Rails 大大下降了设定档的须要。

若是你依照Rails的惯例,将会有使人惊艳的成果,从路由request对应到正确的 controller view,到验证窗体数据和显示错误讯息,均可以直接运做。与其它语言和框架比较起来,它使用了更少程序去达到更多常见的任务。

惯例胜于设定的方式对初学者可能会有点挫折,特别是若是是从一个已经存在的应用程序开始用起,由于会有隐藏的假设藏在程序代码里面。这些假设会让程序简洁,可是当你不知道的时候也会形成困惑。但当你学习Rails惯例以后,Rails的全部事情就会变成有意义了。一旦当你建构全新的网站时,你将如虎添翼般,由于有这么多已经为你定义好的东西。

它并不完美

Rails 的确有它的缺点。当应用程序知足上述的甜蜜点时,这些缺点能够被忽略不计,可是在极端状况倒是很大的问题。

Ruby 比大多数其它程序语言还来的慢。固然这几年将会改善,可是他对少数应用程序来讲这是一个缺点,的确是个问题。不过实际上对绝大多数的网站这并非问题所在。

MVC 框架的架空使用也将拖慢速度。仔细看大多数的Rails应用都执行良好,可是不少 Model 操做均可以经由调校下降对数据库的存取次数。你经常能够完全地下降数据库操做:Rails 包含了强而有利的快取系统,经常被存取的网页能够只被创建一次,而后被读取不少次。

Rails 应用程序也经常在hostingPHP碰到更多的麻烦。由于Rails

相关文章
相关标签/搜索