Rails项目实战剖析与技巧大全


请输入要查询的词条内容:

Rails项目实战剖析与技巧大全


Rails项目实战剖析与技巧大全全书内容包括:如何基于Windows、Mac OS X和Linux建立Rails;如何配合MySQL and SQLite数据库使用Rails;如何合并最新插件、引擎和Ruby Gems到应用中,以节省开发时间;如何使用Yahoo YUI轻松实现一致的应用风格;如何将PHP站点翻新为Rails;如何使用Ajax技术为应用增色;如何使用最先进的Rails功能,如REST和Active Resource。



版权信息


书 名: Rails项目实战剖析与技巧大全

作 者:(美国)(EldonAlameda)阿兰梅达

出版社: 电子工业出版社

出版时间: 2008

ISBN: 9787121068775

开本: 16

定价: 59.80 元

内容简介


如果你是一个已经领略过RubyonRails威力的开发人员,又想进一步提升Rails技能,本书对你而言将是无价之宝。本书的重点并不在于该框架的应用基础,而是聚焦于带你感受众多真实案例的开发实践,包括博客、个人备忘录、日历、一个由PHP移植为Rails的网站实例等。每一应用实例均来自最佳实践,包括类型、功能、多种Rails插件应用、Rails引擎和RubyGem。同时,也探讨最先进的Rails功能,诸如新的REST执行和ActiveResource。作为必要的回顾,本书在直接进入项目实践之前,先向读者介绍了一个理想开发环境的建立。

本书适合程序开发人员参考学习,还可以作为高等院校相关专业师生的参考书。

作者简介


EldonAlameda是一名Web开发人员,现居住于气候寒冷的堪萨斯州。他现在为堪萨斯市一家刚起步的小型科技公司开发RubyonRails应用。在这之前,他在当地的广告公司、SprintPCS及IBM等多家公司从事过软件开发工作。

编辑推荐


尊敬的读者: 实践出真知。因此我相信学习Rails最好的办法,就是用其来创建各种各样的应用程序,只有这样才能完全掌握这项技术。 在本书中,假设读者已经具备了使用Ruby on Rails框架的基础知识,已经了解其众多令人激动的功能并希望能够从中获益。而现在,相信你正需要通过创建一些不同类型的Web应用程序,来获得这些功能的第一手开发经验。这也是本书的主要出发点,通过带领读者创建多个实际Rails应用项目,使大家能够掌握最实用的开发经验。其中涉及到丰富而完整的核心Rails特性。 在深入探讨这些内容的同时,我们还将完成一系列的项目。包括创建含有外部API的一个简单博客,以REST方式构建、由图表进行展现的一个锻炼情况跟踪记录程序,以及通过添加高级的JavaScript接口将已有的一个PHP网站转换为Rails实现。除了以上这些,在最后一个项目中,我们还将使用最新版本的Rails及Active Resource来创建一个应用程序,同时介绍一些Rails 2.0中的变动和新增功能。 在本书中,每个项目都提供了必要的信息和工具。使得读者在解决实际问题时可以轻易上手,并且在每个项目最后还包括一些额外的创意和练习。读者可以按照自己的需要对这些应用程序进行扩展和改进。

目录


第1部分

必要的准备工作(请不要跳过这一部分)

第1章搭建开发环境3

1.1安装Ruby和Rails3

1.1.1在Linux上安装Ruby4

1.1.2在Windows上安装Rails4

1.1.3在MacOSX上安装Rails5

1.2安装数据库6

1.2.1安装SQLite7

1.2.2安装SQLiteRubygem7

1.3代码编辑工具8

1.3.1Windows8

1.3.2Linux11

1.3.3Mac11

1.3.4建议13

1.4安装Web服务器13

1.4.1WEBrick13

1.4.2Mongrel14

1.5最后给读者的建议16

1.5.1使用版本控制系统16

1.5.2使用Capistrano实现自动部署17

1.6本章小结19

第2章创建Rails应用程序21

2.1创建步骤21

2.1.1步骤1:创建项目21

2.1.2步骤2:配置数据库25

2.1.3步骤3:测试应用程序26

2.1.4步骤4:安装样式表(StyleSheet)27

2.1.5步骤5:将应用程序与Rails绑定27

2.2本章小结28

第2部分

MonkeyTasks日常任务管理

第3章实现用户注册与认证管理31

3.1创建页面布局31

3.1.1初始化布局32

3.1.2第一个视图模板35

3.2添加用户注册与认证管理36

3.2.1配置ActsasAuthenticated39

3.2.2实现用户注册功能41

3.2.3发送邮件通知43

3.3本章小结49

第4章实现日常待办事项管理51

4.1创建Task模型类51

4.2创建Task控制器53

4.3添加任务表单55

4.4更好的日期选择控件56

4.5Schedule模型59

4.6Todo模型60

4.7实现任务列表功能62

4.8实现日程表功能64

4.8.1安排任务65

4.8.2显示日程表66

4.9使用局部模板(Partial)68

4.10使用Ajax71

4.10.1可排序元素71

4.10.2RJS72

4.11本章小结74

第5章完善MonkeyTasks77

5.1添加验证功能(Validation)77

5.2任务修改功能77

5.3添加日历(Calendar)77

5.4查看以前的任务78

5.5记录每个任务的预计时间78

5.6显示任务完成率78

5.7开发iPhone接口79

5.8优化数据库查询79

5.9将代码移到模型类中80

5.10绑定ChronicGem81

5.11本章小结81

第3部分

Exercisr应用程序

第6章开发基于REST的应用程序85

6.1基于REST的开发85

6.1.1什么是REST85

6.1.2REST的价值86

6.2第一个资源87

6.2.1REST工具87

6.2.2创建Exercise资源91

6.3添加基于REST的认证功能96

6.4改进外观显示102

6.5创建新的用户103

6.6完成Exercise资源106

6.6.1创建模型间关联关系106

6.6.2修改Exercise控制器的作用域107

6.6.3运动(Exercise)视图109

6.7Workout资源112

6.7.1Workout模型及其关联关系112

6.7.2Workout控制器112

6.7.3修改视图114

6.8记录锻炼过程中的数据116

6.8.1创建Activity模型类及其关联关系117

6.8.2修改Activity路由119

6.8.3修改Activity控制器120

6.8.4修改Activity视图模板122

6.8.5修改Workout控制器中的show方法124

6.8.6改进添加Activity的表单125

6.9跟踪锻炼目标127

6.9.1修改模型类127

6.9.2创建嵌套路由128

6.9.3配置控制器128

6.9.4配置视图132

6.9.5记录上一次结果136

6.9.6探索REST接口136

6.10本章小结139

第7章为应用程序添加图形功能141

7.1第二阶段开发141

7.2Rails中的图表141

7.2.1CSS图表141

7.2.2Sparklines144

7.2.3Gruff图表147

7.2.4Scruffy153

7.2.5Ziya155

7.3本章小结162

第8章完善Exercisr163

8.1为接口添加RJS163

8.2创建日历来显示锻炼的时间163

8.3对图表进行缓存164

8.4使首页也符合REST要求164

8.5开发更多的图表164

8.6调整模型类和控制器中的业务逻辑164

8.7开发网络交流功能165

8.8本章小结165

第4部分

简单的博客程序

第9章使用Typo创建博客程序169

9.1Typo介绍169

9.1.1Typo的特点170

9.1.2安装Typo170

9.1.3激活TypoBlog171

9.2Rails的启动过程173

9.3理解Typo177

9.4Rails如何对请求进行路由181

9.5确定设计方案187

9.6使用Typo188

9.6.1管理Blog190

9.6.2添加内容191

9.7定制Typo192

9.7.1管理主题192

9.7.2关于主题193

9.7.3创建自定义主题193

9.7.4创建侧边栏(Sidebar)组件198

9.7.5自定义侧边栏组件199

9.8本章小结200

第10章创建一个简单的博客引擎(Engine)201

10.1我们将创建什么样的引擎201

10.2创建第一组模型类202

10.3创建API205

10.3.1MetaWeblog服务API207

10.3.2支持BloggerAPI209

10.3.3支持图像222

10.4创建博客的展现界面228

10.4.1创建基本的布局228

10.4.2修改Application控制器230

10.4.3创建首页230

10.4.4查看某篇日志234

10.5本章小结238

第11章完善博客程序239

11.1开发BloggerAPI239

11.2使用Mephisto来创建Blog程序239

11.3定制Typo239

11.4在方法中实现认证功能240

11.5添加缓存(Caching)240

11.6添加评论和Akismet垃圾广告过滤功能240

11.7添加Web后台管理241

11.8针对分类的RSS文件(Feed)241

11.9实现标签(Tag)功能241

11.10本章小结242

第5部分

使用缓存构建一个Web漫画站点

第12章使用页面缓存构建基本的系统245

12.1基本的管理系统246

12.1.1上传漫画247

12.1.2Comic模型248

12.1.3修改路由251

12.1.4修改脚手架(Scaffolding)252

12.1.5创建一个漫画254

12.1.6简单的认证系统256

12.1.7限制访问258

12.2向公众展现漫画259

12.3页面缓存261

12.3.1开启缓存功能262

12.3.2清除缓存266

12.4本章小结268

第13章实现高级缓存269

13.1Members控制器270

13.2限制其他用户的访问271

13.3缓存付费成员的页面273

13.4使缓存页面过期275

13.5片段缓存276

13.5.1自定义布局277

13.5.2清除片段缓存282

13.6本章小结282

第14章完善Web漫画站点285

14.1添加一个博客(Blog)285

14.2集成一个论坛(Forum)285

14.3通过日期来选择漫画286

14.4完善身份认证系统286

14.5本章小结286

第6部分

教会社区网站

第15章用户和档案管理291 15.1安装Restful认证291

15.2我们即将要创建什么294

15.2.1创建共享布局295

15.2.2Avatar模型296

15.2.3用户的详细信息模型298

15.2.4创建示例用户300

15.2.5Profile控制器301

15.3修改用户的详细信息和头像304

15.3.1修改档案信息305

15.3.2查看档案308

15.4添加博客功能309

15.5在用户页面中添加博客摘要317

15.6添加相册功能319

15.7添加照片321

15.8相册与照片控制器323

15.8.1创建一个新的相册324

15.8.2查看指定相册325

15.8.3显示所有用户的相册326

15.9本章小结328

第16章完善社区站点329

16.1创建社区主页329

16.1.1创建默认路由329

16.1.2index页面330

16.1.3创建首页334

16.2添加用户目录336

16.2.1创建字母索引336

16.2.2创建路由337

16.2.3添加directory方法337

16.2.4修改视图模板338

16.3添加导航339

16.3.1上部导航339

16.3.2页脚导航340

16.4添加评论340

16.4.1安装acts_as_commentable插件341

16.4.2显示评论342

16.4.3添加评论345

16.5本章小结351

第17章完善教会社区应用353

17.1创建用户导入或注册功能353

17.2使用SWFupload批量上传照片353

17.3添加好友列表功能354

17.4改进主页355

17.5清理部分Ruby代码355

17.6将代码移到局部模板(Partial)中355

17.7添加缓存功能357

17.8本章小结357

第7部分

GamingTrend网站

第18章PHP网站的遗留问题361

18.1简要介绍当前系统362

18.1.1当前系统的代码363

18.1.2遗留系统存在的问题365

18.2建立我们的应用程序366

18.3使用Ext-JS建立更好的界面368

18.3.1BorderLayout369

18.3.2表格(Grid)370

18.3.3对话框(Dialog)371

18.3.4消息框(MessageBox)372

18.4在Rails应用程序中安装Ext-JS373

18.5自动化Ext-JS安装374

18.6本章小结378

第19章转化游戏记录379

19.1对数据库进行迁移转化379

19.2Games表381

19.3创建Game模型385

19.4创建Developer和Publisher模型387

19.5创建Genres模型391

19.6配置路由393

19.7创建控制器393

19.8创建视图396

19.8.1标准布局396

19.8.2使用ExtBorderLayout改进布局页面399

19.9定义工作流(Workflow)402

19.9.1显示当前资源列表402

19.9.2创建一个新资源402

19.9.3删除指定资源403

19.9.4修改指定资源403

19.10建立开发商页面403

19.10.1显示开发商列表403

19.10.2修改开发商记录408

19.10.3改进表格410

19.10.4在工具栏上增加按钮417

19.10.5删除开发商记录418

19.10.6新建开发商记录421

19.11将工作流抽象为辅助方法423

19.12创建Show/Edit模板433

19.13游戏435

19.13.1处理选择列表框440

19.13.2提供所见即所得(WYSIWYG)功能442

19.14查看游戏截图446

19.15本章小结452

第20章新闻管理功能453

20.1修改数据库453

20.2创建新闻模型455

20.3创建控制器457

20.4创建列表视图458

20.4.1重定义index方法458

20.4.2创建index视图458

20.4.3修改表格460

20.5捕获创建中的错误信息471

20.6新闻编辑页面472

20.6.1编辑新闻472

20.6.2激活(Activate)邮件474

20.6.3为新闻建立关联关系476

20.7本章小结483

第21章完善游戏网站485

21.1创建自己的生成器(Generator)485

21.2添加登录功能485

21.3在新闻中关联发行商、开发商和游戏机型487

21.4创建一个游戏机型常量487

21.5增加包装图片和游戏截图的上传功能487

21.6支持游戏评论488

21.7支持较长内容488

21.8添加ActsasParanoid插件488

21.9将逻辑移到模型中489

21.10本章小结489

第8部分

使用EdgeRails(Rails2.0)集成REST应用程序

第22章Highrise的简要介绍493

22.1注册一个Highrise账户493

22.2创建联系人495

22.3创建任务496

22.4Highrise的更多功能496

22.5本章小结497

第23章集成Highrise的RESTAPI499

23.1浏览API499

23.2使用RESTAPI501

23.3新建EdgeRails项目502

23.3.1获得Rails的Edge版本503

23.3.2创建EdgeRails应用程序503

23.4测试我们的连接505

23.5本章小结507

第24章创建预约程序509

24.1我们要创建什么样的程序509

24.2设计布局草图509

24.2.1安装Ext510

24.2.2使用Yahoo地图510

24.2.3获取应用程序ID511

24.2.4布局脚本511

24.3Home控制器512

24.4添加任务列表516

24.5显示待办任务518

24.5.1创建变量519

24.5.2建立数据源520

24.5.3在地图上显示客户525

24.6管理备忘记录(Notes)527

24.6.1显示备忘信息528

24.6.2添加备忘信息528

24.6.3使用AJAX更新备忘信息529

24.7本章小结531

第25章完善Rails2.0应用程序533

25.1改进Highrise项目533

25.1.1缓存客户数据533

25.1.2创建约会533

25.1.3修改客户信息534

25.2EdgeRails2.0的新特性534

25.2.1SexyMigrations534

25.2.2自动生成迁移代码534

25.2.3数据库命令535

25.2.4查看路由535

25.2.5查询缓存535

25.2.6改善REST风格的路由536

25.2.7从框架中移除的功能536

25.3本章小结537

……

书摘


搭建开发环境

Miracle Max:你催促一个制造奇迹的人,只能得到一个糟糕的奇迹。

——摘自William Goldman编剧的影片《公主新娘(The Princess Bride)》,1987年

为了能够运行本书中的项目,首先需要保证在机器上已经安装了如下的软件。Ruby和Rails:因为Rails是一个针对于Ruby的框架,并且其自身也是使用Ruby编写的,所以首先需要安装Ruby。对于本书来说,Ruby的版本应该在1.8.4以上。稍后我会讲解一些如何快速并且正确安装Ruby及Rails的方法。

数据库(Database):Rails框架是针对于创建基于数据库驱动(Database—driven)的Web应用程序。因此如果没有连接数据库的话,这个框架很可能无法启动。稍后会讨论开发中经常会使用的几种数据库类型。

代码编辑器(Code Editor):虽然从Rails的开发理论上来说,只要使用文本编辑器(可以创建和修改文本文件)就足够了,但是由于在实际中可能会牵扯到大量的文件,所以我们在后面会介绍一些高级技巧,来帮助读者提高开发的效率。

Web服务器:再好的机器也需要借助Web Server才能运行Rails程序。幸运的是,现在已经有几种非常优秀的、基于Ruby实现的服务器可以供我们选择。

安装Ruby和Rail

因为考虑到本书的大部分读者可能已经阅读过一些入门的Rails书籍,所以我也不打算花费太多的时问来讲解如何安装Rails。但是,又考虑到有些读者的确需要了解这方面的内容,所以我想至少还是应该为他们指明一个正确的方向,以免有读者在这个问题上无谓地浪费精力和时间。因此在这个部分中,我会从一个更高层次的角度来介绍如何在Linux、Windows和Mac OSX上安装Rails。

如果读者想参考一本入门级的Rails书籍,那么最好的选择是《Agile Web Development with Rails》(Thomas,Dave et al. Pragmatic Programmers,2006)。

……