下一章:生態圈及簡介 →

寫在最前面 - 這是一本入門書!

為什麼要寫這本書

Ruby on Rails(本書將簡稱之 Rails)是一個非常具有生產力的網站開發框架,透過 Rails 本身的設計以及大量的第三方套件,可以很快的就把網站應用程式的雛型做出來,許多網路新創圈的朋友選擇它來打造產品,先很快的把產品雛型做出來,放到市場上試試水溫。

不管是 Ruby 這個程式語言或是 Rails 這個網站開發框架,背後都隱藏了許多的細節,雖然好像感覺很好寫,但其實並不太好學,在上手之前的那段路如果沒有適當的指引,這條路會走得有點辛苦,特別是對完全沒有技術基礎的新手來說難度更高。我自己是醫學院畢業,身為不務正業的非資訊科班生,我完全可以體會新手在這條路上會吃哪些苦頭(因為我自己就是這樣長大的)。因為所有的技術都得自己想辦法摸索、研究、翻手冊、翻原始碼,所以也更知道新手在學習的時候通常在哪邊會跌倒、踩到地雷。在近幾年五倍紅寶石程式教育機構以及國內各大專院校的課程教學中,觀察、整理出新手容易卡關的地方,希望這本書可以幫大家快速的度過新手的撞牆期。

我記得我在 2007 年的時候買了第一本 Ruby 的參考書,當時看完之後就只覺得 Ruby 這個程式語言的語法很有趣,但平日公司的業務用的是 ASP 跟 PHP,我不知道這個在我日常工作上可以做什麼。直到 2009 年接觸到了 Rails 之後才發現,原來 Ruby 加上 Rails 之後可以讓開發網站變得這麼有趣,而且可以這麼有生產力,能讓我在短時間之內就把想做的東西做出來,有更多的時間可以玩樂、做自己想做的事(或寫更多的程式..)。

因為本身個性的關係,在學習新事物的過程中如果有疑惑的地方,總是希望可以搞懂為止,否則知其然而不知其所以然是沒辦法真的把一門技術搞懂。也因為這樣,本書在撰寫的時候也發揮了我愛囉嗦的專長,即使是簡單的小地方,也希望可以解釋的夠清楚。期望不只可以教大家如何寫(How),也能讓大家知道在寫什麼(What),以及為什麼(Why)要這樣寫。

至於 Rails 的優、缺點就先不多提了,如人飲水,冷暖自知,還請各位自行來體會 Rails 有趣(或不有趣)的地方,這也是本書最主要的目的。

雖然本書是以中文撰寫,但程式語言的專有名詞大多還是英文,所以這些名詞或是常用的口語我還是會盡量使用英文表示。一來是大家的翻譯可能不一樣,例如〝Default〞在繁體中文翻做「預設」,在簡體中文則是翻譯成「默認」;二來也是因為有些英文字翻譯了反而沒有原文貼切,例如〝Context〞、〝Meta Programming〞等字。最重要的一點,是希望各位能儘早習慣這些英文,因為實際在業界工作時,很多第一手的資料都是英文的,儘早習慣英文對大家絕對是有幫助的。

很多人會比較各種程式語言或開發框架的優劣,比較誰的效能好、誰的功能強大、程式碼可讀性高等等,但這種「戰爭」是戰不完的,而且本身也沒有太大的意義,更何況我個人對不精通的語言我也沒那個份量來批評。在本書中或多或少會提到「我當初在某些程式語言是如何實作,但在 Ruby/Rails 是這樣做的」之類的比較,這並非比較誰優誰劣,僅為了給曾經寫過該程式語言的朋友們能更輕易的體會我想表達的意思。

再次強調,各種程式語言或工具之間並沒有絕對的好或不好的問題,只有適不適合的問題。只要能解決問題的,不管是冷門或熱門,都是好的工具。

誰適合本書

不管您是新手或老鳥,只要你對 Rails 這個網站開發框架有興趣都適合。如果您本身已經有其它程式語言或 Web 開發的經驗,在閱讀本書的前半段應該會相對的比較輕鬆。

本書內容

會包括以下內容

  • Ruby / Rails 簡介、環境安裝。
  • 套件安裝、使用
  • Rails 的專案架構
  • 其它實用功能,例如 Email 寄發、工作排程、購物車、訂單處理、金流串接等

不會包括以下內容

  • 不會教你怎麼寫 HTML/CSS/Javascript。
  • 不會教你怎麼使用 Git。
  • 不會教你所有的 Ruby 語法或是進階的 Meta Programming 技巧。

因篇幅有限,沒辦法包山包海,所以以上內容不會收納在本書內容裡,且上面所列的每一個主題,都可以是獨立的一本書,建議再找更專業的參考書籍。

你需要準備什麼?

  • 一台可以工作的電腦(不一定要 Mac)
  • 一款順手的文字編輯器
  • 這樣就夠了 :)

如何使用這本書

本書主要分以下幾部份:

  1. 開發工具、環境安裝篇
  2. Ruby 基本篇
  3. Rails 入門篇
  4. 實作篇

雖然每個章節多少都還是會跟前面的章節有相關,但也不一定要依序從第一章開始閱讀(當然這也是一種方式),可依自己需要跳過部份章節。

軟體版本

隨著時間,Ruby 跟 Rails 的版本可能會有些微不同,本書在撰寫當下所使用的版本為:

  • Ruby 2.4.1
  • Rails 5.1.1

程式碼慣例

在開發 Ruby/Rails 程式的時候會有很多機會需要在終端機(Terminal)模式下輸入指令,例如:

$ ruby hello.rb
hello, world

或是這樣:

$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]

在最前面的 $ 符號是系統提示字元,意思是告訴各位這是一個需要在終端機環境下自己手動輸入的指令,而下一行則是這個指令執行的結果。實際在輸入指令的時候請不要跟著輸入 $,不然會出現 command not found 的錯誤訊息。

有時候你可能會看到這樣寫:

>> puts "Hello, Ruby"
Hello, Ruby

這裡的 >> 則是表示這行指令是在 irbrails console 的環境下輸入的,同樣也不需要跟著輸入這個 >> 符號。另外,有時會在程式碼的結尾加上一些註解,例如:

def calc(n)
  n * n
end

puts calc(4)    # => 16

在最後一行加上去的註解是說明或是表示這行程式的輸出結果,各位可以不需要跟著輸入。最後,Ruby 目前有好幾種分支實作品(例如 JRuby、mruby、IronRuby 等),各分支實作品也有好幾種版本,如果沒有特別註明,本書中提到的 Ruby 指的都是 CRuby,也就是最常見的 Ruby 版本,目前最新版本是 2.4.1。

程式範例及錯誤更正

本書所有的程式碼在 Ruby 2.4.1Rails 5.1.1 的環境下均已測試可正常執行,部份範例可在我的 GitHub 帳號取得。但隨著 Ruby 及 Rails 的版本演進,或是作業系統的不同,範例程式執行的結果可能會有些微的差異(甚至是錯誤)。若有任何問題,或是有哪邊寫錯,還請各位先進不吝留言或來信、留言指教。

最後,希望各位會喜歡本書,一起來學習、體驗 Rails 這個極富生產力的網站開發框架 :)

關於我

高見龍,這看起來有點像武俠小說的名字不是筆名,而是父母給我的本名。目前是兩個小朋友的爸爸,是個愛寫程式而且希望可以寫一輩子程式的阿宅。

若發現本書內容有誤或有任何問題,歡迎直接來信,或到本書網站 https://railsbook.tw 留言 :)

下一章:生態圈及簡介 →

Comments