首页>参考读物>计算机科学与技术>综合

Web开发敏捷之道:应用Rails进行敏捷Web开发(原书第4版)
作者 : (美)Sam Ruby; Dave Thomas; David Heinemeier Hansson 著
译者 : 慕尼黑Isar工作组 骆古道 等译
出版日期 : 2012-02-23
ISBN : 978-7-111-37404-6
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 364
开本 : 16
原书名 : Agile Web Development with Rails  Fourth Edition
原出版社: Pragmatic Bookshelf
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书第1版曾荣获Jolt大奖“最佳技术图书”奖。在前3版的内容架构基础上,第4版增加了对Rails中新特性和最佳实践的内容介绍。本书从一步一步创建一个真正的应用程序开始,在之后的章节才开始介绍Rails的内置功能。全书共分为3部分,第一部分介绍了Rails的安装、应用程序验证、Rails框架的体系结构,以及Ruby语言的知识;第二部分用迭代方式建立了应用程序,然后依据敏捷开发模式搭建了测试案例,最终用Capistrano完成部署;第三部分有条不紊地补充缺少的知识并涵盖足以应付真实环境的日常工作。本书既有直观的实例,又有深入的分析,同时涵盖了Web应用开发中各方面的相关知识,堪称一部内容全面而又深入浅出的佳作。
本书适合Ruby和Rails的初级、中级读者阅读,并可作为开发人员的参考手册。

图书特色

在Ruby on Rails的帮助下,你可以快速创建出美观且高质量的网站,而且只需要专注于创建应用程序本身,Rails会完成所有细节部分的实现。
  成千上万的开发者通过这本屡获殊荣的书来学习Rails。它由Rails核心团队极力推荐,是一本广泛、深远的教程和参考书。如果你是一位Rails初学者,本书会提供入门级指导;如果你是一位经验丰富的开发者,本书同样会提供全面、丰富的Rails信息。
作者简介
Sam Ruby 是一位卓越的软件开发者,他是W3C HTML工作组的负责人之一,并在Apache软件基金会的许多开源软件项目中作出了积极的贡献。他还是IBM新兴技术集团的一位高级技术人员。

Dave Thomas 是“敏捷宣言”的作者之一,所以他了解敏捷性;因为他是《Programming Ruby》一书的作者,所以他又了解Ruby;又因为他是一位活跃的Rails开发者,所以他也了解Rails。

David Heinemeier Hansson 是Rails框架的创建者。

图书前言

Ruby on Rails是一个能简化开发、部署和维护Web应用程序的框架。在Rails最初版本发布后的几个月内,Rails就由开始的不为人知而发展为风靡全球,而更重要的是,它已经成为对于开发Web 2.0 应用程序的重要选择。
  为什么会这样
  Rails就是让人感觉舒服
  首先,大量的开发人员对其使用的Web应用程序开发技术感到失望,不论他们使用的是Java、PHP或是.NET—它们使开发人员的工作难度不断增加。正在这时,Rails出现了,它简单易学。
  但是仅仅简单是不够的。我们谈论的是编写实实在在网站应用的专业开发人员。他们总是通过使用最新的、最专业的技术来让自己的应用程序能够经得起时间的考验。这些开发人员在深入Rails之后,就会发现它远不仅限于是开发网站的工具。
  举例来说,所有的Rails应用程序都使用了模型-视图-控制器(Model-View-Controller,MVC)的结构。Java程序员通常使用的Tapestry 和 Struts 框架都是基于MVC的。但是Rails在应用MVC方面更进了一步:当你刚开始使用Rails开发时,你就已经处于一个工作状态的应用程序中了,每段代码都置于相应的位置,而且所有的应用程序段都以某种标准的方式交互。
  专业的程序员总是编写相应的测试程序。Rails也同样提供了这方面的支持。所有Rails应用程序内置了对测试的支持。当在代码中加入新的功能时,Rails就会自动创建针对这项新功能的测试存根(stub)。Rails框架让应用程序的测试变得更容易,因此,Rails应用程序趋向于已经通过测试的应用程序。
  Rails应用程序是用Ruby编写的,Ruby是一种现代的面向对象脚本语言。Ruby简练而容易理解,你可以通过Ruby自然而清晰地表述自己的想法,这使得使用Ruby编写程序很容易,而且即使几个月后再回顾代码时也很容易(这是很重要的)。
  Rails通过给Ruby加上了一些限制和一些新颖的扩展,从而减轻了程序员的工作,而且程序变得更短小、更易读,并且Rails允许我们将以前需要在外部配置文件中才能完成的任务,放到代码库中来完成。这样一来,我们可以更容易地弄明白正在发生的是什么。下面的代码定义了一个项目中的模型类。现在你不必关心其中的细节,只需要注意在这短短几行代码中描述了多少信息即可。

  在Rails中,有两个哲学观点使得Rails的代码短小易读:不要自我重复(Don抰 Repeat Yourself, DRY)和惯例重于配置(convention over configuration)。不要自我重复意味着:系统中的每个知识点只应该在一个地方描述一次。Rails借助了强大的Ruby来实现这一目标。在Rails应用程序中,你几乎看不到重复的代码,把需要表达的内容只放在一个地方—通常是符合MVC架构惯例的地方。使用其他Web框架的程序员大多有这样的经历:只要对程序结构做一点点修改,就必须同时修改好几处代码,这是一种灾难。
  惯例重于配置也同样重要。Rails精准地定义了如何将应用程序拼接起来。只要遵循这些惯例,编写一个Rails应用程序所需的代码量远比使用XML配置的典型Java Web应用程序少得多。如果你不想应用这些惯例,在Rails中也可以很简单地实现。
  除此之外,开发者还会在Rails中发现:它并没有给还很新的实际Web标准添乱,相反,它正在帮助定义这些标准。还有,Rails能让开发者更轻松地将Ajax和REST风格的接口之类的新技术整合到自己的应用中—它内置了对这些技术的支持(如果你还不熟悉Ajax和REST接口,别担心,我们会在本书后面介绍它们)。
  开发者还需要经常担心应用程序的部署问题。而使用Rails,只需要输入一条命令,就可以将最新版本的应用程序部署到任意多台服务器上(如果发现上传的版本有问题,撤销也同样容易)。
  Rails来源于实际的商用程序。创造一个框架最好的办法是:首先概括出特定应用的核心功能,然后从中抽取出通用的代码作为基础。在开发Rails应用程序时,你就会发现,一个出色的应用程序的一半已经有了。
  当然,Rails还有其他优点—有些甚至很难言传。总之,Rails就是让人感觉很舒服。当然了,这要等到你自己动手写一些Rails的应用程序时才能体会到(这大概是下一个45分钟的任务……)。这也就是我们本书的主旨。
Rails是敏捷的
  当你看到本书的书名的时候,可能会感到奇怪,为什么书里没有关于“在Rails中编写某某敏捷实践”这样的章节。
原因很简单:敏捷是Rails开发基础的一部分。
  我们先来看看下面4条“敏捷开发宣言”所描述的价值观:
   人和人与人之间的交互重于工序和工具。
   可工作的软件重于全面的文档。
   与客户交流重于合同谈判。
   快速响应变化重于墨守成规。
  Rails完全是为了增进人与人之间的交互。这里没有繁重的工具,没有复杂的配置,没有冗长的过程。这里只有开发者组成的小集体,他们最爱的编辑器,以及一堆Ruby代码。这使得开发具有高透明度,开发者的工作能够立即让客户看到。这是一个本质上的交互过程。
  Rails并不废弃文档。通过Rails可以轻易地为所有代码库生成HTML格式的文档。但Rails的开发过程并不由文档驱动。在一个Rails项目的核心里,你不会找到一份500页的说明书,只会看见一组用户和开发者共同探讨着他们的需求和寻找实现需求的办法。你会发现,通过这样的方式,随着开发者和用户逐渐加深对问题的了解,解决方案也会不断变化。你会发现,这个团队在开发周期的初期就开始交付可以工作的软件。这个软件的细节可能很粗糙,但它让用户可以马上初步体验到将来的产品。
  通过这种方式,Rails鼓励开发人员与客户之间进行合作。当客户看到Rails项目能够这么快响应他们的需求变化,他们开始相信这个开发团队可以提交令他们满意的产品,而并不只是仅仅符合基本要求。客户和开发人员的争执也变成互相之间的探讨。
  归根到底,这些都是为了能够使Rails及时地响应变化。其中最能体现Rails符合DRY准则的一点是,对于Rails应用程序的调整,其影响的代码量要远远小于其他框架。又由于Rails是用Ruby开发的,因此开发理念可以通过Ruby简练而精准地表述,对于代码的修改也只限于局部化且易于编写。另外,Rails特别重视对软件单元和功能的测试,以及对测试套件和测试存根的支持,这些都给开发者再调整程序时提供了相对安全的保障。有了这样一组完善的测试作为保障,对程序的调整已不再是一件伤脑筋的事情了。
  相对不断提及Rails的敏捷性,我们认为最好的方式还是让框架自己来说话。在你阅读前4章的内容时,请设想你正在进行网站开发:你正在与客户进行讨论,确定任务的优先级和解决方案。然后,在你读到第三部分的高级部分时,再考虑如何通过你已了解的Rails框架来更快地实现客户需求。
  关于敏捷开发和Rails的最后一点是:虽然可能听起来不是那么专业,但是你会体会到写代码时的无穷乐趣。
本书读者对象
  本书适合正在寻找工具用于开发和部署基于Web的应用程序的程序员。这既包括Rails的入门者(甚至也许是Ruby的入门者),也包括那些已经具备Rails基本知识而希望更进一步学习的程序员。
  我们假设读者已经熟悉了一些关于HTML、CSS(Cascading Style Sheet,级联样式表)和JavaScript的基本知识,也就是说,可以读懂网页的源代码。你不需要是这方面的专家,你只要能从本书中复制和粘贴代码就行,这些代码也可以直接从网站上下载。
怎样阅读本书
  本书第一部分是学好Rails的一切前提。通过学习这一部分的内容,你可以简单地了解Ruby(编程语言),关于Rails的概述,以及关于Ruby和Rails的安装,并且通过一个简单的例子来检验安装过程。
  第二部分将通过一个扩展过的示例来介绍Rails背后的一些概念。在这个示例里,我们创建了一个简单的网上商店。我们并不准备在这个示例里详细介绍Rails的每一个组件(比如,这一章是关于MVC的模型,这里是关于MVC的视图等内容)。这些组件在设计时就是为了互相协调工作,该部分的每一章只涉及了一组相关任务中的一部分,而这组任务是通过很多组件互相协调来实现的。
  大多数读者似乎乐于一边读书一边亲手尝试构建应用程序。但如果你懒得输入,也可以直接下载源代码(提供压缩的tar文件包和zip压缩包两种格式)。
  本书第三部分涵盖了整个Rails生态系统。首先会介绍Rails功能和设备。然后介绍一些主要附件,正是它们充分发挥了Rails框架的功能。最后还介绍了一些流行的Rails插件,正是它们成就了Rails的开放生态系统,而不仅仅是一个框架。
  通读全书,你会看到我们所采用的不同的约定。
  本书中展示的代码片段大多来自可以下载的完整应用程序。为了帮助读者理解,如果一段代码能够在下载的应用中找到,在代码的上边就会有一条路径指明它所在的文件,就像这样:

  有时候并不能马上找到书中例子到底修改了源文件的哪些行,代码左边的小三角形可以帮你清楚地找到这些修改的行。前面代码中的两行就有这样的指示。
Ruby 提示
  虽然你需要懂Ruby才能编写Rails应用程序。不过我们意识到很多人在读本书的时候其实已在同时学习Ruby和Rails了。第4章将简单介绍Ruby语言。
David说
  你会经常看到“David说”这样的内容,其中的内容是David Heinemeier Hansson想要告诉你他对于Rails的独特见解—原理、技巧、推荐等。David是Rails的创始人之一,所以,如果你想成为Rails专家的话,这些内容是不容错过的。
Joe问
  Joe是一个虚构的开发者形象,他常常会针对本书讲解的内容提些问题,而我们则会试着回答这些问题。
  这不是一本Rails参考手册。经验告诉我们,大部分人都不是通过查阅参考手册来学习的,我们将展示大部分模块和方法,可能通过示例,也可能通过文字介绍来指明如何使用这些组件,以及如何把它们组合在一起。
  但我们不会列出上百页的API列表。这么做的原因是,只要安装Rails,就已经得到了最新的API文档,而且肯定比本书的内容还要新。如果通过RubyGems安装了Rails(这也是推荐的安装方式),只要启动gem文档服务器(使用gem_server命令),再用浏览器访问http://localhost:8808,你就可以访问所有的Rails API文档。你会在第12章中找到怎样建立更多的文档。
  另外,你会发现,Rails通过应答,可以清晰地指明错误所在,通过错误跟踪,Rails不仅会告诉你错误在哪里,还包括错误的原因。你可以在10.2节的图10.3中找到这样的例子。如果你想知道关于这方面更多的信息,可以先翻到10.2节,看看怎样插入日志语句。
  如果你真的在读到这本书的某个地方遇到了问题,不用担心,我们有大量的在线资源可以帮助你。另外,除了我们提及的代码清单,还有一个论坛,在那里可以提问题和分享经验;还有一个勘误页,在那里可以进行错误报告; 最后还有一个wiki,在那里可以讨论书中的练习。
  这些都是共享资料。请自由地提交你的疑问和问题到论坛和wiki上,还有你的建议,以及对你所了解的问题的答案。
  那现在就让我们开始吧!第一步是安装Ruby和Rails,然后我们通过一个简单的样例来检验你是否成功地安装了它们。
关于Rails版本的重要信息
  本书是针对Rails 3写的。
  因为Rails的核心团队在不断地改进Rails,所以随着时间推移,新的Rails版本可能与之前的版本不兼容,这种问题可能在运行本书的样例代码时会遇到。
  为避免出现这种情况,在运行本书的样例代码时,请按照在本书1.1节所述的那样,安装正确的Rails版本。
  可以通过输入rails -v命令来确定Rails的版本。
  可以在下面的链接中找到关于本书的勘误。网址:http: //www.pragprog.com/wikis/wiki/ChangesToRails。

专家评论

当我开始学习Ruby on Rails时,我使用的是本书的第1版。其中关于Rails框架和社区的综述,为每一位Rails新手提供了成就辉煌事业的机会。在我读了最新的版本之后,我可以很欣慰地说,它秉承了第1版的这种趋势和风格,正因为这样,我把它推荐给每一位Rails新手。
—Mikel Lindsaar
Rails核心委员会成员、Ruby Mail 库创始人、RubyX负责人

  这本书可以让读者用一种愉快且难忘的方式访问Rails环境,它在这方面做得非常出色。另外,我还是第一次见到一本书把MVC模式讲得如此合情合理、条理清楚,并通过实例消除了它的一切神秘感。
—Ken Coar
作家、开源软件推行者和Apache开发者

  这本书成功地满足了不同读者的需求,既是Rails(和Ruby)的趣味读物,又以平实的语言讲解了框架的高级属性,完全有别于在线文档。
—Glen Daniels
独立技术专家和顾问

  我从来没有读过像这本书一样成功的程序设计书籍。Sam把Ruby on Rails讲得通俗易懂,全面而有趣。
—Keith Ballinger
WS-I的第一Basic Profile工作组主席、作家、.NET和Visual Studio .NET框架的主创人员

上架指导

计算机\程序设计

封底文字

当我开始学习Ruby on Rails时,我使用的是本书的第1版。其中关于Rails框架和社区的综述,为每一位Rails新手提供了成就辉煌事业的机会。在我读了最新的版本之后,我可以很欣慰地说,它秉承了第1版的这种趋势和风格,正因为这样,我把它推荐给每一位Rails新手。
——Mikel Lindsaar
Rails核心委员会成员、Ruby Mail 库创始人、RubyX负责人


在Ruby on Rails的帮助下,可以快速地创建出美观且高质量的网站,而且只需要专注于创建应用程序本身,Rails会完成所有细节部分的实现。
成千上万的开发者通过这本屡获殊荣的书来学习Rails。它由Rails核心团队极力推荐,是一本广泛、深远的教程和参考书。如果你是一位Rails初学者,本书会从头开始提供一步一步的指导;如果你是一位经验丰富的开发者,本书同样会提供全面、内部的Rails信息。

图书序言

第4版序言
  当Dave希望我作为本书第3版的合著者时,我深感激动。因为我就是基于这本书的第1版学习Rails的。Dave和我有许多共同之处,虽然他喜欢使用Emacs和Mac OS X,而我喜欢使用Vim和Ubuntu,但我们都爱好命令行和写代码—先从具体的代码入手,再学习深层理论。
  自从第3版(实际上,包括第1版、第2版和第3版)出版以来,Rails改变了很多。Rails正处于重要的重构过程中,大部分是在其内部。因此,这一版从根本上抛弃了以前在代码中使用的一些特性,同时又加入了新的特性,还有我们从经验中得到的内容:使用Rails的最佳实践是什么。Rails现在可以运行在Ruby1.9上, 本书中的每一个例子都已在Ruby 1.8.7和Ruby 1.9.2中测试通过。
  另外,Rails已经从一个流行的框架变为一个活跃的、充满生机的生态系统,而且许多流行插件和深度整合的第三方工具让它变得更完美。现在Rails逐渐变为一种主流工具,吸引了广大的开发人员到这个框架中来。
  这使得我们需要重新组织这本书。根据读者反馈,许多Rails新手对开篇没有介绍Ruby而感到不适应,所以我们把这部分从附录里提到第一部分的第4章里。跟随第一部分内容一步步操作,从而构建一个真正的应用程序。为了把重点放在当前的最佳实践上,这一部分内容已经经过更新和简化。
  本书最大的变动是最后一部分:因为它已经不适用于覆盖整个Rails系统,也跟不上其变化,现在这部分内容将专注于提供一个综合的视角,使读者能够了解可以找什么,当框架本身不能满足普通需求时,在哪里可以找到插件和相关工具来解决这个问题。
  简而言之,这本书必须再一次修订。

Sam Ruby
2011年3月

作者简介

(美)Sam Ruby; Dave Thomas; David Heinemeier Hansson 著:Sam Ruby是一位卓越的软件开发者,他是W3C HTML工作组的负责人之一,并在Apache软件基金会的许多开源软件项目中作出了积极的贡献。他还是IBM新兴技术集团的一位高级技术人员。 Dave Thomas是敏捷宣言的作者之一,所以他了解敏捷性。因为他是《Programming Ruby》一书的作者,所以他又了解Ruby。又因为他是一位活跃的Rails开发者,所以他也了解Rails。 David Heinemeier Hansson是Rails框架的创建者。

译者简介

慕尼黑Isar工作组 骆古道 等译:暂无简介

译者序

每一种成熟的软件框架都要经历一段漫长而又艰难的过程。当你打开本书时,Ruby on Rails(简称Rails或RoR)框架已走过了七个年头了。Rails框架从一开始,就带动了一门语言受到全球业内人士的高度关注。Rails框架从诸强林立中脱颖而出,成为其他语言框架竞相模仿的楷范。Rails框架从实践中来,已经成为人们广泛采用的互联网应用程序框架,并也在大型商业网站中得到了应用。
  技术伴随着人类社会经济的发展而不断进步,Rails框架也不例外。今天的Rails框架已经从框架底层结构上进行了全面彻底革新;在框架开发结构上更进一步全方位软件模块化。可以说,Rails框架的每一次版本更新都包含了人们所期望的功能,让人感到振奋和喜悦,同时引领着软件框架发展的潮流。
  放眼互联网世界,每一天都会呈现出无数的gem软件包。这些gem软件包提供了Rails框架的第三方资源。在本书中,作者推荐了一些十分优秀的gem软件包。这些资源不仅极大地丰富了Rails框架开发的需求,而且还避免了软件工程的重复劳动,提高了软件开发的效率和速度。
  行动是成功的基础。普遍认为本书是Rails框架实践的经典之作,其作者就是该软件框架的创始人。在本书中,作者阐述了该框架最本质和最重要的内容。只有真正理解和认识Rails框架的本质,才能掌握和驾驭该框架的功能。当然,Rails软件框架同时也是软件理论研究的成果,源自于成千上万人的实践,是人类智慧的结晶和实践的成果。这种成果是发展的和动态的。因此,学习和认识Rails框架是无止境的。
  每一次翻译工作都是一次新的挑战。如何理解不断出现的新概念、新理念和新名词?如何克服陈旧概念、思维定式对我们的影响?如何面对看似可以理解却难以用汉语表达的句子?面对这一切,一次思考不行,再来一次;一个人的能力不行,再补充一个;一遍修改不行,再来一遍。即便在本书正式出版以后,要是你有不同的想法和理解,我们欢迎与你重新斟酌每一条语句。
  合作是我们大家完成此书的共同愿望。因此,在这里我首先要感谢为本书翻译和内部审稿付出辛苦劳动的所有慕尼黑Isar工作组同仁(按姓名笔画排序):王大力、王德志、陈宇翔、姜伟、姜凯、胡捷、黄力和程帆。其次我要感谢负责本书出版和尽心劳动的机械工业出版社陈冀康编辑及其同仁。最后我也要感谢我的妻子以及同仁的家人,是他们给予了我们每一个人最大的鼓励和支持,使得此次翻译工作得以圆满完成。
  一天一年,我们好好阅读此书……
骆古道
于慕尼黑

图书目录

对本书的赞誉
译者序
译者简介
第4 版序言
前言
致谢
第一部分 起步
第1 章 安装Rails 1
1.1 Windows 上的安装 1
1.2 Mac OS X 上的安装 3
1.3 Linux 上的安装 4
1.4 选择一个Rails 版本 5
1.5 设置开发环境 6
1.5.1 命令行 6
1.5.2 版本控制 6
1.5.3 编辑器 7
1.5.4 桌面 8
1.6 Rails 和数据库 9
1.7 本章小结 10
第2 章 即时满足 11
2.1 新建一个应用程序 11
2.2 Hello,Rails ! 13
2.2.1 Rails 和URL 请求 14
2.2.2 第一个动作 14
2.2.3 创建动态网页 15
2.2.4 动态内容 15
2.2.5 把时间加上 16
2.2.6 故事讲到现在 17
2.3 把页面连起来 18
2.4 本章小结 20
2.4.1 练习时间 20
2.4.2 清理现场 21
第3 章 Rails 应用程序框架 22
3.1 模型、视图以及控制器 22
3.2 Rails 的模型支持 24
3.2.1 对象- 关系映射 24
3.2.2 Active Record 25
3.3 Action Pack :视图与控制器 26
3.3.1 视图支持 26
3.3.2 还有控制器 26
第4 章 Ruby 简介 28
4.1 Ruby 是一门面向对象的语言 28
4.1.1 Ruby 命名规则 29
4.1.2 方法 29
4.2 数据类型 30
4.2.1 字符串 30
4.2.2 数组和散列 30
4.2.3 正则表达式 32
4.3 逻辑方法 32
4.3.1 控制结构 32
4.3.2 代码块和迭代器 33
4.3.3 异常 34
4.4 组织结构 34
4.4.1 类 34
4.4.2 模块 36
4.4.3 YAML 36
4.5 封送对象 37
4.6 综合分析 37
4.7 Ruby 语言习语 38
第二部分 构建应用程序
第5 章 Depot 应用程序 41
5.1 增量式开发 41
5.2 Depot 是做什么的 42
5.2.1 用例 42
5.2.2 页面流程 42
5.2.3 数据 44
5.3 让我们来编码吧 45
第6 章 任务A :创建应用程序 46
6.1  迭代A1 :创建商品维护的应用程序 46
6.1.1 创建Rails 应用程序 46
6.1.2 创建数据库 46
6.1.3 生成脚手架 47
6.1.4 应用迁移 48
6.1.5 查看商品清单 49
6.2 迭代A2 :美化商品清单 51
6.3 本章小结 54
练习时间 55
第7 章  任务B :验证和单元测试 57
7.1 迭代B1 :验证 57
7.2 迭代B2 :模型的单元测试 60
7.2.1 真正单元测试 61
7.2.2 静态测试 63
7.2.3 使用静态测试数据 66
7.3 本章小结 67
练习时间 67
第8 章 任务C :商品目录显示 68
8.1 迭代C1 :创建商品目录清单 68
8.2 迭代C2 :增加页面布局 71
8.3  迭代C3 :用帮助函数来调整价格格式 74
8.4 迭代C4 :控制器功能测试 74
8.5 本章小结 77
练习时间 77
第9 章 任务D :创建购物车 78
9.1 迭代D1 :寻找购物车 78
9.2 迭代D2 :将产品放到购物车中 79
9.3 迭代D3 : 添加一个按钮 81
9.4 本章小结 85
练习时间 85
第10 章 任务 E :更智能的购物车 86
10.1 迭代E1 :创建更智能的购物车 86
10.2 迭代E2 :错误处理 90
10.3 迭代E3 :对购物车的最后加工 92
10.4 本章小结 96
练习时间 96
第11 章 任务F :Ajax 初体验 97
11.1 迭代F1 :转移购物车 97
11.1.1 局部模板 97
11.1.2 改变流程 101
11.2  迭代F2 :建立一个基于Ajax的购物车 102
11.2.1 排疑解难 103
11.2.2 客户永远不会满足 104
11.3 迭代F3 :高亮变化 104
11.4 迭代F4 :隐藏一个空的购物车 106
11.5 测试Ajax 改变 110
11.6 本章小结 111
练习时间 112
第12 章 任务G :付款 113
12.1 迭代G1 :获取订单 113
12.1.1 创建获取订单的表单 114
12.1.2 获取订单细节 120
12.1.3 最后一个Ajax 更改 124
12.2 循环G2 :Atom 推送 125
12.3 迭代G3 :分页 128
12.4 本章小结 131
练习时间 131
第13 章 任务H :发送电子邮件 132
13.1 迭代H1 :发送确认邮件 132
13.1.1 配置邮件 132
13.1.2 发送邮件 133
13.1.3 邮件模板 134
13.1.4 生成邮件 135
13.1.5 发送多内容类型 136
13.1.6 邮件功能测试 137
13.2 迭代H2 :应用程序的集成测试 138
13.3 本章小结 142
练习时间 142
第14 章 任务I :登录 143
14.1 迭代I1 :添加用户 143
14.2 迭代I2 :认证用户 150
14.3 迭代I3 :限制访问 155
14.4 迭代I4 :增加侧边栏,更多管理 157
14.5 本章小结 160
练习时间 160
第15 章 任务J :国际化 161
15.1 迭代 J1 :选择语言环境 161
15.2 迭代 J2 :翻译在线商店页面 164
15.3 迭代 J3 :翻译结账页面 169
15.4  迭代 J4 :添加语言环境的切换器 174
15.5 本章小结 175
练习时间 176
第16 章  任务K :部署和产品环境 177
16.1  迭代 K1 :用Phusion Passenger和MySQL 部署 178
16.1.1 安装Passenger 178
16.1.2 在本地部署应用程序 179
16.1.3 使用MySQL 数据库 180
16.1.4 加载数据库182
16.2  迭代 K2:用Capistrano远程部署 183
16.2.1 准备好部署服务器 183
16.2.2 把应用程序放到版本管理下 184
16.2.3 远程部署应用程序 185
16.2.4 冲洗,洗净,重复 187
16.3 迭代 K3 :检查部署的应用程序 188
16.3.1 查看日志文件 188
16.3.2  使用命令行界面来查看实时的应用程序 188
16.3.3 处理日志文件 189
16.3.4 开始发行,超越自我 189
16.4 本章小结 190
练习时间 190
第17 章 Depot 回顾 191
17.1 Rails 的概念 191
17.1.1 模型191
17.1.2 视图192
17.1.3 控制器 192
17.1.4 配置192
17.1.5 测试193
17.1.6 部署193
17.2 文档化所做的事情 193
第三部分 深入Rails
第18 章  自己去发现Rails(工作)方法 195
18.1 东西都去哪里了 195
18.1.1 应用程序的位置 197
18.1.2 测试的位置197
18.1.3 文档的位置197
18.1.4 支持库的位置 198
18.1.5 Rake 任务的位置 199
18.1.6 日志的位置200
18.1.7 静态网页的位置 200
18.1.8 脚本的位置200
18.1.9 临时文件的位置 201
18.1.10 第三方代码的位置 201
18.1.11 配置的位置 201
18.2 命名约定 202
18.2.1 混合大小写、下划线和复数 202
18.2.2 把控制器分组到模块中 203
18.3 本章小结 205
第19 章 Active Record 模块 206
19.1 定义数据结构 206
19.1.1 使用表和字段的规则 206
19.1.2  Active Record 所提供的附加字段 209
19.2 查找和遍历记录 210
19.2.1 识别单个行210
19.2.2 模型关联性说明 211
19.2.3 一对一关联211
19.2.4 一对多关联212
19.2.5 多对多关联212
19.3 创建、读取、更新和删除操作 213
19.3.1 创建新的行记录 213
19.3.2 读取已有行记录 215
19.3.3 动态查询器216
19.3.4 SQL 语言与Active Record 模块 217
19.3.5 使用like 查询子句 218
19.3.6 构造返回记录的子集 219
19.3.7 获取字段统计 221
19.3.8 范围函数 221
19.3.9 编写自己SQL 语句 222
19.3.10 重新加载数据 224
19.3.11 更新现有行记录 224
19.3.12  方法save、save!、create和create! 225
19.3.13 删除行记录 226
19.4 干预跟踪进程 227
19.4.1 成组相关回调 228
19.4.2 观察器 231
19.4.3 观察器实例化 232
19.5 数据库事务 232
19.6 本章小结 235
第20 章 行为调度和行为控制 237
20.1 分派请求到控制器 237
20.1.1 REST :表述性状态转移 238
20.1.2 添加附加行为 243
20.1.3 嵌套资源 243
20.1.4 浅路由嵌套243
20.1.5 选择数据表述 244
20.1.6 测试路由 245
20.2 处理请求 246
20.2.1 行为方法 246
20.2.2 控制器环境246
20.2.3 用户响应 248
20.2.4 呈现模板 248
20.2.5 发送文件和其他数据 251
20.2.6 重定向 253
20.3 持续请求的对象和操作 255
20.3.1 Rails 会话 255
20.3.2 会话存储 257
20.3.3 比较会话存储选项 258
20.3.4 会话逾期与清除 259
20.3.5 闪存:行为间通信 259
20.3.6 过滤器 260
20.3.7 前置和后置过滤器 260
20.3.8 过滤器继承261
20.4 本章小结 261
第21 章 Action View 模块 263
21.1 使用模板 263
21.1.1 模板存放的位置 263
21.1.2 模板运行的环境 264
21.1.3 模板包含的内容 264
21.2 生成表单 265
21.3 处理表单 267
21.4 上传文件到Rails 应用程序 268
21.5 使用帮助程序 271
21.5.1 自定义的帮助程序 272
21.5.2 格式和链接帮助程序 272
21.5.3 格式帮助程序 272
21.5.4 链接到其他页面和资源 274
21.6  用页面布局和局部模板减轻维护工作 277
21.6.1 布局277
21.6.2 放置布局文件 278
21.6.3 传递数据到布局 279
21.6.4 局部页面模板 281
21.6.5 局部模板和集合 282
21.6.6 共享模板 283
21.6.7 局部模板与布局 283
21.6.8 局部模板和控制器 283
21.7 本章小结 283
第22 章 缓存 285
22.1 页面缓存 285
22.2 让页面失效 287
22.2.1 显式地让页面失效 287
22.2.2 挑选缓存存储策略 288
22.2.3 隐式地让页面失效 289
22.2.4 让基于时间的缓存页面失效 290
22.2.5 正确处理客户端缓存 291
22.2.6 过期头 291
22.2.7 最后的修改和ETag 支持 291
22.3 片段缓存 292
22.4 本章小结 296
第23 章 数据迁移 297
23.1 创建和运行迁移 297
23.2 剖析迁移 299
23.2.1 字段的类型300
23.2.2 重命名字段301
23.2.3 修改字段 302
23.3 表的管理 302
23.3.1 表的创建选项 303
23.3.2 表的重命名304
23.3.3 rename_table 方法的问题 304
23.3.4 定义索引 305
23.3.5 主键306
23.3.6 没有主键的表 306
23.4 高级迁移 306
23.4.1 使用原生 SQL 307
23.4.2 扩展迁移 307
23.4.3 自定义消息和基准测试程序 309
23.5 当迁移变糟时 309
23.6 迁移外的模式管理 310
23.7 本章小结 311
第24 章 非浏览器应用 312
24.1  用Active Record 开发独立应用程序 312
24.2 使用Active Support 库功能 313
24.2.1 核心扩展 313
24.2.2 附加的Active Support 类 315
24.2.3 使用 Action View 帮助程序 317
24.3  使用Active Resource 开发远程应用程序 317
24.3.1 访问和更新简单属性 317
24.3.2 关系和集合318
24.3.3 汇总整理 320
24.4 本章小结 321
第25 章 Rails 包依赖关系 322
25.1 用构建器生成XML
25.2 用ERb 生成HTML 323
25.3 用Bundler 管理包依赖关系 325
25.4  用Rack 实现与Web 服务器的交互 327
25.5 自动执行任务工具Rake 330
25.6 Rails 包依赖关系揭秘 331
25.7 本章小结 333
第26 章 Rails 插件 334
26.1  信用卡业务处理插件Active Merchant 334
26.2 节约带宽的插件Asset Packager 335
26.3 用Haml 美化标记语言 337
26.4 用JQuery 少写多做 339
26.5  在RailsPlugins.org上找出更多 342
26.6 本章小结 343
第27 章 整装进发 344
参考文献 345

教学资源推荐
作者: 徐志军 尹廷辉
作者: (美)Alan Burns,Andy Wellings
作者: (美)Yue-Ling Wong 著
参考读物推荐
作者: 诺伯特.韦尔蒂(Norbert Welti)
作者: (美)David Meerman Scott 著
作者: Clayton R.Paul