在2004年末我开始使用Ruby和Rails工作以前几乎没有Rails框架的文档。从那时开始涌现大量关于使用Rails创建Web应用的书籍、博客和文章,但是其中很多内容似乎都遵循一个普遍的模式:你可以在15分钟内创建一个博客,一个to-do list程序如此简单。我所见到的许多书籍花了一整章篇幅来讲述Ruby和Rails的安装。现在不再缺乏Rails初学者和中级开发人员的资料,但是Rails明显比开发玩具博客和to-do list更有用。.
37 signals的应用(Basecamp、Highrise、Backpack和Campfire)都是用Rails构建的,许多互联网高流量站点如Twitter、Penny Arcade和Yellowpages.com也都使用它。Rails现在用于许多备受瞩目的地方,但是开发人员经常不得不在构建如此大型的应用时自谋生计,因为目前大部分相关的资料通常都只能在其他开发人员的博客上找到。
开发和部署复杂的Web项目是一项综合任务,并且它将一直保持如此。在本书中,我设法将一些与Rails开发相关的不同主题组织在一起,从最基础的Ruby编程语言到大型Rails应用开发。
前提条件
本书的书名暗示了它不是为初学者准备的。读者应该对Web架构有所了解,很好地掌握Ruby 1.8,有使用Ruby on Rails构建Web程序的经验。我们没有讲到Rails的安装、Rails API或者Ruby语言,所有这些工作级别的经验都假设读者已经具有。
我推荐如下书籍作为本书的序曲:
《Programming Ruby》第2版,作者Dave Thomas(Pragmatic Bookshelf):著名的“鹤嘴锄”,这是一本对开发人员介绍Ruby的优秀书籍,还是一本可以使用多年的全面参考。毫无疑问这是对Rails开发人员最重要的书籍,无论是什么技术级别的。
《The Ruby Programming Language》,作者David Flanagan和Yukihiro Matsumoto(O’Reilly):计划于2008年1月发布,该书是对Ruby 1.8和Ruby 1.9的全面介绍和参考。它完成了讲述Ruby最难的部分的杰出工作,同时也仍然让学习它的程序员容易理解。
《Best of Ruby Quiz》,作者James Edward Gray II(Pragmatic Bookshelf):从Ruby Quiz(http://www.rubyquiz.com/)选择了25道测验,包含测验和解决方案的讨论。解决编程难题并与他人分享解决方案是提高Ruby技能的好方法。
《Agile Web Development with Rails》,第2版,作者Dave Thomas和David Heinemeier Hansson(Pragmatic Bookshelf):学习Ruy on Rails的最佳和最全面的书籍。第二版覆盖了Rails 1.2,但是大部分概念对Rails 2.0同样适用。
《Rails Cookbook》,作者Rob Orsini(O’Reilly):它包含了在Rails里的常见问题“cookbook风格”的解决方案,其中每个问题所节省的时间都可能值该书的价钱。类似的书籍如Chad Fowler写的《Rails Recipes》与Mike Clark和Chad Fowler写的《Advanced Rails Recipes》(Pragmatic Bookshelf)也值得一读。
本书覆盖了各种各样不同的主题,我也努力去介绍那些可能不为人所知的主题(例如分布式版本控制)并提供可能有用的外部资源参考。每章都有一个“扩展阅读”的部分,加上参考来作为原文的进一步阐明或扩展。
我采用自下而上的方式来完成本书讲述的概念。开始几章讲述了Ruby里的元编程机制和Rails内部机制。随着内容的推进,这些概念嵌入到更大的章节里,最后几章讲述了管理大型Rails软件开发项目的“大图景”以及将Rails集成到其他系统。
本书为Rails 2.0而写。在写作本书的时候,Rails 2.0已经作为发布候选来发布,但不是最终形式。细节随时可变,但是本书里所讨论的概念和技术在Rails 2.0里仍然有效。
本书惯例
本书使用如下印刷惯例:
普通文本(Plain text)
表示目录标题、目录选项、目录按钮、键盘加速器(如Alt和Ctrl)、插件、gem和库。
斜体
表示新术语、URL、E-mail地址、文件名、文件扩展名、路径名、目录、控件和UNIX辅助程序。
.等宽字
表示命令、选项、开关、变量、属性、键、方法、类型、类、命名空间、方法、模块、特性、参数、值、对象、事件、事件处理器、接口、XML标签、HTML标签、宏、文件内容或命令输出。
等宽斜体字
表示应该使用用户提供的值替换的文本。
等宽粗体字
显示部分醒目的代码。
注意:表示一个小贴士、建议或一般注解。
警告:表示一个警告。..
使用代码实例
本书帮助你完成工作。一般来说,你可以在你的程序和文档里使用本书的代码而不必联系我们获取授权,除非你重新发布本书大部分的代码。例如,使用本书一些代码片段来写程序不需要授权,销售或者分发O’Reilly书籍实例的CD-ROM需要授权,引用本书回答问题或者引用实例代码不需要授权,将本书大量的实例代码合并到你的产品文档里需要授权。
我们对注明书籍归属表示感谢,但这不是必需的。书籍的归属通常包括书名、作者、出版商和ISBN。例如“Advanced Rails,by Brad Ediger.Copyright 2008 Brad Ediger,978-0-596-51032-9。”
如果你觉得你对代码实例的使用超出了正当使用或者上面给定的权限的范围,欢迎联系我们permissions@oreilly.com。
怎样联系我们
请将您对本书的宝贵意见及问题告诉我们。来信请寄:
美国:
O’Reilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中国:
100035北京市西城区西直门南大街2号成铭大厦C座807室
奥莱利技术咨询(北京)有限公司
我们为本书设有一个Web页面,上面列出了勘误、例子和一些额外的信息。你可以通过如下网址访问该页面:
http://www.oreilly.com/catalog/9780596510329
对本书评论或者提技术问题请发送E-mail到:
bookquestions@oreilly.com
info@mail.oreilly.com.cn
关于我们的书籍、研讨会、资源中心以及O’Reilly Network更多的信息,请参考网站:
http://www.oreilly.com
http://www.oreilly.com.cn
致谢
没有许多人的帮助不可能完成一本书。我需要好好感谢许多帮助我完成这项工作的人。没有他们的帮助和支持,这些主意可能仍然只是我脑海里跳跃的思维。
O’Reilly的编辑Mike Loukides帮助我为本书提主意。他帮我懂得我真正想写的是哪种书,并且提供必要的鼓励来让我将想法付诸实现。Mike关于工业界、著述流程和计算机科学的广博知识是无价的。
我拥有一个完美的技术审阅者团队,他们在手稿中找出了许多错误。感谢James Edward Gray II、Michael Koziarski、Leonard Richardson和Zed Shaw的校订。任何剩余的纰漏都来自我本人。(如果你找到其中一个错误,我们希望能在http://www.oreilly.com/catalog/9780596510329/errata/听到)。
O’Reilly的产品部门非常专业并通融我零散的日程。Keith Fahlgren、Rachel Monaghan、Rob Romano、Andrew Savikas、Marlowe Shaeffer和Adam Witwer都帮助我让本书变得有用而且吸引人。
我有许多朋友和同事都给我提供建议、支持、批评和审阅。感谢Erik Berry、Gregory Brown、Pat Eyler、James Edward Gray II、Damon Hill、Jim Kane、John Lein、Tim Morgan、Keith Nazworth、Rob Norwood、Brian Sage、Jeremy Weathers和Craig Wilson的付出。也感谢Gary和Jean Atkins,尽管他们对Rails和软件开发一无所知,但也一直不忘询问我的书籍的进展并给予鼓励。
其他人通过书籍、在线文章以及邮件列表里的讨论给我提供灵感:Francois Beausoleil、David Black、Avi Bryant、Jamis Buck、Ryan Davis、Mauricio Fernandez、Eric Hodel、S.Robert James、Jeremy Kemper、Rick Olson、Dave Thomas和why the lucky stiff。
没有Ruby on Rails则所有的这一切都将不复存在。感谢Yukihiro Matsumoto(Matz)发明了如此美丽的语言,感谢David Heinemeier Hansson发明了如此有趣的框架,感谢Ruby和Rails代码贡献者和社区对它们的维护。
感谢我的父母对我一如既往的支持。
最后,感谢我美丽的妻子Kristen,她忍受了长达一年的写作过程。她鼓励我写一本书,当时我认为这是不可能的。她在我写作路上的每一步都支持着我。...