iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 1
6
Modern Web

為你自己學 Ruby on Rails系列 第 1

第 00 章 - 寫在最前面

本系列文章內容同步發佈於這裡,若有任何問題或錯誤,都歡迎直接到 GitHub 上發 PR 修正,或是在這裡留言討論。


寫在最前面

為什麼要寫這個

Ruby on Rails (以下將簡稱 Rails) 是一個非常具有生產力的網站開發框架,透過 Rails 內建的設計以及大量的外部第三方套件,真的可以很快的就把一個網站的雛型做出來,所以很多創業圈的朋友會選擇使用它來打造產品,原因也就是因為它可以很快的先把東西做出來,放到市場上試試水溫。

不過老實說,Rails 隱藏了太多的細節,所以用起來很好用,但其實不太好學,在上手之前的那段路會走得滿辛苦的,特別是對完全沒有程式背景基礎的新手來說難度更高。

我自己是醫學院畢業的學生,身為非資訊相關科班生,不務正業,在資訊這條路上吃了不少苦頭。

但也因為是非科班畢業,所有的技能都得自己想辦法摸索、組合,所以也因此比較知道新手在學習的時候通常在哪邊會跌倒、踩到地雷。在近幾年五倍紅寶石的教授課程中,更觀察、整理出新手容易卡關的點,希望這系列文章可以幫大家快速的度過新手的撞牆期。

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

也許是因為個性的關係,對於在學習新事物的過程中如果有疑惑的地方,總是希望可以搞懂為止,否則會有種空虛的感覺。也因為這樣,這系列文章在寫的時候也發揮了我這人愛囉嗦的專長,即使是簡單的小地方,也希望可以解釋的夠清楚。期望可以不只可以教大家如何寫 (How),也能讓大家知道在寫什麼 (What),以及為什麼 (Why) 程式要這樣寫。

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

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

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

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

誰適合這些文章

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

會包括哪些內容

從 Rails 的安裝、基本介紹及其相關的應用。

不會包括哪些內容

篇幅有限,沒辦法包山包海,所以以下內容不會收納在裡:

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

為什麼不? 原因為簡單,因為上面所列的每一個主題,都可以是獨立的一本書。

你需要準備什麼?

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

程式碼慣例

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

$ ruby hello.rb
hello, world

或是這樣:

$ ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin14]

在最前面的 $ 符號是系統提示字元,意思是告訴各位這是一個需要自己手動輸入的指令,而下一行則是這個指令執行的結果。實際在輸入指令的時候請不要跟著輸入 $,不然會出現 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.3.3。

程式範例及錯誤更正

本文所有的程式碼在 Ruby 2.3.3Rails 5.0.0.1 的環境下均已測試可正常執行,檔案可直接到 GitHub 上取得。

隨著 Ruby 及 Rails 的版本演進,或是作業系統的不同,範例程式執行的結果可能會有些微的差異(甚至是錯誤)。若有任何問題,或是有哪邊寫錯,還請各位先進不吝留言或來信、留言指教。

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


本系列文章內容同步發佈於這裡,若有任何問題或錯誤,都歡迎直接到 GitHub 上發 PR 修正,或是在這裡留言討論。


下一篇
第 01 章 - Ruby 之生態圈及簡介
系列文
為你自己學 Ruby on Rails30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
海綿寶寶
iT邦大神 1 級 ‧ 2016-12-17 20:56:41

有神快拜
/images/emoticon/emoticon32.gif

有神快拜 + 1
文章很讚!

我要留言

立即登入留言