Rails 自學之路-Rails 簡介與自學重點

寫網站有很多技術可以選擇,Ruby on Rails 是當前很熱門的選項, Twitter、GitHub、BaseCamp 等等著名的網站都是以 Rails 起家的。

除了 Rails,目前在創業圈很火紅的建站選項還有 node.js 等,不過因為 ALPHA Camp 沒有開班 隔行如隔山,我也不會這些技術,本文只好忍痛割捨這些厲害的技術。

什麼是 Rubyon Rails

Rails 是一個以 Ruby 這個程式語言為根基的建構網站的 framework。

framework 通常中文直翻「框架」,但我個人覺得這個翻譯頗不知所云。

我自己是把 framework 理解成「一套架構」。一套架構幫開發者規範好哪些事該怎麼做(例如哪些檔案應該固定放在專案的哪個資料夾下),並提供一些工具(程式指令)幫助開發者快速做出符合這些規範的事情。

用 framework 開發專案的好處:

  • 因為 framework 幫你把重要的事情都規範好了,假如同一個團隊中的開發人員都有照著規範做,則大家就有基本的合作默契,可以省去不必要的溝通成本。例如 在 Rails 的架構下,設定相關的檔案都會放在 “config” 這個資料夾內。同事要查你負責的設定檔中寫了什麼時,自己就知道要去 “config” 下面找,而不會出現「欸欸,你昨天寫的那個設定檔是放在哪啊?」這種對話。
  • 承上,因為事情都規範好了,即便你沒有同事(我相信很多創業家一開始沒有同事),你日後也可以很輕易的回想自己當初做了什麼、在做什麼。軟體工程師常常會遇到的尷尬是,隔了一個月後看自己一個月前寫的程式,會搞不懂自己一個月前到底在寫什麼鬼,於是就會有這種心情:
  • 再承上,因為事情都規範好了,開發中遇到問題時,可以比較快的分解問題、縮短除錯時間。例如你看到錯誤訊息發生在 “config” 資料夾下,就知道是設定檔出了問題,而不是你的程式碼寫爛了。
  • framework 會很 nice 的準備好工具(指令)以幫助你符合規範,這些指令都可以幫助工程師縮短開發時間。
  • 當然,以上好處都是在「有遵守規範」的前提下啦。許多天才工程師雖然用了 framework,但自己另闢蹊徑,實際在開發專案時並沒有遵守規範,那就是另一條筆者參不透的道路了。

    簡言之,程式語言(Ruby)就像一種武器,framework (Ruby on Rails)就像是以這個武器為基礎的武功秘笈。

    秘笈能讓使用者快速發揮武器的威力、一招一式都有章法可循,而 Ruby on Rails 就是以 Ruby 這把寶刀為基礎的武功秘笈。

    如何開始自學

    我覺得對一位自學的軟體開發者來說 ,最重要的能力是快速從海量的網路資源中過濾出自己需要的資料的能力。

    畢竟技術是個無底洞,不可能有學完的一天。重要的不是一位開發者已經會多少,而是這位開發者遇到沒遇過的問題時,能多快的解決。

    可是對初學者來說,常常會遇到「我有問題,但我不知道我的問題是什麼⋯⋯。」的困境,甚至偶爾也會有「我的 code 是在執行我想要做的事沒錯,但我不知道為什麼⋯⋯。」的狀況。

    要解決「不知道問題是什麼」或「不知道為什麼」的問題,首先必須在腦海中安裝好重要的關鍵字

    我當初是看 Rails Guides 和 Ruby on Rails 實戰聖經 開始我的自學之旅。做了基本的練習(Getting Started with Rails)後,就開始寫自己的第一個 prototype。做完 Getting Started with Rails 後,你對 Rails 最重要的基本觀念就會有基本的認識。

    當然,「有基本的認識」和「可以寫出東西」完全是兩回事。在實際開發 prototype 的過程中,你大概會遇到很多不確定或不知道的東西,這時候請回頭查 Rails Guides 或實戰聖經。因為你已經有基本的觀念,很容易歸納出你的問題大概是什麼類型、關鍵字是什麼,所以可以快速找到自己需要的章節(Mac 上請愛用 command + f; windows 和 linux 上請愛用 ctrl + f)。

    求知於世界

    用你的基本知識查閱 Rails Guides 或實戰聖經,可以解決許多問題,但一定還會遇上這兩者都沒有提到的問題,或是你不理解的 bug。

    此時請直接拿相關觀念(關鍵字)或錯誤訊息去 Google,記得搭配 Google 推薦的關鍵字組合。搭配 Google 推薦的關鍵字,通常比較能有效的找到你真正需要的東西。

    假如你習慣用英文搜尋(強烈建議要用英文搜尋,資料比較多、比較新),你可能常常會被 Google 導到 StackOverflow 。這是個專門在討論技術的英文網站,上面臥虎藏龍、高手如雲,內容都很有品質,而且很多範例程式碼都可以直接複製貼上,往往可以救工程師於水火,可是說是技術江湖中的續命老蔘。

    另外,很多工程師會在個人部落格上分享開發經驗,也有一些專門在討論技術的部落格,這兩者往往也都很有參考價值。

    用上述方法,我個人大約 2 個月就從無到有做出我的第一個網站。

    不過我開始學 Rails 時,已經會基本的 programming 了,假如你還不會任何 programming,你可能要先花一兩週的時間學 Ruby。

    你可以從 Codecademy 這個專門在教 coding 的網站上學 Ruby,Codecademy 最近也推出 Rails 的教學,也很值得參考。

    結論

    Rails 是個以 Ruby 為基礎的 framework,用 framework 開發有很多好處。

  • 對自學者來說,重要的是能多快的解決新遇上的問題,而不是現在已經會多少。
  • 要快速解決新遇到的問題,需要自己知道一些基本的關鍵字並搭配 google 推薦的關鍵字組合,搜尋浩瀚網海中的有用資源。
  • Photo Credit: Andrew