该书下载自书部洛-分计算机经典巨者!-www.shuluo,com仅供试看 xip目录 257协议客户端 597 第4部分部署和安全… 599 第26章保护Rai应用 60 26.1SQL注入… 601 26.2用参数直接创建记录 603 263不要相信D参数… 605 26.4不要暴露控制器方法 606 26.5跨站点脚本(CSS/XSS) 26.6防御 session定置攻击 609 26.7文件上传… 610 26.8不要以明文保存敏感信息 611 269用SSL传输敏感信息 612 26.10不要缓存需要身份认证的页面 613 26.11知己知彼 613 第27章部署与生产… 615 27.1尽早开始 …616 27.2生产服务器如何工作, 617 273前端web服务器的选择… 619 274可重复的部署过程: Capistrano…… 620 27.5设置部署环境 非非非非非 621 27.6检查已部署的应用程序 …627 277投入生产运行之后的琐事 27.8上线,并不断前进… 629 第5部分附录 631 附录 A Ruby简介 633 A.1Ruby是一种面向对象的语言 633 A2Ruby中的名称 634 A.3方法 635 A4类 637 模块 639 A.6数组与hash 640 A.7控制结构 641 Web开发敏捷之道一应用Rais进行敏捷Web开发,第2版
xii .... 25 .7 协议 . . . . ……… . . .. .597 . . . .……........…….........…......… ...… … .............. 5 9 9 26 i l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 26.1 SQL 注入................ ... .... .. ... . . ... .... .. ...........……·……. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26.2 用参 创也记 . . .. . . . . .. . . .. .. . . .... . . . . .... . . . . .... .. . . ... . . . . .. . . . . . . . . . . . . . .. . . .ω3 .3 lD .. . . . . .. .. .. .... .. .. .. . . . . . . . ... .. . . . . . . . . . . . . . . . . . . . . . . . .ω5 26.4 露控 方址 .. .. ……………6 跨站 S S ............................................……...........……................................. 607 26.6 sess ion 攻击 …….. ... .. ... .. . . . . . . . . . . . . . .. . . . . . . . .609 26.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 10 26.8 不要 敏感信 .. . . .. .. .. .. . . . . . . . . . .. . . . . .. . . .. . . .. .. .. .. ... . . . .. . . . . . ... . . . . . .611 26.9 S S 传输敏忠信息 .... .. . . ... .......…...……….-.....…… 26.10 'l:' .. . . . . . . .. . . . . . . . . . . . . . . . . . . . . ... .. . . . .. .. . . ... ... . . .. .. . . . . . . . . .. . . .. . . . .. . . . .6 13 26 .1 知彼 . . . . .. . . . . . . . . . . .. . . . . . .613 . . . . . . . . . . . . . . … … . . . . . . . . . . . . . . . . . . . . 27 . . . . . . . . . .. . . . . .. .. . . ..6 16 27 .2 产服 .. . . . .. .. . . . . .. .. . . .. .. .. .. . . . . . . . .. .. .6 17 27 .3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . …6 19 .4 可豆 'f, Ca istra .. .. .. .. .. .62 27 .5 置部署环境 …….. . . .. …. . . .. ... . . . . . . . .. .. .. .. ... . . . . .. . . .62 27.6 查 己 署 的 f' 627 27 .7 生产运行之后 的 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . …628 27ι . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . …629 部分 附录 .. .. . . . . . . .…....... ..... ..........……….... ... … .....…..631 附录 Ruby 简 介 .. .. .. . . . . …… . . . . . . . . .. …… .. .. .. …..... .........633 A.I 对象 语言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2 Ruby 巾的名称......................... ………·…. . . . . . . . . 方法 . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - . . . . . . . . . . . . . . . . . . . . . .. .. ... .. ... .. . . 3 5 .4 . . . . . . . . . . . . . . . . . . . .5 模块 .. . . . . . . . . . ... . . . .. ... ... ... .. . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . ... ... . . . . .. . . . . . . . . . . . ... .639 .6 与h h. ... ... ... .. . . .. . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. ... ……… ……… 640 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 64 1 Web 1f,!ft~;Zil!--.lli Web If,!ft. jj曹2 1!& 该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^
该书下载自-书部落分享计算机经典巨著!-www.shubulo.com!仅供试看^^ 目录xil A.8正则表达式 642 A.9代码块与迭代器 A.10异常 643 A.11对象序列化 644 A.12交互式的Ruby 644 A.13Ruby惯用法 64 A.14RDoc文档 646 附录B配置参数 647 B.1顶级配置 647 B.2 Active Record配置 649 B.3 Action Controller配置… 651 B.4 Action view配置 652 B.5 Action Mailer配置 653 B.6 Testcase配置 654 附录C源代码 655 C.1完整的 Depot应用 附录D资源 D.1在线资源 D.2参考书目 687 索引 689 Web开发敏捷之道一应用Rals进行敏捷Web开发,第2版
目录 III 达式 . . .. . . …… . . . . . . . . . . .. .. .. .. .. .642 A.9 f~ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 .IO . . . . . . . . . . . . 64 A.I 对象序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 交互式的R .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _ . . . . . . . . . . 制4 A.1 3 Rub 1H 1l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 制4 A. 14 RDoc 文恪 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 附录 配置参数 . . . . . . . . . . . . .. .. .. .. .. . . .I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 ACl iv ecord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649 ti on nlrollc . . . . . . . . . . . . . . . . ……… . . .. . . . . . . . . . . . . . . . . . . . . . . 65 B.4 li Vi … … . . . . .. . . . . …… …… … . . . . . . 5 2 8.5 Cl nM i l er . . . . . . . . . . . . . . . . . B.6 Teste. . . . . . . . . . . . . . . . . . . . . . . . . . _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 . . . . .. . . . . . . . . . . . . … … . . . 655 C. 完整 Depo 应用..........…"…........….....…...............………..……… . . . . . . . . . . . . . . 65 附录 .. .. . . . . . . . .. .. . . . .. .. . . ………. . .. . . .. .. . . . . . . . . . . .. .. . . … ……………… . . . . . . . . . . .. . . .. . . . . . . . . . . . ... .687 fl ................................................... …..................................………............… .. 687 .. .. .. . . .. .. . . . . . .. . . .. …… . . .. . . . . . . ..... .. .… .. .. .... .… . . . . . . . . . . Web Jf3tIilH;Zil!--JfJ i!t eb lf, J!N 该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^
该书下载自-书部落-分享计算机经典巨著!-www.shubulo.com仅供试看^ 第1章 简介 Introduction Ruby on Rails是一个框架,一个使web应用的开发、部署和维护变得更容易的框 架。自从发布第一个版本以来, Rails已经从一个默默无闻的玩具蜕变成了一种世界性的 现象。它拿下了一个又一个的奖项,更重要的是,很多web20应用都选择它作为基础 框架。 Rails已经不再只是一小撮黑客推崇的时髦玩艺:很多跨国公司正在用它来开发自 己的web应用。 为什么会这样?有几个方面的原因。 首先,很多开发者已经对自己开发web应用所使用的技术深感厌倦。不管使用 Java、PHP还是NET,越来越多的开发者开始深切地感到:这些东西实在难用得要死。 就在此时, Rails从天而降,而且它要简单得多。 光有简单是不够的。这些人都是专业的软件开发者,他们编写的是真实的网站应 用,他们希望自己的产品经得起时间的检验,所以他们总是选择先进而专业的技术。这 些开发者们深入研究了 Rails.,并发现它不仅仅是一个快速开发网站的工具 譬如说,所有的 Rails应用都采用了“模型视图控制器”( Model- View-Controller MVC)架构。Java开发者都很熟悉MvC框架,例如 Tapestry和 Struts。但 Rails把MvC 贯彻得更彻底:当你用 Rails开发时,每一块代码该放在什么地方都有一定之规,代码 之间都按照规定的方式进行交互。从一开始, Rails就已经帮你准备好了应用程序的骨 架 专业的程序员总是给自己的代码编写测试。同样, Rails也提供了这方面的支持。所 有的 Rails应用都天生内建了对测试的支持。当你开始增加功能时, Rails就会自动帮你 Web开发敏捷之道一应用Rals进行敏捷Web开发,第2版
Introduction Ruby 0 0 ai 个框架 使web 开发 和维护变得更 .自从发布第一个版本以来 ail 默默无闻 的 现象.它拿下了 一个 一个的奖项 重要的是,很多 2. 都选 基础 框架 Rail 时髦 艺z 开发 己的 b应用 为什么会这样?有几个方面的原因 首先,很多开发者 已经对自己开发 b应用所使用 的技术深感厌倦。 不管使用 Java 、PHP 还是NET. 来越 开始深 地感 在难 得要 就在此时 Rail 单得 光有简单是不够的 .这些人都是专业的软件开发者 ,他们编写的是真实的网站应 用,他们希望 己的产品经得起时间的检验,所以他们总是选择先进而专业的技术.这 些开发者们 研究了 并发现它不仅仅是一个快速开发网站的工具 譬如说 ai s应用都采用了"模型-视图,控制器 .. ( Model-Vi Co lroll MVC av 都很 悉MV 框架 如Tape stry 和Strut 但Rail 把MVC 贯彻得更彻底 当你用 i l s开发时 ,每一块代码该放在什么地方都有一定之规,代码 之间都按照规定的 式进行交互.从一开始, Rail 你准 程序 专业的程序员总是给自己的代码编写测试。同 Rail 有的 s应用部天生内建了对测试的支持 当你开始增加功能时 Rail WebJfJtIltM2. Ni il f.j. bJfJt. /fN 该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^
节部-分芓计算机经興旦者!-www.shubulo.com仅供试看 第1章简介 创建针对这项新功能的测试存根(stub)。Rail框架让应用程序的测试变得更容易,因 此,Rail应用也更能够得到充分的测试。 Rails应用是用Ruby编写的,这是一种现代的面向对象脚本语言。Ruby很简洁,却又 不致简练得难以理解。使用Ruby,你可以自然而清晰地表述自己的想法,因此,Ruby程 序很容易编写,而且放上几个月之后也很容易读懂—这是非常重要的。 Rails给Ruby加上了一些限制,又进行了一些独具匠心的扩展,使得在其中编程更 加容易,也让我们的程序更短小、更易读,并且让我们能够在代码中完成一些通常需要 用上外部配置文件才能完成的任务。这样一来,我们可以更轻松地看懂其中的逻辑。譬 如说,下面的代码定义了一个项目中的模型类。现在你不必操心其中的细节,只要注意 在这短短几行代码中描述了多少信息即可。 class Project ActiveRecord:: Base belongsto portfolio has one project_ manager has_many milestones has_many deliverables, through => milestones validates presence_of name, description validates acceptance of non disclosure agreement validates_uniqueness_of short_name 开发者们还会在 Rails中发现另一件事:这个框架的背后有一套完整的哲学支撑 Rails的设计始终遵循两个核心原则:DRY和惯例重于配置( convention over configuration)。DRY也就是不要重复你自己( Dont Repeat Yourse的缩写:系统中的每 项知识只应该在一个地方描述。借助Ruby的强大威力, Rails实现了这一目标。在 Rails 应用程序中,你几乎不会看到重复的代码,每件事情都只需要说一遍—你只要在符合 MVC架构惯例的某个地方说一遍,以后就不必再重复了。用惯其他web框架的程序员大 多有这样的经历:只要对数据库结构做一点点修改,就必须同时修改好几处代码。对他们 而言,DRY的哲学不啻是一大福音。 惯例重于配置也同样重要。对于“如何将应用程序组装起来”这件事,Rais自有 套默认的规则——相当有道理的一套规则。只要遵循命名惯例,编写一个 Rails应用程 序所需的代码量比起典型的、使用XML配置的 Java web应用要少得多。如果你不想遵 循这些惯例,在 Rails中也很简单。 开发者们还会在Rail中发现别的惊喜。 Rails是一个新生框架,它的核心开发团队 了解新的Web业务模式。 Rails不会亦步亦趋地紧跟新近出现的web标准:它本身就在 web标准的制订中起着重要的作用。此外, Rails也让开发者们能够更轻松地将Ajax和 Web开发敏捷之道一应用Rals进行敏捷Web开发,第2版
2 创建针对这项新功能的测试存根 0 ai 试变 此. ail s 用 也更能够得到充分 ails 用Rub 写的 对象脚 语言 Rub 很简 不致简练得难以理解。使用 .你吁以自然而消晰地表述自己的想法,因此 Ruby 序很容易编写,而且放上几个月之后也很容易读储一一这是非常重要的 给R 扩展 使得在其 编但更 加容易,也让我们的程序更短小、更易 读, 且让我们能够在代码中完成一些通常得要 用上外部配置文件才能完成的任务。这样一米 ft们可以更轻松地看懂其中的逻辑 如说,下面的代码定义了 一个项目中的模型类.现在你不必操心其中的细节.只要注意 在这短短几行代码中描述了多少信息即可 clas s project < ActiveRecord : :Ba se belongs_to po t f l i has_one : pr oj e ct _manage r has_many :mi l e s t one s hasJf\ilny :de l i ve r abl e s. : t h r ough => :mi l e s t ones validates-presence_of validates_acceptanc€_of va l i da t e s_uni QUene ss_o f end name , :description non_disclosure_agreement short_name 开发者们还会在 s中发现另一件亨·这个恒架的背后11 一套完整的哲学支撑 ail 始 终 遵 循 两 原 则 DRY ill convention over confi gurati on ) 0 DRY 就是 要重 ll 't Repeat Your 项知识只应该在 个地方描述。借助 u b y的强大威力 ai 在Rail s 应用程序中,你儿乎不会看到重复的代码,待件 (情占百只需要说一遍 你只要在符合 MV 架构惯 方说 不必 eb 框架 多有这样的经历只要对数据库结构做一点点修改,就必须同时修改好几处代码.对他们 DRY 哲学不啻是 大福音 惯例重于配置 如 何 序, 装起 事. il :fj 套默认的规Ji! -相当育道理的一套规则 惯例 序所需的代码量比起典型的、使用 L配置的 web 要少得 如果你不想 循这些惯例,在 i l s中也很简单 开发者们还会在 s中发现别的惊喜 il s是一个新生框架,它的核心开发团队 了解新的 b业务模式 i l s不会亦步亦趋地紧跟新近出现的 b标准它本身就在 eb 标准 起着重要的作用 i l 发者 能够 将A ax Web lfJtIt :z. N! if tjfj/f&M Web lfJt /!!i 该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^
该书下载自-书部落-分享计算机经典巨著!-www.shubulo.con!仅供试看^ 1.1Rais是敏捷的3 RESTful接口之类的新技术整合到自己的应用中—它内建了对这些技术的支持(如果 你还不熟悉Aax和REST接口,别担心,我们会在本书中介绍它们)。 开发者们还需要考虑应用的部署问题。使用 Rails,你只需要输入一条命令,就可以 将应用程序的最新版本部署到任意多台服务器上(如果发现最新版本不好用,撤销部署 也同样容易)。 Rail是从一个真实的商用程序中抽取而成的。要创造一个框架,最好的办法也许就 是:首先找出一类特定应用的核心场景,然后逐渐从中抽取出通用的代码基础。其结果 是,当开发 Rails应用程序时,你会发现:在你开始动手编写任何一行代码之前,一个 出色的应用程序已经有一半在你手上了。 当然, Rails还有别的好处—有些甚至很难言传。总之, Rails就是让人感觉很 爽。当然了,正所谓百闻不如一见,听我们说的再多,也不如让你自己动手写一点 Rails 的应用程序(这大概是下一个45分钟的任务……)。这也就是我们这本书的目标所在 1,1 Rails是敏捷的 Rails Is agile 既然本书的名字叫作 Agile Web Development with Rails,你可能会感到奇怪:为什么 书里没有关于“在 Rails中运用某某敏捷实践”这样的章节。 原因很简单:敏捷是 Rails的基础所在 我们来看看“敏捷宣言”所描述的价值观,这段简短的文本描述出了敏捷开发者的 选择。 人和交互重于过程和工具。 可以工作的软件重于求全责备的文档 与客户合作重于合同谈判。 随时应对变化重于循规蹈矩。 Rails非常强调人和交互。这里没有繁重的工具,没有复杂的配置,没有冗长的过 程。这里只有开发者组成的小组、他们最爱的编辑器,以及Ruby代码。于是,开发的 透明度更高:开发者所做的工作能够立即让客户看到。这是一个天生的交互式过程 Rail并不打算废弃所有文档,而是使你可以毫不费劲地为所有代码生成HIML格式 的文档。但 Rails的开发过程并不由文档驱动。在一个 Rails项目的核心地带,你不会找 http://www.agilemanifesto.org/.DaveThomas是这份文本的17位作者之 Web开发敏捷之道一应用Rals进行敏捷Web开发,第2版
1.1 Rails ESTf 之类 新技 整合 己的 对这 支持 你还不熟悉 x和 EST接口,别担心 ,我们会在本书中介绍它们 开发者们还 需要考虑 应用的部署问题 .使用 .的;只 需要输入 一条命令 ,就可以 将应用程厅,的最新版本部署到任意多台服务器上 (如果发现最新版本不好用 ,撤销部署 也同样容易) • il 真实的商 程序 抽取 要创 个怪 首先找出 一类特定应用 心场景,然后逐渐从中抽取出通用的代码基础。其结果 ,当开发 i l s应 程序时 你会发现:在你开始动孚编写任何 代码之前 一个 出色的 程序 半在你手 当然. ail 有 别 的好 处 甚至 难言 il 感觉 .当然了 正所谓百闻不如一见,听我们说的再多,也不如让你自己动手写一点 的应用程序 (这大概是下个 5分钟的任务…… 就是 本书 在. 1.1 Rails Rails Is Agile 既然本书的名字叫作 Development with il 可能 感到奇怪 书里没有关于 "在 s中运用某某敏捷实践 "这样的章节 原因很简单敏捷是 s的基础所在 我们来看右" 敏捷 言" 本描述 人和 互巫于过 和工具 的软件重于求全责备 的 文 谈判 'l!: 循规蹈矩 i l 常强 人和交互 没有繁 工具 没有 。这里只有开发者组成的小组、他们是爱的编辑器,以及 y代码.于是,开发的 透明度更高:开发者所做的工作能够立即让客户看 .这是一个天生的交互式过程 Rail 并不打 废弃 文挡 成HTML 文挡 开发过程并不出 文档驱 动 项目 的核心地带,你 会找 I h t t p : / /www.ag i l eman i f e sto . org/ • O....ve Thomas Jl这份文本的 口位作者之一 Web 'Jt4itH iO ,ffi房Raifs idtIBH Web JfJt. !If2 1!N 该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^