Ruby on Rails是一套用Ruby写的Web应用程序框架,Ruby是一个与Python,Smalltalk和Perl相似的动态语言。
. 3
从 2004 年 7 月 25 日 Ruby on Rails到现在已经有了一年多了,在这短短的时间里面,Rails已经从0.5版本快要升级到1。0版本了,在保留了易用性和高生产力的同时,又增加了许许多多令人惊叹的特性。这篇文章将描述1.0版本里面各个令人感叹的组件。
我并不教你如何去用Rails来写Web程序,如果你想那样的话,你应该去看看Rolling with Ruby on Rails。这篇文章只是讲述了Rails的各个特性。
高生产力
Ruby on Rails并没有引入什么新的功能,以前的Web框架都已经很好的具备各种需要的功能,那么Rails是靠什么东西取胜的呢?区别就在于Ruby是如何的来实现的。当你花了数天而不是数周实现了一个简单的Web程序,花了几周而不是几个月实现了一个复杂的Web程序的时候,你就会注意到这一点了。
当然了,如果开发出来的程序最后复杂而且难以维护的话,那么我们刚刚注意到的优点也就毫无意义了。幸运的是,Ruby on Rails促使人们使用好的编程习惯,这也就导致编写出来的代码结构好而且容易维护。
如果ruby没有深度的话――也就是说,如果你尝试做任何稍微复杂一些的Web程序的时候,你发现遇到了障碍,由于Rails固有的一些缺陷导致了无法完成那样的程序。不过一些资深的开发人员已经尝试并且报道了Rails不存在这样的缺陷,比如,Tomcat,Ant和Servlet API的作者James Duncan Davidson最近写道:
Rails is the most well thought-out web development framework I've ever used. And that's in a decade of doing web applications for a living. I've built my own frameworks, helped develop the Servlet API, and have created more than a few web servers from scratch. Nobody has done it like this before. That's not to say they got it all right. It's by no means "perfect". I've got more than a few nits and picks about how things are put together. But "perfect" isn't the point. The point is that it gets you up and going fast and has plenty of depth to keep you going. And Rails does that very well.
如果没有足够的证据的话,你也许很难相信他所说的话。不过幸运的是,你不需要相信我的(或者任何其他人的)话,你可以自己用一天或者更短的时间来看看Ruby on Rails tutorial并且做一个适当的Web程序出来。毕竟,眼见为实!如果你不想要自己去尝试,那么你也可以看new Rails video,看看别人是怎么做到的。
Rails是怎么做到这些的?
就好像一个好的药方一样,Rails通过整合适量的正确手段来达到前面所说的样子。下面就是Rails为什么能够如此高效的一部分原因
Ruby
Rails的很多强大的功能都是来自于Ruby的。Ruby独特的设计使得我们可以轻松的创建domain-specific languages 和做metaprogramming。
完全的MVC架构
Rails是一个MVC(model,view,controller)的框架,他提供了所有的这些层次并将他们无缝的结合在了一起。其他的一些框架一般都只是提供了一部分的解决方案,需要开发者自己去整合多个框架到一个应用程序里面去。比如说,一个Java开发人员就需要使用Hibernate,Struts和Tiles来实现MVC的目标。
约定高于配置
约定高于配置意味着XML配置文件的终结—在Rails里面,没有任何的xml配置文件!代替xml的是使用一些简单的约定,让程序可以通过反射和查找来获得所需要的配置信息。比如,Rails使用反射来自动的将Ruby对象映射到数据库表里面去。你的程序代码和正在运行的数据库里面已经包含了Rails所需要的一切。
更少的代码
通过遵循一些简单的编程约定不仅仅可以减少配置文件的使用,同时还可以让Rails自动的去处理很多的底层的细节问题,这意味着你可以写更少的代码来实现你的程序。保持你的代码的精简意味着更快的开发速度和更少的bug,它可以让你的代码更加容易理解,维护和扩展。
自动生成
Rails通过运行时反射和元程序来减少本来你必须要编写的代码。你通常可以通过内置的自动生成脚本来生成一些原本需要通过手工编写的代码,这就让你可以集中精力在你的业务上面,而不是在处理一些无关的细节方面。
Zero turnaround time
一般的Web程序的开发都需要经过一下几个步骤:配置,编译,部署,重设和测试。这非常的耗费时间,Rails开发环境不需要经过这些步骤。你做了一个修改,然后你就可以看到这个修改的效果了。我们无法描述这对于提高生产力会有多大的帮助,但这确实很有帮助。
Scaffolding
Rails可以自动创建完整的用来操作数据库表的CRUD(Create,Retrieve,Update和Delete)操作和相应的视图。这个功能可以让你很快的就可以实现用来操作数据库表的功能。随着开发的进行,你可以慢慢的使用自定义的CRUD方法和视图来代替自动生成的程序,从而让程序更加美观,更加的功能强大。