如何快速學習 Ruby on Rails?
我是 Ruby 的忠實粉絲,我想學習 RoR 用以自娛自樂並開發一些有趣的 web apps,請問有什麼辦法入門?
補充一下,我現在在堅持閱讀 http://guides.rubyonrails.org/getting_started.html 還有 http://railsforzombies.org/ (這個純屬娛樂,呵呵)
快速學習Ruby on Rails,這應該是個偽命題,沒有什麼事情是能夠快速學習的,尤其是編程,而且是Rails這樣極其複雜的框架,它由無數頂級高手成年累月的心血堆砌而成,融合了web開發領域內幾乎全部的最佳實踐。
如果想快速入門,那麼其他一些人提過的 Rails Tutorial,或者 Rails for Zombies 都是很好的選擇,但相信我,即便你能快速做出簡單的網站,依舊會對整個開發環境和知識體系一頭霧水,在面臨現實世界的需求時往往會捉襟見肘,花費更多的時間來補充缺失的知識。
所以,我認為如果你的目的不是創業,而是學習的話,全面有效成體系地吸收知識是更好的選擇,這方面,讀書是最好的方式,不過市場上濫竽充數的書籍實在很多,對於新手來說,怎樣用有限的時間讀最合適的書,是很重要的。
我在學習和使用Ruby與Rails的過程中,讀過大部分在Amazon排名靠前的相關書籍,當然有些不錯的書,隨著技術的進化,已經略顯陳舊。以下給出的閱讀列表,是在現在依然有效的選擇:
起點階段,強烈建議至少具備如下知識後再開始Rails開發
Html and CSS
結構和樣式不止是設計人員的事,web開發必須要熟悉
Head First HTML與CSS(第2版)
雖然已經出版了很久,但依然是最好的HtmlCSS入門書
Linux
幾乎所有的開發環境都嚴重依賴於GNU/Linux為主的命令行環境,因此需要學習linux的基本概念和操作
The Linux Command Line
目前最好的linux command line學習指南,生動,清晰,詳細,無論是菜鳥還是多年的老手都能從中受益,遠超過之前作為標準教材的practical guide to xx系列。No starch這個出版社既有延續至今的Hacker精神,也懂得如何發掘有趣的作者
HTTP and Rest
Web開發對於Http的深入理解是必須的,另外Rails還使用Rest協議作為基本指導原則,所以需要深入理解Http和Rest
RESTful Web Services中文版
這本是目前為止最好的描述HTTP與Rest的作品,可以讓你重新認識Web,更何況其中的示例是Ruby語言(因為這本書合著者是Sam Ruby)
Programming
程序員修鍊之道
這本書告訴你,如何做才能成為一個注重實效的程序員,涉及了非常多的理念和實踐,雖然都不深入,但至少讓你知道世界是什麼樣子的,是任何程序員最應該在新手階段讀的書,也是對整個業界影響最大的經典之一
Git and Version Control
版本控制在項目中是一開始就要使用的,不止是開發,一切事情都需要版本控制
Pro Git
這本是迄今為止講解Git最清楚最深入的書,對於新手,不建議看後面的實現原理,先讀前幾章了解概念和學習日常實踐使用是最重要的
Ruby
如果只是在Rails中使用的Ruby,可以使用一些免費的快速入門教程,不過,系統地學習Ruby,可以了解到很多面向對象開發或函數式編程的思想,對於熟悉和掌握Rails幫助非常大
Programming Ruby 1.9
公認的Ruby入門經典,不過對於新手來說,只推薦前半的入門部分,高階內容可以稍後再來學習
Rails
Learn Web Development with the Ruby on Rails Tutorial
最後是Rails自身的學習,這本書的最新版涵蓋Rails4,是目前為止最好最完整的Rails入門教程,可以在線看,還有大量的視頻搭配
進階階段,具備下面的知識,可以讓你或多或少地理解Rails Way,並真正開始寫出合格的Rails應用
Programming
重構
這本"重構"是當年石破天驚的經典著作,講解如何持續改進和讓代碼優雅乾淨,擁有直到現在還依然適用的價值,尤其為Ruby On Rails社區廣泛接受,這本書有將其中的Java語言換成Ruby後的[版本](重構(Ruby版) (豆瓣))
UNIX編程藝術
由公認的黑客領袖之一Eric S.Raymond撰寫的這本書總結了長久以來的Unix領域中的設計和開發哲學,思想乃至文化體系,是了解Ruby和Rails誕生於其中的Unix黑客文化必不可少的讀物
Ruby
深入理解Ruby,除了上邊提到的Programming Ruby 1.9以及重構等通用編程書之外,還有以下幾個選擇
Ruby編程語言
Ruby之父松本行弘和O"Reilly的王牌作者合作,誕生了這本講解Ruby最透徹的經典著作
Eloquent Ruby
Ruby社區的編程指南之一,介紹了Ruby社群的文化,品味和編程原則,強烈地反映了Ruby程序員的共同特質: 幽默,健談,追求樂趣,熱愛生活
Test
測試驅動開發(TDD)以及之後進化的行為驅動開發(BDD)是Ruby和Rails社群的核心文化之一,只有徹底理解並運用BDD,才是合格的Rails開發者
The RSpec Book
唯一的也是必讀的BDD介紹作品,由RSpec核心成員撰寫
Git
可以堅持把Pro Git的後半部分學習完,沒有更深入和清楚的書了
CSS
CSS權威指南
Eric Meyer的CSS權威指南至今仍然是CSS2講解最全面和最深入的參考書
Javascript and jQuery
Web開發的交互性會越來越多,Javascript已經成為了相當嚴肅的編程語言
JavaScript權威指南
目前最全面最好的Javascript學習書籍
jQuery基礎教程 (第4版)
唯一尚可稱得上緊跟jQuery發展腳步的學習指南
Rails
Rails發展的實在太快了,最好的方法也許是跟蹤在線文檔,不過還是推薦這本
The Rails 4 Way
這本書的Rails 3版本講解Rails的哲學和細節相當到位,不過Rails 4版本還沒有出版,非常值得在今年3月份第一時間拿下它。
---
More
上邊的書籍都讀過的話,可能你終於能了解到Rails背後涉及的概念和實踐有多麼龐大驚人,也了解到了還有多麼深的知識鴻溝需要跨越,了解到了一切都還只是開始,不過值得慶幸的是,一切事情都需要個開始我的建議是,如果你之前已經掌握了一門用於web開發的語言,通讀Ruby on Rails Guides後,儘快進入到實戰階段,從你覺得有趣的web apps裡面找出一個,盡量簡化需求,然後開始coding,碰到問題的時候反過來查找資料,習慣用Ruby on Rails API來解決問題,然後逐步的添加應用的需求。在你完成應用之後,再開始通讀一些大部頭的書籍(比如The Well-Grounded Rubyist、Agile Web Development with Rails....)對知識進行系統的梳理
個人認為學習一門新的語言,首要解決的問題是遲遲不肯開始動手,所以務必要儘快進入實操的階段,盡量通過解決實際問題來整合知識
--------------------------------------------------------------------------------------
2年前的答案,最近在教愛人學習ruby時,有了更多的體會,補充一下:
1. rails不適合剛剛接觸web開發的學習者,因為其強調的Convention over configuration的編碼體驗隱藏了太多的編程細節,會讓很多初入門徑的開發者茫然不知所措,推薦可以通過Sinatra入門
2. ruby作為一門動態語音具備非常優秀的meta-program特性,這一方面給編程帶來了極其強大的靈活性,另外一方面也容易讓開發人員進入一個炫技的誤區,而忽略了程序很重要的一個要求是要讓其他人能看懂的
3. 學習需要耐心,所以不要心急,最近給愛人推薦了一篇博文學習一項技能要花多少時間?,供各位參考
4. 老是看方法論不實踐是沒用的,雞湯文看多了只能讓你一時熱血沸騰,所以早點實踐,早點動手,只要能感受到你每天都在進步就挺好
另: Ruby on Rails 實戰聖經 這個比較適合入門
-------------------------------------------------------------------------------------------
2016 年版本,你可以在這裡觀看我的 Rails 成長經歷:
Xdite 學習歷程經驗 · Issue #23 · softnshare/careergrowth · GitHub
我寫了三套教材:
* 初探 Rails | Growth School 初級 Rails
* Rails 101 | Growth School 中初級 Rails
* Rails E-Commerce 進階 Rails 職業班
==== 2010 年寫的 ====
我在去年寫過一篇文章 http://blog.xdite.net/?p=1754 # 2010 Ruby on Rails 書單 與 練習作業。
這是我拿來訓練內部 RD 的。基本上可以在 1-2 週內將剛從學校出來的白紙訓練成開發網站的即戰力。
===update: 近期我出版了一本書:「第一次學 Rails 就上手」。想要入門的可以買來看下
Rails 101 | Growth School
先搞懂Rails的路由模式
posts GET /posts(.:format) {:controller= &> "posts", :action= &> "index"}
POST /posts(.:format) {:controller= &> "posts", :action= &> "create"}
new_post GET /posts/new(.:format) {:controller= &> "posts", :action= &> "new"}
edit_post GET /posts/:id/edit(.:format) {:controller= &> "posts", :action= &> "edit"}
post GET /posts/:id(.:format) {:controller= &> "posts", :action= &> "show"}
PUT /posts/:id(.:format) {:controller= &> "posts", :action= &> "update"}
DELETE /posts/:id(.:format) {:controller= &> "posts", :action= &> "destroy"}
通過rake routes你可以得到類似上面的路由記錄,這樣你就明白rails是如何通過路由來調用MVC里的C-controller里的方法了;
然後再看看MVC里的M-model還有資料庫遷移部分,剩下就是V-view了,重點是如何和javascript打交道的,Rails3和之前的版本都有不同。
完成了這些就算入門了,然後就是逛github和http://railsplugins.org這樣的網站,了解下各個方面的插件。ps: Bundler實在是很方便。
建議從Ruby 項目開始,從 Github 開始,然後再學習Rails,這樣不會導致一知半解
很多人是在學習使用 Rails 的過程中學習 Ruby。但我個人更推崇先學 Ruby 再學 Rails,在對 Ruby 有了一定的了解後再學 Rails 有事半功倍的效果,同時也不會那麼有挫敗感。
ruby入門中文書的話,可以看《Ruby基礎教程》最新版的,然後學Rails的時候可以看《Ruby on Rails Tutorial Learn Rails by Example》,網路上也有很多Ruby on Rails的博客,推薦以系統化的教程,比如百度傳課基於Ruby平台的全棧式企業級自動化測試
麥子學院ruby開發_ruby學習_ruby開發視頻教程從入門到精通
先聲明一下,我是一個書迷!書籍能系統這裡相關的內容,把知識梳理地更系統、更完善!所以,我的答案是讀幾本書。詳情如下:
- 松本行弘的編程世界——這本書我在讀,是松本行弘對編程的思考,同時也講述的Ruby設計決策。我是一個Java程序猿,看了這本書,對編程有一種觸類旁通的感覺。推薦!
- Agile Web Development with Rails——目前最新的是第四版,對應的中文版也出版了。不過,看來書評,貌似翻譯的很爛。網上有英文版的,可以直接下載下來看看。
- Ruby for Rails——作者David A Black是ruby社區最資深的大佬之一。這本書的特色是專門針對rails用到的ruby知識進行剖析,很好的rails程序員進階之書。(這是「肉餅」范凱的推薦語)吐槽一句,這本書從出版到現在似乎沒有「升級」過,所以,D瓜哥個人猜測內容也許有點陳舊。網上也有英文版,喜歡的自己找找。
- Rails Recipes——作者Chad Fowler也是ruby社區最資深的大佬之一。這本書列舉了100多個rails實戰的各種問題的解決方案,適合在你用RoR開發項目的時候,碰到相應問題去尋找相應的最佳實踐。(這是「肉餅」范凱的推薦語)這本書最新版是Rails 3版。網上已經有英文版了,可以自己去找找。
另外,再說明一點。第一本書是我自己看過的,覺得不錯。後三本書是「肉餅」范凱的一篇博文中推薦的。原文地址是:http://robbin.iteye.com/blog/58287
另外,D瓜哥最近開始學習Ruby,感覺真是很好很強大,很帥很牛叉!會把我覺得不錯的內容寫成日誌,發布到我的博客上的。敬請關注我的博客:"地瓜哥"博客網。
希望對提問者和需要了解這方面內容的朋友有所幫助!
1. learn ruby hard way 做一遍
2. Ruby on Rails 教程 做一遍
3. Ruby on Rails 指南 看一遍
4. Done。開始做自己的項目。
你學Rails,肯定是為了做個網站之類的(不然你學他單純為了了解的話,就看書吧,看完就忘的差不多了)。所以,你先山寨一個簡單的,比如做個簡單的微博。然後,你開始看Agile Web Development with Rails,跟著做,每當明白一點,就把自己的微博完善一點。這樣才能邊看書邊思考邊動手。這是學起來最快的方式
rails網上有很多快速搭建的demo, 比如15分鐘寫一個博客之類的, 可能潛意識裡會給新用戶一個簡單的映像, 實際上絕非如此.
首先 rails 整合了web 頁面開發的方方面面, 包含的技術有: ruby語言, rails框架, erb/haml/slim模板引擎, 第三方gem等等. 還不包括css,html,js, coffeescript等前端的技術. 這些東西還是得一步一個腳印才能學好.
真正讓rails學習路徑陡峭的, 我覺得有以下方面:
1, rails 的思想是做一件事情要有一個最佳實踐. 對於初級開發者來說, 有很多規則需要去記牢和理解, 比如 ruby 代碼的推薦寫法, 查詢的寫法, 緩存的使用等.
2, rails 的測試開發, 我估計很多初級用戶可能會第一次接觸這類開發模式.
3, 第三方gem, rails的強大離不開第三方gem, 由於ruby是非常容易開發領域語言(方言)的. 這是優點, 不過反面也代表了需要學習gem特定方面的一些語句用法.
http://www.yangzhiping.com/tech/Learn-to-Program.html 我覺得如果你想迅速入門就看這個吧
如果讓我回頭來學一次:
先學那本日本人寫的RUBY學習的書:RUBY Programming 什麼什麼的。然後偶爾看看創始人寫的:RUBY編程語言。
然後上手學rails:http://ruby.railstutorial.org 跟著這個網站做一遍,別看書了。現在的書都是基於RAILS 2.x的,基本都過時。我感覺敏捷那本滑板書沒有這個網站寫得好。
然後去找xdite
做他的作業,或者自己搭一個論壇博客...然後你就愛幹啥幹啥,ror就是一個工具而已了。
這就這樣學習,沒啥技巧,多花時間,少想其他的。
以自己血的教訓忠告你一句話:
千萬不要在windows上配置和使用ror, bug太多,傷不起!
和學任何東西一樣,多看書多實踐。興趣是最好的老師,趁你粉它的時候抓緊操練吧。
推薦看http://www.railscasts.com上面的casts,非常有幫助。
學習Rails的話,建議還是先從Ruby開始,畢竟Rails是基於Ruby的。
可以參考這裡的視頻課件, Ruby on Rails高級開發課程 和 Ruby高級開發課程,相信對你有幫助看 Ruby on Rails Tutorial: Learn Rails by Example 系列視頻教程。
http://railstutorial.org/
本人也是在接觸互聯網之後萌生了自學編程的想法,在知乎上搜索之後,發現http://www.codecademy.com是很好的自學網站,提供多種語言的學習課程,當時看到ruby的介紹寫著friendly to beginner,就選擇了ruby。目前自學了一個月,課程完成了56%,目前感覺很不錯,學起來不累而且非常生動,遇到問題時網站本身也有論壇提供討論,身邊的一些coder也能給我一些指點。有興趣的朋友可以上去看一下,只可惜目前只有英文版本,對我這種編程菜鳥來說,許多概念和專業辭彙理解起來會比較費勁,所以多請教多交流還是關鍵吧
看到大家寫了這麼多字的答案,我都不好意思寫了,因為我的答案很簡單:我教過很多人學ruby,我也可以教你學ruby,並且希望看到更多的人喜歡上它。
我也是Rails初學者,但有Django、Flask和PHP經驗。
我認為Rails的門檻相對高一些,但如果下面這些對你都不在話下,那麼就可以實現快速學習;不然還是要按部就班。
- 相比PHP隨便找台機器就能寫,Ruby雖然跨平台,但對Windows不太友好,一般需要Mac或者Linux。
- Rails資料相對少,中文資料更少,而且Rails的特點就是更新快,要跟進最新就要讀官網資料。
- Rails部署是個劣勢。PHP直接FTP扔上去就可以,Rails雖然現在也有了方便的部署平台,但終究麻煩一些。一般要需要結合git。
- Rails這個龐大的框架包括了太多的理念和實踐。而這些東西如果以前沒有接觸,會有種overwhelming的感覺。
推薦閱讀:
TAG:Ruby | RubyonRails | 如何學習X |