InfoQ

文章

DHH访谈:Rails 2.0新特性

作者 Robert Bazinet译者 马家宽 发布于 2008年1月14日 下午6时53分

社区
Ruby
主题
Ruby on Rails,
REST
标签
Ruby on Rails

历经数月开发,Ruby on Rails 2.0终于正式发布。InfoQ有机会就Rails 2.0与Ruby on Rails之父和最有影响力的支持者——David Heinemeier Hansson进行了交流。

相关厂商内容

活动:免费参加中国软件技术英雄会(上海站 9.5)

Ruby的开放类──或者:怎样避免动态打补丁

SOY Framework:Java富客户端快速开发框架

互联网开放平台技术趋势和讨论

免费迷你书下载:Grails入门指南

相关赞助商

InfoQ中文站Ruby社区,面向Web和企业开发的Ruby,主要关注Ruby on Rails,通过新闻、文章、视频访谈和演讲以及迷你书等为中国Ruby社区提供一流资讯。

David Heinemeier Hansson作为web应用框架Ruby on Rails的创始人而声名鹊起。Ruby on Rails是我们用来构建37signals所有应用的基础软件。David Heinemeier Hansson1979年出生于丹麦哥本哈根。在2005年从哥本哈根商学院毕业后,他移居到了美国芝加哥市。他是37signals的合伙人之一,这家公司拥有Basecamp、Highrise、Backpack、Writeboard和Ta-da List等一系列web应用。由于在Rails方面的工作,David在2005年被Google和O'Reilly合办的OSCON大会授予最佳Hacker大奖。而2006年他又凭借Rails 1.0获得了年度卓越web开发工具震撼大奖(译注:2006年Rails 1.0获得了Jolt大奖中WEB DEVELOPMENT TOOLS类的Jolt Winner)。

Rob Bazinet (RB):Rails 2.0.1已经发布,你如何评价Rails团队的成果?

David Heinemeier Hansson (DHH):大家的聪明才智能够汇聚在一起,这让我感到非常骄傲。来自全世界各地的人们能够在一起为发布一个被广泛使用的框架而工作,这听起来好像很不切实际。然而,我们确实做到了。像Ruby on Rails这样的大型开源项目为我们勾勒出了这样一个美妙图景:程序员们超越时间、国家和语言的障碍,通过远程协同的方式一起工作。

最后的成果同样令人印象深刻。Rails 2.0经过了精心的设计,其妙处很难用言语表达清楚(众多细微的修改到底意味着什么呢?),但开发者在使用过程中会明显的感觉到。

RB:如果请你回到Rails发展的初始时间点上,重新审视你和Rails社区一路走来的历程,你能够想象会取得今天的成就吗?我的意思是,今天Rails所拥有的开发者、产品、培训课程、书籍、会议和其他社区支持。

DHH:其实还好。那时候我想,如果我喜欢用Ruby on Rails,其他人也很可能会的。我的编程品味和美学并不怪异,很多人都和我拥有一些共同的赏鉴观。不过,自Rails发展伊始,我们确实已经在非常短的时间内取得了激动人心的巨大进步。

也许我那时候有一点悲观,我并没有料想到这样一个由奉献业余时间的志愿者们所开发的开源项目会产生如此大的影响。当然,看到当初估计的种种困难最终被克服,确实令我欢欣鼓舞。

RB:你认为Rails世界在未来几年中会如何发展?也许让你做出预测可能比较难,我只是想知道你对于未来发展的期望是怎样的?

DHH:我希望我们继续通力合作,不断解决Rails本身存在的各种问题。我们会继续坚持我们的愿景和理念,吸引更多的人们进入Rails世界。当然,并不是每个人都得用Rails。Rails是一个技术框架,但它同时也体现着风格和偏好。试想如果每个人都喜欢同样的餐厅或穿着出自同一位设计师之手的衣着,这个世界将会变得多么乏味?我们需要选择和差异来保持生活的趣味性。

所以如果我们能沿着现在的轨道继续前行,我就心满意足了。

RB: Rails 2.0所做的更新相当多,考虑到这些之中可能存在的破坏性变更,你认为从之前版本向Rails 2.0的过渡会很容易吗?一些编程约定的变化也在需要考虑的范围内,包括将一些功能从框架的一部分移入到gem中。

DHH:我们已经花费了很长时间来保证从Rails1.2.x到2.0版本的迁移不会过于痛苦。在Rails 1.2.6中,我们已经加入了许多警告信息,使得编程者能循着一种可控的方式逐渐为2.0版本做好准备。如果你的应用可以很好的在Rails 1.2.6上运行,那么到2.0的过渡就是水到渠成之事。而那些被从框架内核移到插件的功能也可以通过几句简单的命令重新加入到应用中。

RB: 可否为我们概述一下本次发布的2.0版本相对于1.2.6有什么变化?其中的哪些重大变化使得Rails团队将版本编号做出了如此大的升级?

DHH: 主干版本通常意味着向后兼容性不再被保证。这也是为什么我们在版本上会有此一跃。我们之前一直在整理各种应该被清理的特性,而迈向2.0版本正是顺理成章之举。

RB: 我听说Rails的代码库规模已经从上一版本的5万4千行增加到了现在的近9万4千行。你怎么看这样一个变化?对于保持一个框架的简单性来说,这是一个需要注意的问题吗?也许这不是一个相关的问题,不过我个人确实觉得这一组前后对比的数字很有意思,不知道你是否也有此感觉?

DHH: 我想说随着代码行数的增加,Rails在很多方面其实变得更加简单。许多关注点被抽象成了这样一种方式:如果你不想另辟蹊径,那么你就不需要担心它们。这也是合情合理的做法。对于我来说,代码行数本身并不说明什么问题,而使用者用这些代码所能够表达出什么样的内容才是意义重大的事情。因此如果框架的用户能通过10行而不是100行代码完成一个功能描述,这才是这个框架简单性的真正体现。这也使很多人们觉得Ruby比起像Java或C#这样的语言更加吸引人的一个原因。

RB: 请告诉我你眼中Rails 2.0最重要的特性和那些最可能让开发者笑逐颜开的特性?

DHH: 我认为我们对于RESTful应用开发的侧重是Rails 2.0的第一主题。它包含了一组相关特性,从如何能在routing.rb中影射资源到我们为respond_to提供的多视图支持,再到HTTP基本认证等等。用RESTful的方式开发web应用确实是一个让人欢欣鼓舞的转变。虽然理解这一转变可能会花些时间,但一旦你经过这一阶段,你就会适应并享受它。

我知道Rails被用来开发像Twitter这样拥有大量用户的应用,不过.....

RB: 新引入的特性和更新中是否有面向企业级应用可伸缩性问题的解决方案?

DHH: 我们所确定的任何简化开发的特性都会为大型应用带来更显著的好处。如果你你将一个应用所需的代码量减少20%,那么对于一千行代码规模的项目可以减少200行,而2万行代码规模的项目则可以减少4000行。

当应用的处理负载增加时,应用本身没有什么变化。因为对于应用本身来说,没有什么需要变化。一直以来,人们通常增加线性量级的硬件来保证应用能够处理更多的用户请求(这也使应用可伸缩性的定义)。当然,我们已经对Rails的性能进行了显著的改进,所以每一个服务器将可以处理更大的负载(代码中加入了大量的缓存优化)。

同时,我们还改进了HTTP的使用,因此对于客户端来说,所感觉到Rails应用性能也会更加好。(主要是采用了asset caching)。 

RB: 你认为Rails从Rubinius或Ruby 1.9这样的项目中获得了怎样的益处?

DHH:所有人都希望速度能够更快。对于我来说,速度并不是一个Rails需要解决的需求,不过Ruby速度的提高的确是一个令人愉快的礼物吧。

RB:微软已经在IronRuby方面做了许多工作,不久之后我们可能就会看到.NET上的Rails。与之相对应的是JRuby和在Java虚拟机上运行的Rails。对我来说这听起来这些是将Rails应用到那些将.NET和Java作为标准的企业中。这些是否意味着Ruby和Rails的胜利?你如何看待这一趋势?

DHH:随着人们更多的接触像Rails这样的现代开发框架,他们在使用主流开发环境时遭受糟粕之害的可能性会越来越小。希望这样可以使得大家都能获益。所以我认为将Ruby on Rails吸收到现有的企业基础设施中是件好事。

RB:David,谢谢你今天抽出时间为我们介绍Ruby on Rails的最新发布版。

查看英文原文:Talking Rails 2.0 with David Heinemeier Hansson

5 条回复

回复

infoq的社区导航链接是不是出了问题??? 发表人 zhang haoxiang 发表于 2008年1月15日 下午7时59分
Re: infoq的社区导航链接是不是出了问题??? 发表人 Jason Lai 发表于 2008年1月16日 上午2时45分
“多是土”?“多视图”! 发表人 Fengbo Xie 发表于 2008年1月23日 上午1时5分
Re: “多是土”?“多视图”! 发表人 还是一样 陈 发表于 2008年1月23日 上午2时12分
Re: “多是土”?“多视图”! 发表人 Kevin Huo 发表于 2008年1月24日 上午8时21分
  1. 返回顶部

    infoq的社区导航链接是不是出了问题???

    2008年1月15日 下午7时59分 发表人 zhang haoxiang

    编辑去看看吧

  2. 返回顶部

    Re: infoq的社区导航链接是不是出了问题???

    2008年1月16日 上午2时45分 发表人 Jason Lai

    是的。感谢楼上朋友的报告,我们会很快修复这个问题的。

  3. 返回顶部

    “多是土”?“多视图”!

    2008年1月23日 上午1时5分 发表人 Fengbo Xie

    小编换个好点的拼音输入法吧?难道没有“多视图”这个词? 从如何能在routing.rb中影射资源到我们为respond_to提供的“多是土”支持。

  4. 返回顶部

    Re: “多是土”?“多视图”!

    2008年1月23日 上午2时12分 发表人 还是一样 陈

    都一个星期了.还没修正...

  5. 返回顶部

    Re: “多是土”?“多视图”!

    2008年1月24日 上午8时21分 发表人 Kevin Huo

    已经修正,非常感谢楼上诸位的提醒。

独家内容

从卓越工程角度看微软中国开发团队的成长

开发团队的成长离不开优秀的人才,简捷有效的流程和高效率工具这三个卓越工程系统中的重要因素。本文作者从这三个因素分析了微软中国开发团队是如何“从优秀到卓越”的。

利用Ruby简化你的Java测试

本文是Productive Java with Ruby系列文章的第一篇,我将从单元测试这个话题开始,让Java的开发人员能够在实际工作中利用Ruby提高工作效率。

与赵进聊SaaS

InfoQ中文站有幸与阿里软件的首席架构师赵进在一起探讨了SaaS的相关话题,包括SOA和ASP与SaaS的异同、云计算、SaaS的前景、它的关键技术、技术瓶颈等等。

在ESB中选择路由还是编配?

在这篇文章中,Adrien Louis和Marc Dutoo在一个典型的ESB场景中讨论了编配和路由的区别和优缺点。他们讨论了几种连接服务的方法,从使用如自定义路由这样的低级别方法,到使用如工作流和编配这样面向业务的高级别方式,并总结说不存在“一边倒”的解决方案。

分布式系统中的一致性和可用性

本文是根据7月26日InfoQ中文站在杭州举行的QClub活动(第三期)后半程小组讨论总结而成。主要内容包括如何在SOA系统中实现服务编排,如何保证分布式系统中的一致性和可用性,以及如何在实施SOA的过程中控制接口的粒度等。

虚拟化导论

人们很容易想当然的以为虚拟化技术仅仅应用于服务器。而在现实中,虚拟化这一苏醒的概念正被运用于各个层面,其中包括网络,存储以及应用基础架构。在这篇导论中,InfoQ将深入每个方面,详尽向您描述虚拟化技术的运用以及其优点与不足。

用户故事估算技巧

作为开发者,同时也是ThoughtWorks的咨询师,Jay Fields总结了自己估算用户故事的有效技巧。

InfoQ案例研究:纳斯达克市场回放

在这篇案例研究中,InfoQ对Adobe AIR和Amazon的简单存储服务(Simple Storage Service ,S3)在NASDAQ市场回放程序(NASDAQ Market Replay)中的应用进行了详细的分析。