作者:Curt Hibbs 日期:
譯者:吳海燕 日期:
Ruby on Rails
Ruby on Rails是一套用Ruby寫的Web應(yīng)用程序框架,Ruby是一個(gè)與Python,Smalltalk和Perl相似的動態(tài)語言。
從
我并不教你如何去用Rails來寫Web程序,如果你想那樣的話,你應(yīng)該去看看Rolling with Ruby on Rails。這篇文章只是講述了Rails的各個(gè)特性。
Ruby on Rails并沒有引入什么新的功能,以前的Web框架都已經(jīng)很好的具備各種需要的功能,那么Rails是靠什么東西取勝的呢?區(qū)別就在于Ruby是如何的來實(shí)現(xiàn)的。當(dāng)你花了數(shù)天而不是數(shù)周實(shí)現(xiàn)了一個(gè)簡單的Web程序,花了幾周而不是幾個(gè)月實(shí)現(xiàn)了一個(gè)復(fù)雜的Web程序的時(shí)候,你就會注意到這一點(diǎn)了。
當(dāng)然了,如果開發(fā)出來的程序最后復(fù)雜而且難以維護(hù)的話,那么我們剛剛注意到的優(yōu)點(diǎn)也就毫無意義了。幸運(yùn)的是,Ruby on Rails促使人們使用好的編程習(xí)慣,這也就導(dǎo)致編寫出來的代碼結(jié)構(gòu)好而且容易維護(hù)。
如果ruby沒有深度的話――也就是說,如果你嘗試做任何稍微復(fù)雜一些的Web程序的時(shí)候,你發(fā)現(xiàn)遇到了障礙,由于Rails固有的一些缺陷導(dǎo)致了無法完成那樣的程序。不過一些資深的開發(fā)人員已經(jīng)嘗試并且報(bào)道了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.
如果沒有足夠的證據(jù)的話,你也許很難相信他所說的話。不過幸運(yùn)的是,你不需要相信我的(或者任何其他人的)話,你可以自己用一天或者更短的時(shí)間來看看Ruby on Rails tutorial并且做一個(gè)適當(dāng)?shù)?/span>Web程序出來。畢竟,眼見為實(shí)!如果你不想要自己去嘗試,那么你也可以看new Rails video,看看別人是怎么做到的。
就好像一個(gè)好的藥方一樣,Rails通過整合適量的正確手段來達(dá)到前面所說的樣子。下面就是Rails為什么能夠如此高效的一部分原因
Rails的很多強(qiáng)大的功能都是來自于Ruby的。Ruby獨(dú)特的設(shè)計(jì)使得我們可以輕松的創(chuàng)建domain-specific languages 和做metaprogramming。
Rails是一個(gè)MVC(model,view,controller)的框架,他提供了所有的這些層次并將他們無縫的結(jié)合在了一起。其他的一些框架一般都只是提供了一部分的解決方案,需要開發(fā)者自己去整合多個(gè)框架到一個(gè)應(yīng)用程序里面去。比如說,一個(gè)Java開發(fā)人員就需要使用Hibernate,Struts和Tiles來實(shí)現(xiàn)MVC的目標(biāo)。
約定高于配置意味著XML配置文件的終結(jié)—在Rails里面,沒有任何的xml配置文件!代替xml的是使用一些簡單的約定,讓程序可以通過反射和查找來獲得所需要的配置信息。比如,Rails使用反射來自動的將Ruby對象映射到數(shù)據(jù)庫表里面去。你的程序代碼和正在運(yùn)行的數(shù)據(jù)庫里面已經(jīng)包含了Rails所需要的一切。
通過遵循一些簡單的編程約定不僅僅可以減少配置文件的使用,同時(shí)還可以讓Rails自動的去處理很多的底層的細(xì)節(jié)問題,這意味著你可以寫更少的代碼來實(shí)現(xiàn)你的程序。保持你的代碼的精簡意味著更快的開發(fā)速度和更少的bug,它可以讓你的代碼更加容易理解,維護(hù)和擴(kuò)展。
Rails通過運(yùn)行時(shí)反射和元程序來減少本來你必須要編寫的代碼。你通??梢酝ㄟ^內(nèi)置的自動生成腳本來生成一些原本需要通過手工編寫的代碼,這就讓你可以集中精力在你的業(yè)務(wù)上面,而不是在處理一些無關(guān)的細(xì)節(jié)方面。
一般的Web程序的開發(fā)都需要經(jīng)過一下幾個(gè)步驟:配置,編譯,部署,重設(shè)和測試。這非常的耗費(fèi)時(shí)間,Rails開發(fā)環(huán)境不需要經(jīng)過這些步驟。你做了一個(gè)修改,然后你就可以看到這個(gè)修改的效果了。我們無法描述這對于提高生產(chǎn)力會有多大的幫助,但這確實(shí)很有幫助。
Rails可以自動創(chuàng)建完整的用來操作數(shù)據(jù)庫表的CRUD(Create,Retrieve,Update和Delete)操作和相應(yīng)的視圖。這個(gè)功能可以讓你很快的就可以實(shí)現(xiàn)用來操作數(shù)據(jù)庫表的功能。隨著開發(fā)的進(jìn)行,你可以慢慢的使用自定義的CRUD方法和視圖來代替自動生成的程序,從而讓程序更加美觀,更加的功能強(qiáng)大。