Ruby on Rails入門之道
原創(chuàng)【51CTO.com快譯自8月6日外電頭條】我被問到最多的一個問題是我該如何學(xué)習(xí)Ruby和Ruby On Rails,另外還有諸如我該從哪里下手,我該如何做,以及我要怎么樣才能成為更好的Ruby/Rails開發(fā)者等等此類的問題。
51CTO編輯推薦:Ruby入門教程與技巧大全
我希望以簡單明了的方式來回答這些問題,如閱讀某本書你就可以成為一名優(yōu)秀的程序員了,但事情并非如此簡單,因為每個人的基礎(chǔ)不一樣,學(xué)習(xí)方式也不一樣。因此我在開發(fā)者社區(qū)中做了一次調(diào)查,下面是我收到的一些回復(fù)。
你是如何學(xué)習(xí)Ruby和Rails的?
DHH:我是在對編程開始感到憤怒的時候開始學(xué)習(xí)Ruby的。我想做真實的東西,而不僅僅是一個玩具程序。(51CTO編者注:DHH是Ruby on Rails框架的創(chuàng)始人,他認(rèn)為David Black:“我是通過一點一點積累起來的,經(jīng)過了大量的實踐和閱讀,并嘗試在Ruby_Talk中回答別人的問題”。
Evan Phoenix:“寫代碼的同時閱讀和借鑒別人的代碼”。
Yehuda Katz:“我是強迫自己學(xué)的”。
Ninh Bui:“本來我是一名Java程序員,但我的老大要求我周末熟悉熟悉Ruby,于是我借助Google學(xué)習(xí)了一些基本知識,后來通過閱讀有關(guān)書籍和源代碼就越來越熟悉了”。
還有一些網(wǎng)友說是通過閱讀Rails社區(qū)中高手的博客文章,Rails廣播,Rails指南和API文檔等手段來學(xué)習(xí)的。
你有什么好的學(xué)習(xí)建議?
網(wǎng)友Bob Martens說“多去社區(qū)逛逛,那里肯定有你不知道的”。
網(wǎng)友@jeromegn說“學(xué)習(xí)RoR最簡單的方法就是親自動手做點東西出來,Rails文檔和Ruby學(xué)習(xí)資料也對我?guī)椭艽?rdquo;。
網(wǎng)友@ryandotsmith說“在github上找?guī)讉€流行的項目(如radiant),學(xué)習(xí)它們的規(guī)格說明”。
網(wǎng)友Sunil Karkera說“開始時理解Rails中的MVC是最重要的”。
網(wǎng)友Ryan Bates說“Rails涉及到許多技術(shù)(包括HTML,CSS,Ruby,OOP和SQL等),你需要把精力放在你不熟悉的領(lǐng)域”。
另外還有一些網(wǎng)友則建議遇到問題就要問,可以去各大社區(qū),郵件列表,IRC支持頻道提問。
什么!還沒聽說過RoR?
使用Rails開發(fā)的軟件編程語言叫做Ruby,如果你剛進入程序員這一行,學(xué)習(xí)起來還是很容易的,我推薦一本書給你,由Chris Pine編著的《Learn to Program》最新已經(jīng)是第二版了,Ruby是一門優(yōu)雅容易上手的編程語言,但也不要指望安裝好Rails就可以用Ruby創(chuàng)建一個Drupal克隆了,Rails只是一個Web開發(fā)框架,它只能協(xié)助你快速開發(fā)Web應(yīng)用程序。
友情提示:Ruby官方站點有很多資源,不妨去看看。51CTO的Ruby專題中也一定有您想找的東西。
我熟悉PHP/Perl等腳本語言,但我對MVC和面向?qū)ο箝_發(fā)一無所知
這要取決于你平時是如何學(xué)習(xí)的了,對于喜歡問如何的人,我推薦你觀看Ryan Bates的Rails廣播和閱讀Rails指南,而對于喜歡問為什么的人,我推薦你閱讀Ruby編程指南和Ruby for Rails第二版。
你也應(yīng)該經(jīng)常去Rails Wiki看看,如果發(fā)現(xiàn)你遇到的問題還沒有出現(xiàn)在Wiki中,當(dāng)你解決掉問題后,別忘了把你的解決辦法提交到Wiki上。
閱讀一些與Ruby/Rails相關(guān)的博客,訂閱rubyinside網(wǎng)站的RSS feed,訪問本地Ruby組。
友情提示:持續(xù)關(guān)注你學(xué)習(xí)的內(nèi)容,漸漸地就會提高了。
我寫過Rails應(yīng)用程序,但受框架和語言知識缺乏的影響,總感覺受限制
首先我要說這是一個正常的階段,這時千萬不要放棄!請閱讀《The Ruby Way》和《The Rails Way》這兩本書,前一本最適合喜歡問為什么的人,后一本適合喜歡問如何的人,我建議兩本都要讀,有問題時不要猶豫,拿起Google這強大的武器進行搜索吧,也可以發(fā)布博客文章或通過同行進行交流,有一點可以肯定的是,不要害羞和氣餒,堅持就是勝利!當(dāng)然,51CTO編輯也了解到Ruby存在一些瓶頸:其對原生庫和類的缺乏使得很多從如PHP投奔過來的開發(fā)者感到比較不方便。
增強Ruby/Rails技能的一個好方法就是閱讀別人的代碼,去GitHub逛逛看是否有人遇到你相同的問題,當(dāng)然,你也可以參加Ruby/Rails培訓(xùn)。
友情提示:當(dāng)我在文檔中尋找一個函數(shù)/類時我經(jīng)常使用apiDock。
我寫過Rails程序,理解Rails規(guī)范,感覺能夠編寫新的程序
恭喜你,你應(yīng)該為自己感到自豪!但不要停止學(xué)習(xí),你為你的程序編寫了測試嗎?你真的測試過你實現(xiàn)的程序嗎?還是你自我感覺良好?你使用了插件嗎?你看過這些插件的代碼嗎?你理解它們是如何工作的嗎?你自己能夠編寫插件嗎?另外,你對Javascript熟悉嗎?對CSS和DBA方面的知識熟悉嗎?你應(yīng)將精力放在自己薄弱的環(huán)節(jié)。
我強烈建議你為某些開源項目貢獻代碼,為GitHub重要項目打補丁,這樣你會提高很快。
我寫了多個Rails程序,還寫過插件
太棒了,現(xiàn)在你應(yīng)該對Rails和Ruby都很熟悉了,你可能想要研究得更深入一點,這個時候可以試試元編程或編寫C/FFI擴展,看看Ruby的源代碼學(xué)習(xí)學(xué)習(xí)它是如何工作的為何不可?
這個時候你還可以學(xué)習(xí)一下其它語言和框架,看看為什么其它人會選擇那些語言和框架,如Python,Java,Scala,Clojure,Objective-C,Ocaml和Scheme等,你不用掌握其它語言,但應(yīng)該理解每種語言存在的原因,它們的優(yōu)點和缺點是什么,可以擴大你的視野,有時根據(jù)其它語言的特性對于你加深對Ruby的理解說不定還有幫助。
我已經(jīng)很熟悉Ruby和Rails了,甚至可以背出Ruby和MRI的源代碼
如果你已經(jīng)到了這種境界了,我希望你能為Ruby 1.9(51CTO編者注:目前為止Ruby的最新公開版還在1.8下)出一份力,為其它實現(xiàn)(IronRuby,JRuby,MacRuby,和Rubinius)捐獻你的代碼,并幫助一下Rails 3(現(xiàn)在Rails在2.3下,社區(qū)對下一個版本的Rails 3普遍充滿期待)。
原文名:How do I learn Ruby & Rails?
作者:Matt Aimonetti
【編輯推薦】