本书对于那些想学习如何用基于Ruby的Rails框架创建动态Web应用的人来说,是一本非常实用的入门书籍。你将会从中学到Rails各个组件之间是如何配合的,以及如何在用它们创建出复杂的Web应用的同时,确保使用更简洁的代码,且拥有更愉悦的开发体验。
本书的主要内容:
Ruby编程语言简介。
在不同操作系统上安装Ruby和Rails。
Rails背后的编程理念及其重要性。
“模型-视图-控制器”架构。
关系数据库和SQL的基础知识。
设置MySQL数据库并通过migration创建schema。
在Rails的console中体验实时的应用。
在模型间创建多重关系。
正确使用控制器和模板。
利用helper保持模板简洁并脱离逻辑。
通过Ajax和视觉效果丰富你的用户体验。
使用Prototype和script.aculo.us这两种JavaScript函数库。
学习如何让你的应用程序收发邮件。
使用并创建自己的插件。
通过写测试让你的代码避免墨菲定律的魔咒。
用Capistrano为你的应用程序进行部署。
无
至今已经有很多Rails入门类书籍了。我们也读了很多,但是却发现大多没有起到很大的帮助。我们认为缺少这么一类书:完全针对初学者,而且还会传授足够的Rails文化和理念,并使其成为非常实用的一部分。Rails是一个很大的主题,很多书籍想传达的内容太多,以至于使它们不能有效地传达出Rails的核心功能。本书则会完全不同。
本书特别适合那些有一点或者甚至没有任何Web应用开发经验的人,或者有一些经验,但是对Rails却是个新手。我们假设你对Web标记语言(比如HTML)已经有所了解,并且你可以自如地安装软件。但是你无需知道如何去编程,如何使用Web服务器,如何维护网页状态,或者如何创建和连接数据库。本书将会向你传授Web应用运作以及Rails快速构建的基础知识。
每个人都是从初学者起步的,我们也不例外。当开始写这本书的时候,我们考虑的是在创建第一个Rails应用时认为最实用的内容。我们希望了解什么呢?什么可以令事情变得简单呢?我们开始创作这本书力求把复杂的Web开发以深入浅出的方式讲出来,让初学者能够开个好头。
如果你正在寻找一本介绍Rails老手高级技巧的书,那么本书可能会令你失望。本书没有探究那些Ruby或者Rails的复杂细节,没有自关联多态(selfreferential polymorphic)连接或者高级缓存技术(advanced caching techniques)等Rails主题。相反,我们只关注框架中能让你快速上手的部分。我们让你尽快适应Rails环境,而不是把你埋葬在无数的细节中,这也是为什么我们把本书的每一章都设计成围绕框架中的一个具体组件,并且关注那部分最实用的功能。
如果你以前没有编程经验,应当首先阅读附录A中的Ruby简介。如果你没有接触过数据驱动的应用程序,还应当阅读附录B对关系数据库的介绍。当你准备好了,第1章将会向你介绍“Rails之道”(the Rails way),第2章将会教你在自己的机器上安装Ruby和Rails。本书的其余部分将会介绍创建实际应用程序的过程,逐个向你介绍Rails框架的相关组件。
本书的大部分篇幅都是介绍你最常使用的功能,而在你不常用的功能上,我们所用的篇幅也较少。在Rails中你所做的大多数事情都与模型(model)有关,所以你必须要了解Active Record,它是Rails用来与数据库进行通信的函数库。Active Record很自然地成为Rails框架中最庞大的组件,所以你在它身上投入很多时间、我们在它身上铺了很多笔墨(第4、5章)也就都在情理之中了。如果你了解如何对某个领域创建模型并知道如何与数据库对象进行有效的操作,那么就为余下的创建工作打下了一个很好的基础。在我们深入研究Action Pack(第6章,它是Rails的Web组件)的时候,已经创建了完整的模型,并把它用作试运行。在第6章,你会学到如何创建控制器与视图,以及如何用视图把你的模型通过Web展示出来。第7章会阐述如何通过Ajax和其他的技术改进用户界面。第8章会向你展示应用程序如何通过Action Mailer收发邮件。剩下的章节将会向你传授一些非常重要,而且你也必须要了解的知识:对应用程序进行测试;插件的安装、使用与创建;最后是应用程序的部署以及发布。
Rails的发展很快。在本书写作期间,它的一些功能又被添加、改进、引起争议或移除掉了,我们力图使本书保持最新并且相关。本书介绍的是Rails 123(此版本为当时的稳定版),我们还在未来版本中可能出现的功能上引入了“注意”与“提示”。如果你正在使用更新版本的Rails,你可能会发现有一些东西已经改变了,但是对于大部分内容而言,你完全不用担心。
固然,Rails是一个很庞大的框架,它所包含的内容远非一本书所能囊括的。然而,抛开它的大小以及功能强弱不谈,Rails是一门从理论上非常容易掌握的技术,这都要依仗于它功能上的强大。通过此书,你将会学到所有用Rails创建Web应用所需的知识。
本书的网站
一定要浏览本书的网站:http://beginningrailscom。除了大多数本书所使用的最新源代码,你还会在上面看到勘误、注意、提示以及其他重要的更新。你还可以与作者进行沟通,询问技术难题并获得所需要的帮助。
本书对于那些想学习如何用基于Ruby的Rails框架创建动态Web应用的人来说,是一本非常实用的入门书籍。你将会从中学到Rails各个组件之间是如何配合的,以及如何在用它们创建出复杂的Web应用的同时,确保使用更简洁的代码,且拥有更愉悦的开发体验。 本书的主要内容: Ruby编程语言简介。 在不同操作系统上安装Ruby和Rails。 Rails背后的编程理念及其重要性。 “模型-视图-控制器”架构。 关系数据库和SQL的基础知识。 设置MySQL数据库并通过migration创建schema。 在Rails的console中体验实时的应用。 在模型间创建多重关系。 正确使用控制器和模板。 利用helper保持模板简洁并脱离逻辑。 通过Ajax和视觉效果丰富你的用户体验。 使用Prototype和script.aculo.us这两种JavaScript函数库。 学习如何让你的应用程序收发邮件。 使用并创建自己的插件。 通过写测试让你的代码避免墨菲定律的魔咒。 用Capistrano为你的应用程序进行部署。
Jeffrey Allan Hardy:Jeffrey Allan Hardy: 是一位Web开发者、程序员和会议演讲者,拥有7年以上创建大型Web应用的经验。
刘申:暂无简介
Rails近两年的发展势头很迅猛,受到越来越多企业以及开发者的关注,介绍它的书籍也越来越多。但是你可能会发现,在众多的技术类书籍中,很少有专门针对初学者入门的。大多数书籍都是以某一个实际开发为例,让你一步一步跟着它做,在这个过程中,为你讲解操作上的细节。这便引出了一个严重的问题:初学者跟着这样的书做完了以后,发现自己根本无法独立开发一个新的项目,在他的脑子里对Rails并没有一个完整的概念。
如果你想走进Rails的世界,并也遇到过上述的问题,那么本书就是你最好的选择了!
本书的目的不仅仅是带领你走进Rails的世界——可以独立开发出新的Web应用,而且让你真正了解Rails Way(Rails之道)。Rails不仅仅是一个Web开发框架,它代表的是一种开发理念。只有真正理解这种思想,才能自如地运用它。对于开发者来说,如果不会语法,那很简单,我们可以去查API,但是如果不了解Rails Way,那说明你还是个Rails的门外汉。但是,如何把Rails Way传授给初学者呢?这便是本书的高明之处了。我想对于一个初学者来说,最难理解的地方可能就是MVC框架内部的逻辑关系了。而MVC框架的三个字母分别对应了Rails中三个最重要的函数库:Active Record、Action View和Action Controller。这三部分内容放在了本书中间部分去讲解。在它们之前,会先为你讲一些基础知识作为铺垫;在它们之后,会把这些知识进行巩固。
本书的翻译工作得到了很多人的帮助,在此对他们一并报以诚挚的谢意。其中,要特别感谢陈冀康编辑,谢谢他的辛勤工作与鼓励;感谢InfoQ中文站的两位同事霍泰稳、赖翥翔,感谢他们的理解与支持;还要感谢FreeWheel的Bin Dong,是他把我带入了Rails世界;感谢Ethos的李剑、程序员杂志社的郑柯,是他们让我懂得了什么才是真正的“翻译”。
本书由刘申整体统筹、翻译。参与翻译的还有:宋薇、朱瑜敏、鲁奇、刘晓东。由于本书翻译的比较仓促,难免会有某些疏漏,欢迎读者朋友批评指正。
刘申
2008年6月于哈尔滨工业大学
译者序
致谢
引言
前言
第1章Rails框架简介1
11Web应用的兴起1
12Web并不是完美的2
13优秀的Web框架2
14走进Rails3
141Rails是Ruby4
142Rails鼓励敏捷5
143Rails是有主见的软件6
144Rails是开源的7
15MVC模式8
151MVC循环8
152MVC的层9
16构成Rails的函数库11
17Rails不是尚方宝剑11
18总结11
第2章入门12
21Rails安装的总体介绍12
22在Mac OS X 104 Tiger上安装13
221安装Apple Developer Tools
(Xcode)14
222安装MySQL14
223添加MySQL到你的PATH16
224安装Ruby17
225安装RubyGems19
226安装Rails19
227自动安装19
23在Windows XP上安装20
231安装MySQL20
232安装Ruby21
233安装Rails22
24在Linux上安装23
241安装MySQL23
242安装Ruby24
243安装RubyGems24
244安装Rails25
25创建第一个Rails应用程序25
251启动内建Web服务器26
252生成控制器27
253创建一个Action28
254创建一个模板28
26总结30
第3章运行起来再说31
31项目的总体介绍31
32创建events应用程序31
321创建项目数据库33
322创建Event模型34
323创建一个数据库表35
324生成一个控制器36
325用脚手架运行37
326添加更多的域38
327添加校验39
328生成脚手架41
33总结43
第4章对数据库进行操作:
Active Record44
41Active Record简介:Rails的对象-
关系映射44
411关于SQL45
412Active Record惯例46
42Console简介46
43Active Record基础:CRUD49
431创建新记录49
432读取(查询)记录52
433更新记录56
434删除记录57
44当好模型变坏时59
45总结60
第5章Active Record进阶:强化模型61
51添加方法61
52使用关联63
521声明关联64
522创建一对一的关联65
523创建一对多关联68
524应用关联选项71
525创建多对多关联72
526创建富多对多关联76
53为高级查询构建条件78
531使用一个条件Hash78
532使用一个SQL片段79
533使用一个数组80
534使用关联代理81
54应用校验82
541创建自定义校验方法82
542使用内建校验83
55生成回调86
56回顾更新的模型87
57总结91
第6章Action Pack:对视图和控制器的
操作92
61Action Pack组件92
611Action Controller92
612Action View94
613嵌入式Ruby95
614Helpers96
615路由96
616Action Pack请求周期97
62控制器的走查98
621设置路由98
622生成控制器101
623创建一个模板103
624对布局的操作104
625创建一个注册表单105
626使用表单helpers106
627处理请求参数109
628编写create action109
629渲染响应110
6210重定向110
6211在模板中显示错误信息111
6212添加edit(编辑)表单112
6213应用局部模板保持DRY113
6214添加login(登录)和logout
(退出)action116
63改进events控制器和模板120
631清理events控制器121
632在events模板中使用局部模板122
633为events表单添加种类122
634在events控制器中处理种类124
64使用控制器过滤器125
641要求使用过滤器的验证126
642应用过滤器到控制器127
65收尾工作129
651使用Action View helpers129
652在模板中避开HTML131
653为表述区域格式化131
654添加编辑控制132
655添加自定义helpers133
656为它赋予一些样式134
66总结142
第7章用Ajax改进交互144
71Ajax和Rails144
711Prototype and Helpers144
712JavaScript库145
72使用Ajax helpers145
721使用link_to_remote发起远程
调用146
722用form_remote_tag远程发送表单…151
723用observe_field和observe_form
来记录改变153
73使用scriptaculous helpers156
731添加自动补全功能156
732添加一个现场编辑器157
733添加可视化效果159
74使用RJS模板161
741在模板中运行RJS162
742在控制器中运行RJS164
75总结165
第8章发送和接收邮件166
81设置Action Mailer166
811配置邮件服务器的设置166
812配置应用程序设置167
82发送电子邮件168
821对基本的电子邮件进行操作170
822发送HTML电子邮件172
823为消息添加多种成分174
824添加附件175
825将收到的电子邮件发送至一个
Rails进程175
83总结177
第9章对你的应用程序进行测试178
91Rails处理测试的方式178
92Rails应用程序的单元测试180
921测试Event模型181
922对校验进行测试185
93对你的控制器进行功能测试186
931对Event控制器进行测试186
932创建一个测试helper188933运行整套的功能测试192
94集成测试194
941events应用程序的集成测试194
942基于故事的测试197
95运行整套测试200
96用rcov测量测试的覆盖情况201
97总结202
第10章用插件来扩展Rails203
101查找和安装插件203
1011查找插件204
1012安装插件204
102在我们的应用程序中使用一个插件205
1021修改数据库205
1022修改应用程序以便使用插件206
103创建自己的插件208
1031使插件可用于应用程序209
1032创建插件模块210
1033更新控制器和视图216
104总结218
第11章部署Rails应用程序219
111用Capistrano部署219
1111Capistrano的安装220
1112Capistrano处方221
1113部署服务器上的Capistrano223
1114自定义Capistrano任务223
112设置服务器架构224
1121单一架构224
1122代理集群服务器:推广中的
新产品225
1123立刻变成一位部署高手226
113总结227
附录ARuby——程序员的知音228
附录B数据库入门240
附录CRails社区247