Ruby on Rails社区网站开发
分類: 图书,计算机/网络,程序设计,网站开发,
作者: (英)布拉德伯纳(BradburneM,A)著;柳靖译
出 版 社: 人民邮电出版社
出版时间: 2008-10-1字数: 520000版次: 1页数: 341印刷时间: 2008/10/01开本: 16开印次: 1纸张: 胶版纸I S B N : 9787115187086包装: 平装编辑推荐
使用Rails开发自己的社区网站,凝聚业界专家多年深厚功力,丰富的实战经验与技巧。
“这是一部杰作!有它在手,足以开发出一个真正的社区网站。书中采用了模块化的方法,实例可以非常容易地复用。比如在现有网站中添加社区网络功能。”
——David Berube,资深Ruby技术专家,Practical Ruby Gems一书作者
“我非常喜欢这本书,相信所有RoR程序员都会从中获益匪浅。”
——Larry Wright,资深RoR和敏捷技术专家
社区网站毫无疑问是当今因特网的大热点,即使是最传统的网站,也会考虑添加更多社区网站的特性。正是在这样的大背景下,横空出世的Ruby on Rails也成为无数Web开发人员的新宠。
本书全面展现了构建一个社区网站的开发过程。首先开发一个简单的内容管理系统,然后逐步添加各种特性。完成一个支持各种Web 2.0功能的完整社交网络。从本书中可以学到如何在大型项目中充分运用Ruby on Rails框架以及各种插件,如何实现社区特有的功能。如何集成Flickr和Google Maps等API。本书还提供了很多经过实践验证的开发、测试、优化及维护方面的经验和技巧。书中处处体现出作者独到的洞察力,以及多年开发和指导软件项目所练就的深厚功力。
内容简介
本书全面探讨创建完整社区网站的开发过程。首先介绍开发一个内容简单的管理系统,之后逐渐添加新特性,以创建更完整的、使用Ruby on Rails 的Web 2.0 社区网站。还给出了开发和测试中的一些建议和提示,同时指导如何使网站更生动以及维护得更好。本书也探讨了如何与Flickr 、Google Maps 等其他平台集成,如何最佳地利用Rails 的Ajax 特性,以及如何使网站适应移动设备。
本书适合所有Web 开发人员阅读。
作者简介
AIan Bradburne,资深Web工程师,尤其擅长社区网站开发。他在Web开发领域和移动行业拥有十多 年的工作经验。曾任职于摩托罗拉和Sun等著名企业。他是RoR软件公司Incrediblinc创办者之一,此前还-创建了世界上最早的手机照片博客社区Phlog.net。可以通过http://alanbradburne.com与他联系。
目录
第1章Ruby语言、Ruby on Rails 框架和RailsCoders项目
1.1RailsCoders项目
1.2Ruby语言和Ruby on Rails框架
1.2.1Ruby语言历史概况
1.2.2什么是Ruby on Rails
1.3搭建RailsCodes网站所需的软件
1.4升级Rails
1.5安装Ruby、Rails和MySQL
1.5.1在Windows上安装
1.5.2在Mac OS X中安装
1.5.3在Linux中安装
1.6创建Rails应用程序的框架
1.7设置数据库
1.7.1创建数据库
1.7.2配置Rails以使用数据库
1.7.3测试数据库
1.8小结
第2章开发内容管理系统
2.1确定功能需求
2.2Rails、路由和REST
2.2.1传统的Rails路由
2.2.2REST方式的Rails路由
2.3构建网站布局
2.4设计页面和页面编辑器
2.4.1Page模型
2.4.2页面控制器
2.5创建Page模型
2.5.1迁移任务
2.5.2生成模型
2.5.3创建控制器
2.5.4设置默认页面
2.5.5在侧栏菜单中添加链接
2.6测试
2.6.1创建测试数据库
2.6.2为Page模型开发单元测试
2.7扩展内容管理系统
2.8小结
第3章添加用户和组
3.1确定功能需求
3.1.1定义User模型
3.1.2Role模型和连接表
3.1.3控制器
3.1.4会话和Cookie
3.2创建User模型
3.3会话处理库
3.4创建控制器
3.4.1用户控制器
3.4.2账户控制器
3.5创建用户账户视图
3.5.1新用户视图
3.5.2登录视图
3.5.3用户信息展示视图
3.6添加管理视图
3.6.1在索引视图中列出全部用户
3.6.2使用edit.rhtml来编辑用户
3.7测试
3.7.1单元测试
3.7.2功能测试
3.8添加角色
3.8.1创建Role模型和连接表
3.8.2检测用户角色
3.8.3管理角色
3.9测试角色功能性
3.10扩展用户管理系统
3.11小结
第4章搭建提供RSS Feed和API的新闻博客
4.1确定功能需求
4.1.1Textile标注
4.1.2Article模型
4.1.3定义Category模型
4.1.4编辑角色
4.1.5文章控制器
4.1.6分类控制器
4.2安装RedCloth Gem包
4.3创建Article模型和Category模型
4.3.1编写数据库迁移任务
4.3.2定义模型间的关联关系
4.3.3定义验证
4.3.4删除分类时自动置空category_id
4.3.5自动更新published_at字段
4.3.6添加编辑角色
4.4创建文章控制器和视图
4.4.1映射REST资源
4.4.2文章控制器
4.4.3文章视图
4.5使用文章功能部件
4.5.1测试XML API
4.5.2为API添加HTTP验证
4.5.3测试API验证
4.6创建分类控制器和视图
4.6.1分类控制器
4.6.2分类视图
4.6.3在侧栏菜单中添加链接
4.7手动测试新闻博客系统
4.8测试新闻博客
4.8.1功能测试
4.8.2综合测试
4.9新闻系统的进阶开发
4.10小结
第5章搭建交流论坛
5.1确定交流论坛的功能需求
5.1.1定义Forum模型
5.1.2定义Topic模型
5.1.3定义Post模型
5.1.4版主角色
5.1.5论坛控制器、主题控制器和帖子控制器
5.2搭建论坛
5.2.1创建Forum模型、Topic模型和Post模型
5.2.2检测用户角色的版主权限
5.2.3添加嵌套的资源路由映射
5.2.4修改布局模板和样式表
5.2.5论坛控制器及其对应的视图
5.2.6主题控制器及其对应的视图
5.2.7帖子控制器及其对应的视图
5.2.8在侧栏菜单中添加链接
5.2.9测试主题和帖子
5.2.10限制版主之外的用户访问行为方法
5.3测试论坛
5.3.1创建测试夹具
5.3.2创建功能测试
5.4交流论坛的进阶开发
5.5小结
第6章构建支持Web服务的博客引擎
6.1确定博客引擎的功能需求
6.1.1Entry模型
6.1.2Comment模型
6.1.3User模型
6.1.4日志控制器
6.1.5评论控制器
6.1.6博客控制器
6.1.7博客API
6.2构建博客系统
6.2.1博客的框架代码
6.2.2编写迁移任务
6.2.3模型间的关联关系和验证
6.2.4创建资源映射
6.2.5博客名称辅助方法
6.2.6为用户资料页面添加博客标题
6.2.7控制器和视图
6.2.8测试日志控制器
6.2.9创建并测试评论控制器
6.2.10为用户资料添加最新博客日志
6.2.11博客控制器
6.3创建XML-RPC博客接口
6.3.1Action Web Service
6.3.2生成Web服务代码
6.3.3定义API方法调用
6.3.4编写博客API方法代码
6.3.5测试Web服务
6.3.6使用桌面博客客户端工具进行测试
6.3.7自动测试博客API
6.4博客系统的进阶开发
6.5小结
第7章构建相册
7.1处理上传的文件
7.2attachment_fu插件
7.3相册的功能需求
7.3.1定义Photo模型
7.3.2照片控制器
7.4安装ImageMagick、RMagick和attachment_fu
7.4.1Windows下的安装
7.4.2OS X下的安装
7.4.3Linux下的安装
7.4.4安装attachment_fu插件
7.5建立相册
7.5.1生成框架代码
7.5.2编写迁移任务
7.5.3创建Photo模型及相应的关联关系
7.5.4映射照片资源
7.5.5照片控制器和用户照片控制器
7.5.6照片视图
7.6手动测试相册
7.7编写测试用例
7.7.1创建照片夹具
7.7.2单元测试
7.7.3功能测试
7.8相册功能的进阶开发
7.9小结
第8章发送电子邮件并建立新闻公告邮件列表
8.1使用ActionMailer
8.2确定电子邮件功能需求
8.2.1新评论的电子邮件通知
8.2.2新闻公告邮件
8.3建立新评论通知器
8.3.1创建邮件发送器
8.3.2手动测试电子邮件的创建
8.3.3从评论控制器调用邮件发送器
8.3.4从应用程序内部测试邮件发送器
8.3.5自动邮件发送器的测试
8.4建立新闻公告功能
8.4.1安装ar_mailer
8.4.2创建框架资源
8.4.3映射新闻公告资源
8.4.4Newsletter模型
8.4.5编写新闻公告控制器及其对应的视图
8.4.6创建新闻公告发送器
8.4.7在侧栏菜单中添加新闻公告
8.4.8测试新闻公告邮件发送系统
8.5电子邮件系统的进阶开发
8.6小结
第9章添加带有XFN详细信息的好友
9.1微格式和XFN
9.2好友功能需求
9.2.1Friends资源
9.2.2显示用户最近的活动
9.3建立Friends资源
9.3.1建立数据库迁移
9.3.2建立Friends资源
9.3.3更新用户最近活动信息
9.3.4好友控制器及其对应的视图
9.3.5在侧栏中添加好友链接
9.4美化好友列表
9.5测试
9.6好友功能的进阶开发
9.7小结
第10章为相册添加标签
10.1相册标注的功能需求
10.2使用Rails实现标注
10.3acts_as_taggable_on_steroids插件
10.4构建照片标注功能
10.4.1安装acts_as_taggable_on_steroids插件
10.4.2创建数据库表
10.4.3更新模型
10.4.4创建控制器
10.4.5添加资源映射
10.4.6编写控制器和视图
10.4.7为照片添加标签
10.4.8链接到标签浏览器
10.5手动测试
10.6标签系统的进一步开发
10.7小结
第11章结合Web 2.0创建Mashup
11.1集成Google Maps API
11.1.1地图功能需求
11.1.2构建地图功能
11.2集成Flickr API
11.2.1Flickr功能需求
11.2.2构建Flickr集成功能
11.3使用Mashup做进一步开发
11.4小结
第12章为博客引擎添加个性化主题
12.1博客模板需求
12.2Liquid模板
12.2.1Liquid API
12.2.2Liquid标记
12.3安装Liquid8
12.4构建博客模板功能
12.4.1创建Liquid drop
12.4.2创建Liquid过滤器
12.4.3Usertemplate模型
12.4.4用户模板控制器
12.4.5用户模板视图
12.4.6呈现Liquid模板
12.5手动测试
12.6测试用户模板控制器
12.7用户模板的进阶开发
12.8小结
第13章添加移动接口
13.1移动网络
13.2RailsCoders移动网站需求
13.2.1布局
13.2.2用户资料
13.2.3账户
13.2.4页面
13.2.5新闻
13.2.6论坛
13.2.7博客
13.2.8相册
13.3开发RailsCoders网站的移动版本
13.3.1移动应用程序的架构
13.3.2创建移动布局和样式表
13.3.3资源映射
13.3.4移动控制器和视图
13.4手动测试
13.5测试移动网站
13.6移动网站的进阶开发
13.7小结
第14章部署、优化和扩展应用程序
14.1部署RailsCoders网站
14.1.1开发模式和产品模式
14.1.2会话存储
14.1.3选择主机
14.1.4选择Web服务器
14.1.5利用Capistrano和Deprec实现自动化部署
14.2优化和扩展RailsCoders
14.2.1观察日志文件
14.2.2缓存
14.2.3基准测试
14.3小结
书摘插图
第1章Ruby语言、Ruby on Rails 框架和RailsCoders项目
1.2 Ruby语言和Ruby On Rails框架
在正式开始开发网站之前,有必要花一点时间来了解什么是Ruby语言和Ruby on Rails框架以及它们之间的关系。
Ruby 0n Rails框架彻底改变了许多Web应用开发团队和个人的开发方式——一些小团队能够轻而易举地开发出稳定、易扩展且易维护的应用程序。Rails框架可实现快速开发,且不含“脏”代码,这意味着应用程序的开发能够快速和交互式地完成,同时具有良好的架构和稳定性。
了解Ruby语言和Ruby on.Rails框架的历史,有助于更好地从中获益,同时也能发现它们高效、有趣的原因所在。
1.2.1 Ruby语言历史概况
Ruby语言和Ruby on Rails框架往往同时被提及,这很容易让人误以为它们完全相同。查看Rails代码不会有多大的帮助,因为很难看出“Ruby在哪里结束,Ruby on Rails从哪里开始”。
Ruby语言仅仅是一种类似于Perl、PHP或Java的编程语言。然而,Ruby语言的一些特性又使它区别于其他编程语言。首先,Ruby语言被设计成一种面向对象的语言。这不同于Pell或PHP那种事后产生想法形成面向对象特征的语言,也不同于Java或C#,Ruby语言是完全面向对象的,即.Ruby语言中一切皆为对象。
其次,Ruby语言是一种动态语言,这意味着使用Ruby语言编写的程序在执行过程中能够改变其自身的结构。Ruby语言是动态类型,变量并不限于某一特定的类型(如整型或字符串),它们能够在程序执行期间改变类型。如果以前有过如Peil或Python等动态语言的开发经验,你可能不会感到意外;但如果以前是c++或Java背景,你可能会感到有些不同。
……