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