- 浏览: 87547 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
angjunwen:
redirect_to 是重新提交一个请求到控制器方法,所以原 ...
render与redirect_to的区别 -
lin_style:
redirect_to 应该是重新提交了一个请求,不理会当前的 ...
render与redirect_to的区别 -
bugx:
这样不是变得密码可以为空了吗
如何在update一条记录的部分字段时跳过某些校验 -
evil850209:
不错,最近正为这个发愁呢!
render与redirect_to的区别 -
wiisola:
theone 写道wiisola 写道theone 写道upd ...
如何在update一条记录的部分字段时跳过某些校验
转自:http://vipnews.csdn.net/newscontent.aspx?pointid=2008_03_03_170600555
文/杨祥吉
本文作者以使用Ruby和Rails进行创业为经验背景,结合具体的项目,尝试以客观公正的方式来评价Ruby、Rails和Agile。下面的文字,我们将以名词解释和实践的方式看看这些词汇带来的价值:
Agile
敏捷开发是一个高频度的热词。 实施敏捷开发的好处很多, 技术公司都在研究。NibiruTech从诞生便是一只遵循敏捷方法论的团队。 目前我们采用的敏捷技术,请看后面的名词解释。
测试先行
所有的项目,都是以TDD的方式开发,要求先编写测试代码,然后再编写功能代码,使得这个测试被通过。新程序员入职最先接触到的就是TDD的 知识和各种培训。我们大量采用了Autotest这种工具,使得测试代码在开发过程中持续运行。甚至为了更方便查看,每个成员都配备了第二个显示器,其主 要用途就是为了显示测试运行结果。
结对开发
结对开发已经成为我们的主要培养新人的方法。结对编程是指两人共用一台电脑,一路讨论编码。结对编程是一种乐趣,使得双人任何一人会感受到巨 大的乐趣。结对编程是共同分享技术挑战和难题,共同享受编码的乐趣。这会显著降低程序员的工作枯燥程度,提高技术水平。结对已经成为我们主要的培训方式。
短周期迭代
敏捷开发中讲究短周期的迭代,尽量缩短项目Release的时间。NibiruTech做到每天自动部署到测试服务器上,方便远程的客户直接在互联网上查看当天的产品进度,并及时提交反馈。
每日晨会
每日晨会上,大家回答“昨天做了什么工作?”、“今天计划做什么工作”。早上项目组的人到齐后,第一件事就是站成一个圆圈,依次讨论昨天的工 作和今天的计划。期间也有很多关于项目的整体需求,技术难点的讨论。由于大家都是站立开会,会议鼓励简短,高效的发言,显著提高了项目组的内部沟通和信 任,每日晨会的帮助很大。
从我们的实践经验来看,执行力无疑是实施过程中很重要的因素。任何流程的形成都需要很大的决心和长期的努力。我们的经验是,一项一项地进行实 施。实施过程中不断进行调整和反省,当TDD成为一种习惯后,便开始晨会,几个星期后,晨会也成为团队习惯了,就能进行下一步。需要团队中有人强力地坚持 推行敏捷思路,而且要慢慢推进,一项一项地推进。
Ruby
Ruby是一种有趣的语言。Ruby语言的创始人Matt从小就对计算机语言有天生的兴趣,强烈到无法自己。他前后编写了10种语言,没有任何一种release过,全部失败,直到第11种语言,被称为Ruby。
Ruby是一种解释型的方便快捷的面向对象脚本语言,它是日本的Yukihiro Matsumoto(人们都叫他Matz)于1993年2月24日首次发布的。
Ruby精心地设计了它的面向对象特性,使之完整并且开放允许改进。比如:Ruby有在运行时可以向类里,甚至能够向实例里添加方法的能力。所以,如果有需要,某个类的一个实例可以表现得和同一个类的其他实例不一样。
Ruby是一种完整的纯面向对象语言(OOL)。这就是说所有的数据在Ruby里面都是对象,不是像Python或Perl那样,而是像Smalltalk那样的纯面向对象(没有什么例外)。比如:在Ruby里面,数字1是类Fixnum的一个实例。
Ruby精心地设计了它的面向对象特性,使之完整并且开放允许改进。比如:Ruby有在运行时可以向类里,甚至能够向实例里添加方法的能力。所以,如果有需要,某个类的一个实例可以表现得和同一个类的其他实例不一样。
假如你希望Procduct类的find方法在参数为1 的时候,直接返回某个事先设定的对象。借助Mocha这个Ruby gem,你可以用近乎人类自然语言的方式说:
这就是Ruby 强大而又灵活的地方。
Ruby一个思想是,语言应该尽量给编程者最大的自由度,当然需要程序员明白自己在做什么的情况下。
声明了为Private的方法,在其他语言中是不能被其他类中调用。而在Ruby中,假如你确信你需要这样做,你可以:
因为Ruby认为一旦程序员知道自己想做什么,就应该让他去做,即使违反了常规。
从来没有见到过任何一门语言可以如此轻松的对已有的核心API进行修改和增强。
例如Rails的作者在写Rails的时候,就对Ruby的Hash需要进行增强。
而后只需要:
便成功地为Hash这个类添加了revers_merge这个方法。
上述例子,只是Ruby语言强大灵活的一些简单例子。可以说,正是因为Ruby语言,才使得Rails成为现实。很难想象其他任何一门语言能够让一个独立的程序员完成一个如此出色的Web框架。Rails使用的越多,越是感受到Ruby和Rails同样出色。
Rails
作为computer world评选出的2007年最值得研究技术,Ruby On Rails从一出生就是媒体的宠儿。这一切源自其独特的思维,抛弃原有技术落后遗产,轻装上阵的便捷。
许多人都看过下面这幅图片,图片的左边是使用Java Web框架,所需要用到的技术书籍。右边是使用Ruby on Rails,需要用到的技术书籍,只有两本,简洁清新,优雅愉快。作为一个使用Ruby On Rails的先行者,我想指出上面的图只是从技术复杂程度上进行了对比。事实上,Java作为重型武器,有许多轻型武器暂时无法取代的地位。只是从技术的 复杂度讲,Ror确实简单优雅许多。
DRY 原则
这些设计规则中的一个就是来自于Dave Thomas的Pragmatic Programmer一书中的“DRY重用原则(Don"t Repeat Yourself)”DRY原则意味着创建到应用程序中的信息和逻辑应该被局部化或隔离。它应该尽可能少的存储在更少地方,副本应该保持在绝对最低限度。 这种原则有助于组织开发者的思路和保持好的开发速度,而且使得的代码可以被更轻松修改。这种更轻松的修改所带来的好处不仅仅体现着维护模式中,在最初的开 发中同样也会体现出来。Ruby通过使编程更轻松,而鼓励这种行为。
convention over configuration
Rails强调convention over configura-tion。这意味着这个框架的用户不用去做太多的设置工作,或者不用花费太多的时间来处理一些个别的组件。举个例子来说,Rails 假定在代码中的类名称和数据库中的表名称之间存在关联。如果你坚持这个标准约定,你代码将显得更具有逻辑性和更平稳;否则,你将不得不做一些额外的工作。 当默认约定与你的实际情况发生冲突时,感谢Ruby难以置信的灵活性和宽容,你可以轻易改变任何Rails的行为,使得其完全按照你的思维运行。
Ruby on Rails这样的技术的出现,使得实现一个独特的互联网创意的代价急剧降低,从而加剧了创业的门槛,使得任何领域内充满了大量的创业者。竞争的加剧使得创新不断涌现,互联网急剧的改变着整个人类社会的发展。
最近数年中,Facebook、Myspace、youtube等网站的创新,及其大量的追随者,极大的方便了人们的生活,工作和学习。可以说,任何受过良好教育的人,已经无法离开互联网了。网络游戏、网络媒体、电子商务、软件外包,因为互联网才得以出现。
互联网时代,使得个人成为英雄的机会大大增加。DHH,作为一名26岁的丹麦年轻程序员,不满意大公司傲慢的web框架,从自己的工作项目中,抽取了一个实用小巧的framework,这个小小的开源项目,成就了2005年技术领域的创新,DHH一个人改变了世界。
Ruby on Rails在2004年发布了它的第一个公众版。现在它已经不是一个蹒跚学步的孩子。在2005年,David Heinemeier Hansson因为这个软件程序获得了“年度最佳黑客”奖项。在2006年,Rails赢得了2006年度Jolt大奖的最佳Web开发工具,2007年 Rails被评选为年度最值得研究技术。
当前人们对Ruby这门编程语言吵得不可开交了,尤其是对Rails这个Web应用开发框架更是吵得一塌糊涂。有人说它是编程的未来,前途光明;有人说它是旁门左道,危险暗淡。
我是在1年前开始用Ruby来创作http://www.englishquad.com,边学边用的过程充满了艰辛。当技术转型完成后,一切变得如此美好,以至于一直想更好地使用RoR为更多的企业服务。
通过和更多的使用RoR企业交流,已经可以根据好几个项目的经验做分析了,到目前为之,分析结果力挺Ruby。每次我问使用过RoR的人: “你觉得用Ruby比用Java或C#生产力有显著提高吗?”我听到的无一例外都是一句有力的肯定:“是的!”这已足够让我开始断言:如果你的项目合适, 就应该给Ruby个机会。
也有观点认为,尽管Ruby和Rails是出众的平台,但可能无法成为主流。完全理解这个观点,优秀高产的平台可能成不了当前主流企业应用的首选。如果对你而言,重要的是只采用主流平台,那么你还得静观其变。不过,不囿于主流而获成功的案例也非常多。
还有许多项目,开发的生产率并不是首要的,取而代之的是政治及其他沟通上的因素。那样的话,RoR的优势就被大大削减了。
总的来说,通过数年的RoR创业和对其他伙伴的关注,我对在注重速度、响应性以及生产力的严肃工作中使用RoR持越来越肯定的态度,并愿意将我们的经验分享出来。
源自真实应用
Rails来源于真实世界中的应用程序。Rails并不是最初的目标产物,当时是为了开发一个叫做Basecamp的Web应用程序。在 DHH和其他人开发这个应用程序的时候,他们多次发现,Web开发是一件令人痛苦的事情,而且耗时、具有反复性和注重细节。这给了Ruby on Rails一个诞生的机会。
在编写这个高度浓缩的Ruby编码的过程中,DHH开始从界面的本质进行提炼,于是就诞生了Ruby on Rails。因此说它源于真实世界的需求,源于使用中的代码,源于开发者的每日体验。这与其他技术框架的学术和研究气质非常不同。
这正是RoR社区中的一个特点。在RoR社区中,很难看到“学术”性质的东西,也很难看到所谓的“流派”,只有非常真实代码和思想。 Rails技术领域的最高技术会议RailsConf,也鼓励展示领域内的项目创新。没有大公司的搅局,纯粹程序员的文化氛围,一切都显得简单到极致。
Ruby 和Rails的关系
在世界范围内,Rails以不可抵挡之势席卷Web开发领域,带来了全新的开发理念和难以置信的开发效率。 对于一些初学者而言,也许不能理解Ruby On Rails其实是指一个Web框架,这个Web框架是用Ruby这种语言来开发的。
Ruby是目前各种主流语言中最优美,最简练的一种语言。正是因为DHH选择了Ruby作为Rails的语言,使得Rails这套框架轻便而 又强大无比。Ruby语言的动态特性,通过Rails这个成功的项目,得到了主流开发社区的认同。在笔者自己的开发项目中,越来越多的项目证明,正是因为 Ruby使得Rails成为可能。Ruby社区中的许多理念,走在了软件开发的前沿。
所以,Ruby成就了Rails,Rails让Ruby成为明星。它们都是非常出色的技术,我们热爱这两种技术。
Ruby 和Rails的一些应用
笔者创办NibiruTech前,曾是www.englishquad.com 创始团队之一。参与将一个在线语言学习平台的想法,通过学习和使用Rails,变为实在的产品,并进入运营阶段。国内的新锐Web 2.0网站财帮子,http://www.caibangzi.com,从今年4月开始上线,短短几个月时间,就能在高峰时期达到每小时数十万的PV。在与财帮子创始人交流之中,大家都同意如果不是选择Ruby On Rails这项技术,开发成本将成倍增加,而开发周期还将显著增长。其他典型的RoR站点包括:
JavaEye http://www.iteye.com
iease我易 http://search.iease.com.cn
51dir http://www.51dir.com
发生网 http://www.8sheng.com
友播网 http://www.yobo.com
乐道 http://www.likenote.com
著名的国外Twitter就是用Ruby On Rails开发的:http://www.twitter.com。
最近势头很盛,与Youbute一争高下的hulu.com,也盛传是Ruby on Rails的杰作:http://www.hulu.com。
Ruby和Rails的企业级应用真实案例
目前Rails在Web 2.0中的应用获得足够的眼球,最新的创业,不少都基于Rails技术框架,然而事实上,在Web 2.0之外,Rails仍然大有希望在企业级应用,甚至金融领域大有作为。在Rails以前,很多技术的特点是“用复杂的技术来解决复杂的问题”,以复杂 性对抗复杂性,人的感受成为一种痛苦。Rails提倡简化开发流程,引入多种思想,成功地将开发变成一种乐趣,并为企业带来实实在在的价值。
E公司是北美一家小型金融服务公司。过去,大量使用的技术为微软技术。当E公司在.NET架构上越陷越深的时候,发现很多东西过度依赖微软的 技术框架,成本代价非常大,而且由于测试技术的不全面,使得维护成本很高。企业存在时间超过10年,多数核心业务组件是用微软的技术。但随着业务的发展, 微软技术平台上的诸多问题逐渐暴露。首先是高昂的许可费用,缓慢的技术服务,以及商业技术平台特有的不开放特性,使得业务系统革新面临巨大挑战客户决定使 用最便于测试的语言,Ruby来进行核心业务的重写。
Ruby天生对TDD理念的支持,使得任何Ruby项目都能非常好的进行TDD测试和开发。结合Ruby令人称奇的高级语言特性,使得技术转 型进展非常顺利,成为全世界少有的使用Ruby和Rails来取代旧技术,并在金融领域成功运作的案例。这充分证明了Ruby和Rails在企业级应用市 场上的潜力。
从2006年Rails崛起之时,公司决定尝试使用Ruby和Rails来改进已有系统。经过两年的努力,公司已经将外围项目升级到了 Ruby和Rails技术平台,技术人员也成功实现了技术转型。在新的Ruby 和Rails平台上,得益于新技术,开发人员的工作效率,代码的质量同以前相比,有巨大提升。更不用提任何使用Ruby 和Rails的程序员,生活质量都明显提高了。
在尝到甜头后,E公司坚定了技术转型的决心。然而,在北美,懂得Ruby On Rails的技术人才稀缺。通过与NibiruTech合作,E公司成功地解决了开发人员稀缺的问题,在双方共同努力下,开始对核心业务进行升级。E公司 信用卡业务,去年的交易额是40亿美元,交易系统是由多种技术混合而成的技术平台。其中一个用Delphi完成的基础组建,使用了10年,代码已经十分陈 旧,几乎没有任何测试代码覆盖,任何改动都充满风险。通过与NibiruTech合作,我们成功地将这个组件用Ruby重写,代码量减小到原有的10%, 并且包含重度的测试覆盖,为核心业务的升级做好了准备。这个案例充分说明了Ruby这种语言强大之处,为企业带来的不仅仅是成本的节约,更是技术架构换代 升级后的各种好处,使得企业在技术方面充满竞争力。
RoR开发,不仅是快速高效,更重要的是优雅简洁,与任何其他的技术相比,这个方面的优势可谓巨大。IT巨头们也没有忽视RoR的崛起。 Sun是现在RoR的主要支持者之一,Netbeans默认支持RoR的开发。整个J2EE社区渴望将Ruby和Rails嫁接在一起,让RoR可以继承 Java的巨大遗产,而Java则可方便使用Ruby和Rails的各种创新,为整个企业界的开发带来了一股新鲜的风气。
文化对Ruby 和Rails的影响
任何一个出色的群体,都会在某些方面有个性的特征,被称作文化。Ruby On Rails这个群体,目前尽管得到了广泛的关注,炙手可热,但仍然属于小众。这个群体的创造力是非常强的。这个群体的开源氛围也很好。
Mac文化,笔者从来没有见过任何一个计算机群体拥有如此高的创造力和文化魅力。可以说,Mac世界的人对Apple文化就是一种宗教般的狂 热。笔者使用PC时间长达10年,今年转变为Mac用户后,终于体会到了Mac的华丽和易用性。笔者问身边许多使用Mac的朋友,下一台电脑,你会选择 PC,还是Mac?100%的回答是会继续选择Mac。简短几个月,笔者在Mac下面进行工作、学习的经验,已经让我很难在回到Windows了(必要的 时候会使用Windows虚拟机)。
看看主流的Rails社区,清一色的Mac用户。Mac的很多文化,在Rails诞生之日,变顺利集成下来。Mac和Rails都优雅,简 单,与众不同,在各自的领域中,都是最具有艺术气息的产品和技术。使用这些产品和技术,使得工作也变得简单和优雅起来,让程序员觉得自己不仅仅是工程师, 也是艺术家。
Ruby On Rails的常用武器
测试工具
我们实际工作中, 严重依赖以下测试工具:
● Autotest:开始编码了? 第一件事是打开Autotest,结束编码了,最后一件事是关闭Autotest。编码的过程中, 应该一直让autotest开着,它会一直检测你的代码改动,自动持续运行测试,是最好的TDD工具。
● Rspec : 抛弃Rails原有的测试框架吧,这个更优秀。
● Mocha: 可以让你轻易实现Mock功能,非常好用,语法如英文般自然。
● Selenium: 项目稳定后,可以用来做交付测试,自动启动浏览器,完全模拟人的鼠标键盘点击,进行测试。
● Cruise Control:持续集成,在源代码服务器端验证运行测试代码,确保不会出现“it works for me”,文件漏提交,以及开发环境不同带来的bug等问题。
学习和使用RoR,却不用TDD方式,实在是非常大的损失。以我自己的经验来看,国内遵循TDD方式开发的团队,是非常稀少的,原因是TDD 的学习需要对已有的软件开发思维进行巨大的调整。过去是写好了代码后,为了应付检查,匆忙补上测试代码。如果项目紧张的话,领导也会体谅没有时间写测试代 码。而遵循TDD之后,是任何时候都在编写重构测试代码,并且是先写好测试代码,然后在去实现这个测试,其中的乐趣巨大,当项目进入中期后,面对几千行代 码,几百个测试用例是最有信心的保障。
许多非TDD信徒怀疑,采用TDD后,工作量成倍增加,从而导致开发速度降低。事实上, 在我们的实际工作中,由于采用了RoR,以及其他的非常棒的测试框架和技术,使得我们的测试成为工作最有力的保障,使得我们开发的速度急剧提高,大部分情 况下,我们从事Web开发,却不开启浏览器,当所有的测试用例都通过的时候,我们是非常有信心保证,所有的页面都是正确可用的。DHH在演讲中声称,在 ROR框架中,不写测试的人应该受到惩罚。以笔者自己学习和工作经验来看,走向TDD是技术生涯中最大,也是最有乐趣的一次转变。整个 NibiruTech的人都有这样的体会,没有测试代码,我们不知道如何写程序。
操作系统
操作系统的问题上,Rails社区有强烈的Mac感情倾向。无疑Rails、Ruby和Mac是天生的搭档,使用这三者会使得工作充满乐趣。 作为一名专业的计算机工程师,使用Unix系统总是一种回家的感觉。Mac同属Unix分支,系统安全性非常出色,加上苹果公司公认的艺术般的UI设计, 使得Mac成为专业工程师最有力的操作系统之一。
笔者从Windows过渡到Mac的过程也并非一帆风顺。最初的两个星期,对于Mac完全是陌生,过去使用Windows严重依赖快捷键, Mac的键盘布局与Windows不同(后来认为更合理),导致工作效率很低。由于各种Windows常见的软件不容易找到,于是就安装了虚拟机的 Windows版本。逐渐熟悉了Mac的各种系统界面后,现在对Mac非常习惯,已经融入到了Mac世界中。对我而言,Mac有3点好处:
1、血统纯正的Unix系统
2、非常安全,非常稳定,完全不用担心备份操作系统,不担心木马病毒
3、华丽的界面,使用艺术品一样的享受
以上三点,是Windows无法提供。当然,Windows作为统治者,有很多软件方面的广泛支持,难免需要用到的时候。这种情况下,请出虚拟机,启动Windows,完成必要的工作,然后离开。
从事Ruby On Rails开发,Mac无疑是最佳选择。如果无法使用Mac,那么Ubuntu也比Windows要好一些。作为专业计算机工程师,一直使用Linux, 软件都手动编译,将会成为提高对计算机理解的一条捷径。Google公司最新的Andriod系统,证实了对Linux的投资,迟早会让使用者站着一个更 好的新技术位置。
禁止使用Windows已经成为NibiruTech的公司核心文化。每一个成员,都需要在Unix/Linux系统下,完成工作任务。再也 不用担心烦人的病毒和间谍软件,Window上太多分散人注意力的地方,使用Linux后,公司员工的生产效率一点也不比Windows低,而且避免了各 种法律问题。
按照优先级向技术团队推荐OS :
● Mac OS X
● Linux/Ubuntu
● Windows
IDE
在NibiruTech内部,我们鼓励使用不同的IDE来开发程序。
IDE这个问题上,纯粹的优劣之争已经没有太大价值。任何一个主流的IDE都经过大量用户的检验,功能设计上都已经比较成熟,效率也都很高。 由于NibiruTech是一个重度TDD团队,出现需要调试的机会非常少。Ruby又是一种动态语言,IDE能做的事情不是太多。所以选择IDE重要的 是看你是否已经熟悉其中的某种,快捷键直接影响了编码的效率。
● TextMate
● Eclipse(RadRails)
● Netbeans
● Emacs
任何让你得心应手的IDE就是你最好的IDE。
Ruby和Rails学习建议
Ruby On Rails同主流的技术相比,文档方面稍微欠缺一些,官方的支持少一点。Agile Web这本书是这个领域的Bibile,每个开发人员都应该仔细看看。Ruby语言与其他主流语言还是有比较大的不同,建议多看看screencast和开源项目。
给初学者的建议是最简单的平台:
● 使用windows + instantrails + radrails;
● 先把Agile书•¬一遍;
● 动手将Depot做一遍;
● 把Railscast和peepcode看一遍,能懂多少算多少;
● 可以动手完成一个实际的项目;
● 放弃Windows,做一个真正的Hacker,迁移到Mac或ubuntu;
● 重新配置Ruby和Rails环境,如果没有unix的经验,会非常受挫折,做好准备。
学习Ruby On Rails,可以在中小项目里直接应用Rails从而获得高速的开发速度,也能借鉴RoR社区中的许多前沿设计理念,帮助改善Java项目的架构。
Rails的入门有个特点,通过观看官方视频,花上15分钟写一行代码,就能实现第一个完整的CRUD系统。而别的技术派别,学习代价非常巨 大。当然RoR入门的第一个难点是配置环境。如果在Windows下,下载一个InstantRails、看看说明,就可以零配置完成第一个 HelloWorld。
给企业的建议:
● 听说过使用Ruby 和Rails而后悔的企业吗;
● Ruby和Rails在技术上拥有明显的快速开发的优势;
● 能带来的好处不仅仅是成本下降,更重要的是产品质量的显著提升;
● 开发难度显著降低,企业反馈速度明显加快,业务得到更大的支持;
● 避免招聘一个Rails高手来带领企业技术转型。要从已有的技术队伍中培养人,摸索锻炼出学习型的人才。Rails以简单优雅征服世界,学习成本明显低于其他技术;
● 寻找专业的Ruby 服务公司,将本企业18个月的学期缩短为6个月。
结束语
本文是写给程序员杂志,为SD 2.0大会写的文章之一。我们所创办的NibiruTech公司,遵循简洁的技术路线,将程序当作艺术,将程序员当作艺术家,为了这样的理念,我们愉快地工作在一起。
“上帝赐予我一份Rails程序员的工作吧!”
“用Rails来工作,就像是在玩RPG游戏一样有趣,欲罢不能”
Ruby 和Rails是我见过最为优雅,最为高贵的语言和框架。当然,没有任何东西可以满足所有人的热爱。 只是在Ruby 和Rails领域,我所见到过真正研究过Ruby和Rails的程序员,都不能自已地爱上了这种技术,在NibiruTech中有一半的人是爱好的程度让 其不得不放弃已有工作职位,寻求一份Ruby On Rails的技术职位。应用Ruby和Rails、遵循Agile和TDD,使得程序开发的职位,犹如世界上最幸福的工作一般,在NibiruTech工 作的人,都有强烈的“征服技术”的感觉。
对于真正的程序员,如果你想与众不同,不妨尝试一下Ruby On Rails,每天工作之余,花时间想想,如果用RoR来做,会不会不同?
对于企业决策者,如果犹豫不决是否该尝试RoR,那么建议你给自己一次犯错的机会。彷徨犹豫不会让答案更加清晰,只会延误时机,增加选择中的焦虑。采取行动,让自己犯错,才是得到最佳答案的途径。
文/杨祥吉
本文作者以使用Ruby和Rails进行创业为经验背景,结合具体的项目,尝试以客观公正的方式来评价Ruby、Rails和Agile。下面的文字,我们将以名词解释和实践的方式看看这些词汇带来的价值:
Agile
敏捷开发是一个高频度的热词。 实施敏捷开发的好处很多, 技术公司都在研究。NibiruTech从诞生便是一只遵循敏捷方法论的团队。 目前我们采用的敏捷技术,请看后面的名词解释。
测试先行
所有的项目,都是以TDD的方式开发,要求先编写测试代码,然后再编写功能代码,使得这个测试被通过。新程序员入职最先接触到的就是TDD的 知识和各种培训。我们大量采用了Autotest这种工具,使得测试代码在开发过程中持续运行。甚至为了更方便查看,每个成员都配备了第二个显示器,其主 要用途就是为了显示测试运行结果。
结对开发
结对开发已经成为我们的主要培养新人的方法。结对编程是指两人共用一台电脑,一路讨论编码。结对编程是一种乐趣,使得双人任何一人会感受到巨 大的乐趣。结对编程是共同分享技术挑战和难题,共同享受编码的乐趣。这会显著降低程序员的工作枯燥程度,提高技术水平。结对已经成为我们主要的培训方式。
短周期迭代
敏捷开发中讲究短周期的迭代,尽量缩短项目Release的时间。NibiruTech做到每天自动部署到测试服务器上,方便远程的客户直接在互联网上查看当天的产品进度,并及时提交反馈。
每日晨会
每日晨会上,大家回答“昨天做了什么工作?”、“今天计划做什么工作”。早上项目组的人到齐后,第一件事就是站成一个圆圈,依次讨论昨天的工 作和今天的计划。期间也有很多关于项目的整体需求,技术难点的讨论。由于大家都是站立开会,会议鼓励简短,高效的发言,显著提高了项目组的内部沟通和信 任,每日晨会的帮助很大。
从我们的实践经验来看,执行力无疑是实施过程中很重要的因素。任何流程的形成都需要很大的决心和长期的努力。我们的经验是,一项一项地进行实 施。实施过程中不断进行调整和反省,当TDD成为一种习惯后,便开始晨会,几个星期后,晨会也成为团队习惯了,就能进行下一步。需要团队中有人强力地坚持 推行敏捷思路,而且要慢慢推进,一项一项地推进。
Ruby
Ruby是一种有趣的语言。Ruby语言的创始人Matt从小就对计算机语言有天生的兴趣,强烈到无法自己。他前后编写了10种语言,没有任何一种release过,全部失败,直到第11种语言,被称为Ruby。
Ruby是一种解释型的方便快捷的面向对象脚本语言,它是日本的Yukihiro Matsumoto(人们都叫他Matz)于1993年2月24日首次发布的。
Ruby精心地设计了它的面向对象特性,使之完整并且开放允许改进。比如:Ruby有在运行时可以向类里,甚至能够向实例里添加方法的能力。所以,如果有需要,某个类的一个实例可以表现得和同一个类的其他实例不一样。
Ruby是一种完整的纯面向对象语言(OOL)。这就是说所有的数据在Ruby里面都是对象,不是像Python或Perl那样,而是像Smalltalk那样的纯面向对象(没有什么例外)。比如:在Ruby里面,数字1是类Fixnum的一个实例。
Ruby精心地设计了它的面向对象特性,使之完整并且开放允许改进。比如:Ruby有在运行时可以向类里,甚至能够向实例里添加方法的能力。所以,如果有需要,某个类的一个实例可以表现得和同一个类的其他实例不一样。
假如你希望Procduct类的find方法在参数为1 的时候,直接返回某个事先设定的对象。借助Mocha这个Ruby gem,你可以用近乎人类自然语言的方式说:
product = Product.new Product.expects(:find).with(1).returns(product)
这就是Ruby 强大而又灵活的地方。
Ruby一个思想是,语言应该尽量给编程者最大的自由度,当然需要程序员明白自己在做什么的情况下。
Class A Private Def private_method #…. end end
声明了为Private的方法,在其他语言中是不能被其他类中调用。而在Ruby中,假如你确信你需要这样做,你可以:
a = A.new a.send(“private_method”)
因为Ruby认为一旦程序员知道自己想做什么,就应该让他去做,即使违反了常规。
从来没有见到过任何一门语言可以如此轻松的对已有的核心API进行修改和增强。
例如Rails的作者在写Rails的时候,就对Ruby的Hash需要进行增强。
module ActiveSupport module CoreExtensions module Hash module ReverseMerge def reverse_merge(other_hash) other_hash.merge(self) end end end end end
而后只需要:
class Hash #:nodoc: include ActiveSupport::CoreExtensions::Hash::ReverseMerge end
便成功地为Hash这个类添加了revers_merge这个方法。
上述例子,只是Ruby语言强大灵活的一些简单例子。可以说,正是因为Ruby语言,才使得Rails成为现实。很难想象其他任何一门语言能够让一个独立的程序员完成一个如此出色的Web框架。Rails使用的越多,越是感受到Ruby和Rails同样出色。
Rails
作为computer world评选出的2007年最值得研究技术,Ruby On Rails从一出生就是媒体的宠儿。这一切源自其独特的思维,抛弃原有技术落后遗产,轻装上阵的便捷。
许多人都看过下面这幅图片,图片的左边是使用Java Web框架,所需要用到的技术书籍。右边是使用Ruby on Rails,需要用到的技术书籍,只有两本,简洁清新,优雅愉快。作为一个使用Ruby On Rails的先行者,我想指出上面的图只是从技术复杂程度上进行了对比。事实上,Java作为重型武器,有许多轻型武器暂时无法取代的地位。只是从技术的 复杂度讲,Ror确实简单优雅许多。
DRY 原则
这些设计规则中的一个就是来自于Dave Thomas的Pragmatic Programmer一书中的“DRY重用原则(Don"t Repeat Yourself)”DRY原则意味着创建到应用程序中的信息和逻辑应该被局部化或隔离。它应该尽可能少的存储在更少地方,副本应该保持在绝对最低限度。 这种原则有助于组织开发者的思路和保持好的开发速度,而且使得的代码可以被更轻松修改。这种更轻松的修改所带来的好处不仅仅体现着维护模式中,在最初的开 发中同样也会体现出来。Ruby通过使编程更轻松,而鼓励这种行为。
convention over configuration
Rails强调convention over configura-tion。这意味着这个框架的用户不用去做太多的设置工作,或者不用花费太多的时间来处理一些个别的组件。举个例子来说,Rails 假定在代码中的类名称和数据库中的表名称之间存在关联。如果你坚持这个标准约定,你代码将显得更具有逻辑性和更平稳;否则,你将不得不做一些额外的工作。 当默认约定与你的实际情况发生冲突时,感谢Ruby难以置信的灵活性和宽容,你可以轻易改变任何Rails的行为,使得其完全按照你的思维运行。
Ruby on Rails这样的技术的出现,使得实现一个独特的互联网创意的代价急剧降低,从而加剧了创业的门槛,使得任何领域内充满了大量的创业者。竞争的加剧使得创新不断涌现,互联网急剧的改变着整个人类社会的发展。
最近数年中,Facebook、Myspace、youtube等网站的创新,及其大量的追随者,极大的方便了人们的生活,工作和学习。可以说,任何受过良好教育的人,已经无法离开互联网了。网络游戏、网络媒体、电子商务、软件外包,因为互联网才得以出现。
互联网时代,使得个人成为英雄的机会大大增加。DHH,作为一名26岁的丹麦年轻程序员,不满意大公司傲慢的web框架,从自己的工作项目中,抽取了一个实用小巧的framework,这个小小的开源项目,成就了2005年技术领域的创新,DHH一个人改变了世界。
Ruby on Rails在2004年发布了它的第一个公众版。现在它已经不是一个蹒跚学步的孩子。在2005年,David Heinemeier Hansson因为这个软件程序获得了“年度最佳黑客”奖项。在2006年,Rails赢得了2006年度Jolt大奖的最佳Web开发工具,2007年 Rails被评选为年度最值得研究技术。
当前人们对Ruby这门编程语言吵得不可开交了,尤其是对Rails这个Web应用开发框架更是吵得一塌糊涂。有人说它是编程的未来,前途光明;有人说它是旁门左道,危险暗淡。
我是在1年前开始用Ruby来创作http://www.englishquad.com,边学边用的过程充满了艰辛。当技术转型完成后,一切变得如此美好,以至于一直想更好地使用RoR为更多的企业服务。
通过和更多的使用RoR企业交流,已经可以根据好几个项目的经验做分析了,到目前为之,分析结果力挺Ruby。每次我问使用过RoR的人: “你觉得用Ruby比用Java或C#生产力有显著提高吗?”我听到的无一例外都是一句有力的肯定:“是的!”这已足够让我开始断言:如果你的项目合适, 就应该给Ruby个机会。
也有观点认为,尽管Ruby和Rails是出众的平台,但可能无法成为主流。完全理解这个观点,优秀高产的平台可能成不了当前主流企业应用的首选。如果对你而言,重要的是只采用主流平台,那么你还得静观其变。不过,不囿于主流而获成功的案例也非常多。
还有许多项目,开发的生产率并不是首要的,取而代之的是政治及其他沟通上的因素。那样的话,RoR的优势就被大大削减了。
总的来说,通过数年的RoR创业和对其他伙伴的关注,我对在注重速度、响应性以及生产力的严肃工作中使用RoR持越来越肯定的态度,并愿意将我们的经验分享出来。
源自真实应用
Rails来源于真实世界中的应用程序。Rails并不是最初的目标产物,当时是为了开发一个叫做Basecamp的Web应用程序。在 DHH和其他人开发这个应用程序的时候,他们多次发现,Web开发是一件令人痛苦的事情,而且耗时、具有反复性和注重细节。这给了Ruby on Rails一个诞生的机会。
在编写这个高度浓缩的Ruby编码的过程中,DHH开始从界面的本质进行提炼,于是就诞生了Ruby on Rails。因此说它源于真实世界的需求,源于使用中的代码,源于开发者的每日体验。这与其他技术框架的学术和研究气质非常不同。
这正是RoR社区中的一个特点。在RoR社区中,很难看到“学术”性质的东西,也很难看到所谓的“流派”,只有非常真实代码和思想。 Rails技术领域的最高技术会议RailsConf,也鼓励展示领域内的项目创新。没有大公司的搅局,纯粹程序员的文化氛围,一切都显得简单到极致。
Ruby 和Rails的关系
在世界范围内,Rails以不可抵挡之势席卷Web开发领域,带来了全新的开发理念和难以置信的开发效率。 对于一些初学者而言,也许不能理解Ruby On Rails其实是指一个Web框架,这个Web框架是用Ruby这种语言来开发的。
Ruby是目前各种主流语言中最优美,最简练的一种语言。正是因为DHH选择了Ruby作为Rails的语言,使得Rails这套框架轻便而 又强大无比。Ruby语言的动态特性,通过Rails这个成功的项目,得到了主流开发社区的认同。在笔者自己的开发项目中,越来越多的项目证明,正是因为 Ruby使得Rails成为可能。Ruby社区中的许多理念,走在了软件开发的前沿。
所以,Ruby成就了Rails,Rails让Ruby成为明星。它们都是非常出色的技术,我们热爱这两种技术。
Ruby 和Rails的一些应用
笔者创办NibiruTech前,曾是www.englishquad.com 创始团队之一。参与将一个在线语言学习平台的想法,通过学习和使用Rails,变为实在的产品,并进入运营阶段。国内的新锐Web 2.0网站财帮子,http://www.caibangzi.com,从今年4月开始上线,短短几个月时间,就能在高峰时期达到每小时数十万的PV。在与财帮子创始人交流之中,大家都同意如果不是选择Ruby On Rails这项技术,开发成本将成倍增加,而开发周期还将显著增长。其他典型的RoR站点包括:
JavaEye http://www.iteye.com
iease我易 http://search.iease.com.cn
51dir http://www.51dir.com
发生网 http://www.8sheng.com
友播网 http://www.yobo.com
乐道 http://www.likenote.com
著名的国外Twitter就是用Ruby On Rails开发的:http://www.twitter.com。
最近势头很盛,与Youbute一争高下的hulu.com,也盛传是Ruby on Rails的杰作:http://www.hulu.com。
Ruby和Rails的企业级应用真实案例
目前Rails在Web 2.0中的应用获得足够的眼球,最新的创业,不少都基于Rails技术框架,然而事实上,在Web 2.0之外,Rails仍然大有希望在企业级应用,甚至金融领域大有作为。在Rails以前,很多技术的特点是“用复杂的技术来解决复杂的问题”,以复杂 性对抗复杂性,人的感受成为一种痛苦。Rails提倡简化开发流程,引入多种思想,成功地将开发变成一种乐趣,并为企业带来实实在在的价值。
E公司是北美一家小型金融服务公司。过去,大量使用的技术为微软技术。当E公司在.NET架构上越陷越深的时候,发现很多东西过度依赖微软的 技术框架,成本代价非常大,而且由于测试技术的不全面,使得维护成本很高。企业存在时间超过10年,多数核心业务组件是用微软的技术。但随着业务的发展, 微软技术平台上的诸多问题逐渐暴露。首先是高昂的许可费用,缓慢的技术服务,以及商业技术平台特有的不开放特性,使得业务系统革新面临巨大挑战客户决定使 用最便于测试的语言,Ruby来进行核心业务的重写。
Ruby天生对TDD理念的支持,使得任何Ruby项目都能非常好的进行TDD测试和开发。结合Ruby令人称奇的高级语言特性,使得技术转 型进展非常顺利,成为全世界少有的使用Ruby和Rails来取代旧技术,并在金融领域成功运作的案例。这充分证明了Ruby和Rails在企业级应用市 场上的潜力。
从2006年Rails崛起之时,公司决定尝试使用Ruby和Rails来改进已有系统。经过两年的努力,公司已经将外围项目升级到了 Ruby和Rails技术平台,技术人员也成功实现了技术转型。在新的Ruby 和Rails平台上,得益于新技术,开发人员的工作效率,代码的质量同以前相比,有巨大提升。更不用提任何使用Ruby 和Rails的程序员,生活质量都明显提高了。
在尝到甜头后,E公司坚定了技术转型的决心。然而,在北美,懂得Ruby On Rails的技术人才稀缺。通过与NibiruTech合作,E公司成功地解决了开发人员稀缺的问题,在双方共同努力下,开始对核心业务进行升级。E公司 信用卡业务,去年的交易额是40亿美元,交易系统是由多种技术混合而成的技术平台。其中一个用Delphi完成的基础组建,使用了10年,代码已经十分陈 旧,几乎没有任何测试代码覆盖,任何改动都充满风险。通过与NibiruTech合作,我们成功地将这个组件用Ruby重写,代码量减小到原有的10%, 并且包含重度的测试覆盖,为核心业务的升级做好了准备。这个案例充分说明了Ruby这种语言强大之处,为企业带来的不仅仅是成本的节约,更是技术架构换代 升级后的各种好处,使得企业在技术方面充满竞争力。
RoR开发,不仅是快速高效,更重要的是优雅简洁,与任何其他的技术相比,这个方面的优势可谓巨大。IT巨头们也没有忽视RoR的崛起。 Sun是现在RoR的主要支持者之一,Netbeans默认支持RoR的开发。整个J2EE社区渴望将Ruby和Rails嫁接在一起,让RoR可以继承 Java的巨大遗产,而Java则可方便使用Ruby和Rails的各种创新,为整个企业界的开发带来了一股新鲜的风气。
文化对Ruby 和Rails的影响
任何一个出色的群体,都会在某些方面有个性的特征,被称作文化。Ruby On Rails这个群体,目前尽管得到了广泛的关注,炙手可热,但仍然属于小众。这个群体的创造力是非常强的。这个群体的开源氛围也很好。
Mac文化,笔者从来没有见过任何一个计算机群体拥有如此高的创造力和文化魅力。可以说,Mac世界的人对Apple文化就是一种宗教般的狂 热。笔者使用PC时间长达10年,今年转变为Mac用户后,终于体会到了Mac的华丽和易用性。笔者问身边许多使用Mac的朋友,下一台电脑,你会选择 PC,还是Mac?100%的回答是会继续选择Mac。简短几个月,笔者在Mac下面进行工作、学习的经验,已经让我很难在回到Windows了(必要的 时候会使用Windows虚拟机)。
看看主流的Rails社区,清一色的Mac用户。Mac的很多文化,在Rails诞生之日,变顺利集成下来。Mac和Rails都优雅,简 单,与众不同,在各自的领域中,都是最具有艺术气息的产品和技术。使用这些产品和技术,使得工作也变得简单和优雅起来,让程序员觉得自己不仅仅是工程师, 也是艺术家。
Ruby On Rails的常用武器
测试工具
我们实际工作中, 严重依赖以下测试工具:
● Autotest:开始编码了? 第一件事是打开Autotest,结束编码了,最后一件事是关闭Autotest。编码的过程中, 应该一直让autotest开着,它会一直检测你的代码改动,自动持续运行测试,是最好的TDD工具。
● Rspec : 抛弃Rails原有的测试框架吧,这个更优秀。
● Mocha: 可以让你轻易实现Mock功能,非常好用,语法如英文般自然。
● Selenium: 项目稳定后,可以用来做交付测试,自动启动浏览器,完全模拟人的鼠标键盘点击,进行测试。
● Cruise Control:持续集成,在源代码服务器端验证运行测试代码,确保不会出现“it works for me”,文件漏提交,以及开发环境不同带来的bug等问题。
学习和使用RoR,却不用TDD方式,实在是非常大的损失。以我自己的经验来看,国内遵循TDD方式开发的团队,是非常稀少的,原因是TDD 的学习需要对已有的软件开发思维进行巨大的调整。过去是写好了代码后,为了应付检查,匆忙补上测试代码。如果项目紧张的话,领导也会体谅没有时间写测试代 码。而遵循TDD之后,是任何时候都在编写重构测试代码,并且是先写好测试代码,然后在去实现这个测试,其中的乐趣巨大,当项目进入中期后,面对几千行代 码,几百个测试用例是最有信心的保障。
许多非TDD信徒怀疑,采用TDD后,工作量成倍增加,从而导致开发速度降低。事实上, 在我们的实际工作中,由于采用了RoR,以及其他的非常棒的测试框架和技术,使得我们的测试成为工作最有力的保障,使得我们开发的速度急剧提高,大部分情 况下,我们从事Web开发,却不开启浏览器,当所有的测试用例都通过的时候,我们是非常有信心保证,所有的页面都是正确可用的。DHH在演讲中声称,在 ROR框架中,不写测试的人应该受到惩罚。以笔者自己学习和工作经验来看,走向TDD是技术生涯中最大,也是最有乐趣的一次转变。整个 NibiruTech的人都有这样的体会,没有测试代码,我们不知道如何写程序。
操作系统
操作系统的问题上,Rails社区有强烈的Mac感情倾向。无疑Rails、Ruby和Mac是天生的搭档,使用这三者会使得工作充满乐趣。 作为一名专业的计算机工程师,使用Unix系统总是一种回家的感觉。Mac同属Unix分支,系统安全性非常出色,加上苹果公司公认的艺术般的UI设计, 使得Mac成为专业工程师最有力的操作系统之一。
笔者从Windows过渡到Mac的过程也并非一帆风顺。最初的两个星期,对于Mac完全是陌生,过去使用Windows严重依赖快捷键, Mac的键盘布局与Windows不同(后来认为更合理),导致工作效率很低。由于各种Windows常见的软件不容易找到,于是就安装了虚拟机的 Windows版本。逐渐熟悉了Mac的各种系统界面后,现在对Mac非常习惯,已经融入到了Mac世界中。对我而言,Mac有3点好处:
1、血统纯正的Unix系统
2、非常安全,非常稳定,完全不用担心备份操作系统,不担心木马病毒
3、华丽的界面,使用艺术品一样的享受
以上三点,是Windows无法提供。当然,Windows作为统治者,有很多软件方面的广泛支持,难免需要用到的时候。这种情况下,请出虚拟机,启动Windows,完成必要的工作,然后离开。
从事Ruby On Rails开发,Mac无疑是最佳选择。如果无法使用Mac,那么Ubuntu也比Windows要好一些。作为专业计算机工程师,一直使用Linux, 软件都手动编译,将会成为提高对计算机理解的一条捷径。Google公司最新的Andriod系统,证实了对Linux的投资,迟早会让使用者站着一个更 好的新技术位置。
禁止使用Windows已经成为NibiruTech的公司核心文化。每一个成员,都需要在Unix/Linux系统下,完成工作任务。再也 不用担心烦人的病毒和间谍软件,Window上太多分散人注意力的地方,使用Linux后,公司员工的生产效率一点也不比Windows低,而且避免了各 种法律问题。
按照优先级向技术团队推荐OS :
● Mac OS X
● Linux/Ubuntu
● Windows
IDE
在NibiruTech内部,我们鼓励使用不同的IDE来开发程序。
IDE这个问题上,纯粹的优劣之争已经没有太大价值。任何一个主流的IDE都经过大量用户的检验,功能设计上都已经比较成熟,效率也都很高。 由于NibiruTech是一个重度TDD团队,出现需要调试的机会非常少。Ruby又是一种动态语言,IDE能做的事情不是太多。所以选择IDE重要的 是看你是否已经熟悉其中的某种,快捷键直接影响了编码的效率。
● TextMate
● Eclipse(RadRails)
● Netbeans
● Emacs
任何让你得心应手的IDE就是你最好的IDE。
Ruby和Rails学习建议
Ruby On Rails同主流的技术相比,文档方面稍微欠缺一些,官方的支持少一点。Agile Web这本书是这个领域的Bibile,每个开发人员都应该仔细看看。Ruby语言与其他主流语言还是有比较大的不同,建议多看看screencast和开源项目。
给初学者的建议是最简单的平台:
● 使用windows + instantrails + radrails;
● 先把Agile书•¬一遍;
● 动手将Depot做一遍;
● 把Railscast和peepcode看一遍,能懂多少算多少;
● 可以动手完成一个实际的项目;
● 放弃Windows,做一个真正的Hacker,迁移到Mac或ubuntu;
● 重新配置Ruby和Rails环境,如果没有unix的经验,会非常受挫折,做好准备。
学习Ruby On Rails,可以在中小项目里直接应用Rails从而获得高速的开发速度,也能借鉴RoR社区中的许多前沿设计理念,帮助改善Java项目的架构。
Rails的入门有个特点,通过观看官方视频,花上15分钟写一行代码,就能实现第一个完整的CRUD系统。而别的技术派别,学习代价非常巨 大。当然RoR入门的第一个难点是配置环境。如果在Windows下,下载一个InstantRails、看看说明,就可以零配置完成第一个 HelloWorld。
给企业的建议:
● 听说过使用Ruby 和Rails而后悔的企业吗;
● Ruby和Rails在技术上拥有明显的快速开发的优势;
● 能带来的好处不仅仅是成本下降,更重要的是产品质量的显著提升;
● 开发难度显著降低,企业反馈速度明显加快,业务得到更大的支持;
● 避免招聘一个Rails高手来带领企业技术转型。要从已有的技术队伍中培养人,摸索锻炼出学习型的人才。Rails以简单优雅征服世界,学习成本明显低于其他技术;
● 寻找专业的Ruby 服务公司,将本企业18个月的学期缩短为6个月。
结束语
本文是写给程序员杂志,为SD 2.0大会写的文章之一。我们所创办的NibiruTech公司,遵循简洁的技术路线,将程序当作艺术,将程序员当作艺术家,为了这样的理念,我们愉快地工作在一起。
“上帝赐予我一份Rails程序员的工作吧!”
“用Rails来工作,就像是在玩RPG游戏一样有趣,欲罢不能”
Ruby 和Rails是我见过最为优雅,最为高贵的语言和框架。当然,没有任何东西可以满足所有人的热爱。 只是在Ruby 和Rails领域,我所见到过真正研究过Ruby和Rails的程序员,都不能自已地爱上了这种技术,在NibiruTech中有一半的人是爱好的程度让 其不得不放弃已有工作职位,寻求一份Ruby On Rails的技术职位。应用Ruby和Rails、遵循Agile和TDD,使得程序开发的职位,犹如世界上最幸福的工作一般,在NibiruTech工 作的人,都有强烈的“征服技术”的感觉。
对于真正的程序员,如果你想与众不同,不妨尝试一下Ruby On Rails,每天工作之余,花时间想想,如果用RoR来做,会不会不同?
对于企业决策者,如果犹豫不决是否该尝试RoR,那么建议你给自己一次犯错的机会。彷徨犹豫不会让答案更加清晰,只会延误时机,增加选择中的焦虑。采取行动,让自己犯错,才是得到最佳答案的途径。
发表评论
-
HTTP状态码100的用法
2009-04-17 15:57 4430The purpose of the 100 (Continu ... -
ubuntu 8.04 rails安装问题
2008-07-18 11:21 1506在8.04下用gem装好rails,rails -v无效,说我 ... -
Testing: One assertion per test
2008-04-09 15:10 2Limiting your tests to using on ... -
如何在update一条记录的部分字段时跳过某些校验
2008-03-27 18:00 1954我照Agile Web Development with Ra ... -
render与redirect_to的区别
2008-03-25 17:07 4922今天在做R.R.log的时候发 ... -
避免nil object错误
2008-03-24 19:57 1003一般都会使用 <%= @topic.category.n ... -
毕业设计遇到的问题
2008-03-17 12:54 12581.如何统计一个分类中的文章数?是通过在Category表中设 ... -
MySQL安装与配置 for Rails
2008-03-10 15:56 25481.Linux下MySQL的安装 引用sudo apt-get ... -
人性化接口
2008-02-15 21:09 1230by Martin Fowler 在Ruby群体 ...
相关推荐
《Ruby on Rails Tutorial》中文版(原书第2版,涵盖 Rails 4) Ruby 是一门很美的计算机语言,其设计原则就是“让编程人员快乐”。David Heinemeier Hansson 就是看重了这一点,才在开发 Rails 框架时选择了 Ruby...
RUBY RAILS INSTALLRUBY RAILS INSTALLRUBY RAILS INSTALL The Best Ruby Rails Server!
Ruby on Rails是一款基于Ruby语言的开源Web开发框架,它遵循MVC(模型-视图-控制器)架构模式,简化了Web应用的开发流程。在Linux环境下安装Ruby on Rails需要一系列的依赖包和步骤,本资源包提供了所需的所有组件,...
### Ruby on Rails 101:深入理解与实践 #### 引言 《Ruby on Rails 101》是一本介绍Ruby on Rails(简称RoR或ROR)的基础书籍,旨在为初学者提供一个全面而深入的学习框架。本书由Peter Marklund编写,包含了五天...
Ruby on Rails,简称Rails,是由David Heinemeier Hansson基于Ruby语言开发的一个开源Web应用程序框架。Rails遵循MVC(模型-视图-控制器)架构模式,致力于“约定优于配置”和“Don't Repeat Yourself”(DRY)的...
### Ruby on Rails Guides v2 - Ruby on Rails 4.2.5 #### 一、重要概念及基础假设 - **重要概念**:本指南旨在帮助读者深入理解Ruby on Rails(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:...
Ruby on Rails,简称Rails,是基于Ruby编程语言的一个开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和代码的可读性。Rails以其“约定优于配置”(Convention over Configuration)...
《Agile Web Development With Ruby On Rails》是两本广受欢迎的书籍,主要涵盖了使用Ruby on Rails框架进行敏捷Web开发的知识。这本书的第1版和第2版分别详细讲解了如何运用敏捷开发方法来构建高效、可扩展且易于...
在本教程中,我们将深入探讨如何在Windows XP操作系统上搭建Ruby on Rails开发环境,特别强调使用RadRails作为集成开发环境(IDE)。Ruby on Rails(RoR)是一个强大的Web应用程序框架,它基于Ruby编程语言,提供了...
通过以上解析可以看出,《Agile Web Development with Ruby on Rails》这本书是一本全面介绍如何使用Ruby on Rails框架进行敏捷Web开发的指南,不仅覆盖了框架的基本用法,还深入探讨了敏捷开发的原则和实践,对于想...
Ruby on Rails,简称Rails,是由David Heinemeier Hansson创建的一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和可读性。在这个开发环境包中,我们拥有Ruby ...
《Ruby on Rails 3 Tutorial》是一本专门为初学者设计的指南,旨在帮助读者快速掌握Ruby on Rails这一强大的Web开发框架。Ruby on Rails(简称Rails)是基于Ruby语言的一个开源框架,它采用MVC(Model-View-...
Ruby on Rails,简称Rails,是基于Ruby语言的一个开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本压缩包中的"Ruby on Rails入门经典代码"提供了新手学习...
Ruby on Rails,简称Rails,是由David Heinemeier Hansson基于Ruby语言开发的一个开源Web应用程序框架。这个框架遵循“约定优于配置”(Convention over Configuration)的原则,致力于简化Web应用的开发流程,提高...
“The author is clearly an expert at the Ruby language and the Rails framework, but more than that, he is a working software engineer who introduces best practices throughout the text.” —Greg ...
Ruby for Rails 英文原版, pdf格式 <br>本书是一部专门为Rails实践而写的经典Ruby著作,由四部分组成,共17章。第一部分讲述Ruby和Rails的编程环境。第二部分和第三部分与 Rails紧密联系,着重对Ruby这门语言...
ruby rails demo, rails 简单demo。 (1)到ruby官网:http://www.ruby-lang.org/en/下载window安装包,并安装, ruby版本: ruby -v (2)安装Rails3 gem install rails (3)安装sqlite3 gem install sqlite3-ruby 安装...
Ruby on Rails(简称Rails)是一种基于Ruby编程语言的开源Web应用程序框架,专为敏捷开发而设计,强调简洁的代码和“约定优于配置”的原则。它主要用于构建数据驱动的Web应用,借助于MVC(Model-View-Controller)...