Ruby on Rails 自習手冊:邁向鐵道工人之路

簡煒航

  • 出版商: 博碩文化
  • 出版日期: 2015-02-25
  • 定價: $300
  • 售價: 7.8$234
  • 語言: 繁體中文
  • 頁數: 224
  • ISBN: 9862019948
  • ISBN-13: 9789862019948
  • 相關分類: Ruby
  • 立即出貨(限量) (庫存=4)

買這商品的人也買了...

商品描述

<內容簡介>

鐵道工招募條件:

熟悉指令介面操作
具程式設計知識:RubyRake
具網頁前端知識:HTMLCSSJavaScript
具資料庫知識:RMDBSSQL

若符合以上應徵條件,恭喜您歡迎進入簡單、易用又好學的Rails世界。


工作指南:

開發環境

你可以選擇 RadRails RubyMine,如果你個人偏好使用 IDE,也有其他輕量級編輯器選擇:TextMateSublime Text[Vim] 

終端機

Unix-like 作業系統可以跳過此部分,如果你用的是 OS X 推薦使用 iTerm2 Windows 上建議安裝 Rails Installer預設環境,或者使用虛擬機如 VMWare Virtual Box模擬 Unix-like

瀏覽器

ChromeFirefoxSafariIE都有提供內建的開發者工具值得學習使用,例如模擬手機瀏覽、JavaScript 中斷點、程式碼優化與分析、所見即所得 CSS 修改等。


新手鐵道工Q&A

Ruby 就是 Rails嗎?
Ruby Rails 是兩樣東西,且它們除了定位截然不同、作者也不同(國籍差很多),Ruby 是程式語言,Rails 則是由 Ruby 撰寫的網站開發框架。

rbenv RVM 哪個好?
他們兩者都是為了解決特定的問題,用了不同的方法而生的不同的工具。如果你想要簡潔的解決方案,使用 rbenv,如果你想要更多功能,用 RVM 也不錯。

Production 環境適合安裝 rbenv RVM 一類的 Ruby 版本控制工具嗎?
不建議這麼做,版本控制主要是為了讓我們在 staging 環境或本地開發時,可以方便切換版本以利進行各種測試,除非你真的清楚自己在做什麼。


鐵道工的工作哲學:

不要重複你自己Don't Repeat Yourself
旨在軟體開發中,減少重複的信息與程式碼。這可以幫助你的專案更易於維護與擴展,人說樹大必有枯枝,程式多就易孳生臭蟲,可以少就不要多。

慣例優先於設定Convention Over Configuration
用一些簡單的常規與慣例(convention)來取代繁瑣的設定(configuration),白話解釋是「養好習慣,省下麻煩」,簡化開發的流程與減輕開發者的痛苦。


一位資深鐵道工的經驗談:

這四年來,筆者從 Movimpact 微電影平台(已停止運作)、腦袋有動工作室(brainana.com)一路到五倍紅寶石股份有限公司(5xruby.tw)的創辦,有趣的是這些單位的名字湊巧都是筆者命名的,偶爾筆者也懷疑到底是隊友寬宏大量,抑或筆者說不定是個命名的天才?
五倍紅寶石是由幾位台灣 Ruby 社群的朋友共同成立的一家公司,希望透過教育訓練、企業培訓等講座,將 Ruby 推廣到校園、企業、開發者。提供的服務包括:程式教育訓練、企業技術培訓與諮詢、活動場地租借與專案委托製作。

筆者自五倍紅寶石開業以來主力於 Ruby on Rails 的教材編寫、課程設計,並且在校園、公司企業中開設培訓課程。同樣的主題(Ruby on Rails),也因不同的教授對象而特別設計教材,範圍從高中剛畢業的大一新鮮人,到企業中的工程師。本書也是在這樣的環境下撰寫而成。


Java Ruby
至於筆者最後為什麼選擇了 Ruby ?其實那時寫了 Java 4 年的時間,曾經陷入其可跨平台、有豐富函示庫與應用的迷湯之中,認為自己可以用 Java超越任何事物,然後看到一本書就叫「超越 Java:探討程式語言的未來」。如果你對這本書有印象,他的書名掛名 Java,實則偷塞 Ruby,筆者就這樣上當了。

序的開頭長這樣:
Java 已經存在超過十年了,這段時間,它的成就非凡,它徹底改變我們寫軟體的作法和想法。但是 Java 已顯老態,該是時候了,我們得想想未來接班人是誰。- Bruce Tate
 

而筆者就這樣的,從被這樣的序給吸引住,到最後合上書頁後的第一個念頭:「不妨給 Ruby 一個嘗試吧?」(這本書很不錯的,作者 Bruce 寫過「輕快的好 Java」)

Ruby 好快,也好快樂
還記得那時筆者從 C 跳到了 Java,從此有了更多喝茶的時間,這幾年開始寫 Ruby,筆者已經有時間種茶葉了。邪神有云:「天下武功,無堅不破,唯快不破」。但論效能之快大概也沒語言快過 C 與組語了,可是 Ruby 之快不在此面,而在其彈性與簡潔,適合用於 meta programming DSL。動態編程有效的縮短了開發的時間。如果要給Ruby 一個評價,筆者認為 Ruby 就是個什麼都能做的魔法程式語言。希望這本書也能帶給你相同的感受。

本書的撰寫對象為略懂網站前端開發與關聯式資料庫的人,主要專注在Rails 的框架介紹與使用,採 Ruby 2.2 Rails 4.2 版。這不是一本教授 Ruby的書,如果你對 Ruby 不熟,不建議直接從本書看起。你如果常聽人說 Rails 簡單、易用又好學,但那其實是建立在使用者已具備許多背景知識的前提下才成立的,這意謂 Rails 不是新手的玩具。想直接跳過 Ruby 直接學 Rails 其實是很可惜的一件事。並不是說非要這些背景知識不可,而是當在沒有背景知識的加持之下,硬去挑戰像 Rails 這樣複雜的架構,學途可能會非常吃力。而在你閱讀本書以前,建議先確認自己已經具備以下知識:


Q1 http://localhost:3000 這段網址所代表的涵義為何?

Q2以下有一段 HTML,解釋 method 屬性的用途。

<form action="http://www.google.com/search" method="get">
<input name="q" type="text">
<input type="submit">
</form>


Q3以下 HTML 會使瀏覽器送出幾次請求?

<!DOCTYPE html>
<html>
<head>
<title>Title</title>
<link rel="stylesheet" href="/css/main.css">
<script src="/js/mian.js"></script>
</head>
<body>
<img src="/img/logo.png">
</body>
</html>



Q4 SQL從以下兩張資料表(postsusers)找出Tony的所有文章。


-------------------
|     posts 資料表      |
-------------------
| id | title user_id
-------------------
|  1 | Lorem 1 |  2
|  2 | Lorem 2 |  3
|  3 | Lorem 3 |  3
|  4 | Lorem 4 |  1
-------------------

------------
|  users 資料表  |
------------
| id | name
------------
| 1 | John
| 2 | Mary
| 3 | Tony
| 4 | Jason
------------


Q5以下 Ruby 程式碼,三者間的差異?


{"name" => "Weihang", "age" => 24}
{:name => "Weihang", :age => 24}
{name: "Weihang", age: 24}



Q6以下三個 Ruby 方法的呼叫,各別被傳入的多少個參數?


before_action :set_post
get :about, :contacts, :faq, :sitemap, controller: :pages
resources :posts, only: [:index, :create, :update]

 



以上的答案分別為:

A1 協定://主機名稱:閘道
A2 method 屬性用以決定該表單送出的請求是使用什麼 HTTP 動詞
A3 4 次:HTMLJSCSS、圖片
A4 SELECT * FROM posts WHERE user_id = '3';
A5 後兩者相同且比第一個的寫法效能要好
A6 152


如果都能正確對答,表示已經準備好可以開始學習 Rails
若你發現本書讀來吃力,則先從較基礎的書開始著手,加強知識薄弱的部分。

 

<章節目錄>

CHAPTER 01 前言
1-1 對網頁的了解
1-2  SQL 的了解
1-3  Ruby 的了解

CHAPTER 02 行前準備
2-1 IDE
2-2 編輯器
2-3 終端機
2-4 瀏覽器
2-5 安裝 RubyRails
2-5-1 Mac UNIX-like
2-5-2 Windows

CHAPTER 03 啟程
3-1 上網大學問
3-1-1 瀏覽器 = 排版引擎 + 下載器
3-1-2 HTTP 的請求與回應
3-2 第一個 Rails 專案
3-2-1 rails new APP_PATH [options]
3-2-2 rails server
3-2-3 localhost