Link Search Menu Expand Document

Ruby on Rails 實戰聖經

關於本書

我是 ihower,本書介紹 Ruby on Rails 這套開放原始碼的網站開發框架。

內容涵蓋了 Ruby on Rails 大部分的常用功能以及介紹,本書拆分成數個部分:

  • Part 1 為入門導覽,實作一個活動管理系統。這部分有二十六集的教學系列影片 (Youtube)涵蓋 Part1 的所有內容。影片是我在 ALPHA Camp Bootcamp 時期拍攝的(當時的 Rails 版本是 4.2)。

  • Part 2: 是我在北京全棧營時期製作的 Step by Step 教材(當時的 Rails 版本是 5.0),現已免費開放(感謝 xdite)。當初是針對中國大陸的學生寫的簡體版本,這裡重新編排和更新內容。

  • Part 3: 深入介紹 Rails 的各種元件和進階主題

  • Git 版本控制: 現代軟體開發必備工具

  • 應用程式開發基礎: 給初學者的基礎電腦科學知識,包括程式語言、資料庫、網路概論等等內容。

由於本書寫作時間跨越 Rails 3.2 至 Rails 6,因此有些截圖和最新版本不同,也不保證所有步驟能夠相容於最新版本,若有已知問題會補充說明。另外內容有些繁簡電腦術語(對照表)混用,還請多多見諒。

勘誤請來信 ihower@gmail.com

關於作者

張文鈿,網路上的代號為 ihower,曾擔任日本 RubyKaigi、中國 RubyConf China、台灣 RubyConf TaiwanCOSCUP 歷屆講者。2006年開始接觸 Rails,從此愛上 Ruby 這個極具豐富樂趣及高生產力的程式語言,並於2018年成立愛好資訊科技有限公司

歡迎追蹤 Twitter 帳號 @ihower 和部落格 https://ihower.tw

訂閱電子報

歡迎訂閱 Rails 實戰聖經,不定時發送。

Telegram 社群

歡迎加入愛好 Rails 公開群,分享討論 Ruby on Rails 相關技術。

打賞支持

若覺得本書的內容對您收穫很大,歡迎打賞支持:

目標讀者

本書的目標讀者為網站開發工程師(Web Application Developer),比較不適合完全沒有網頁開發經驗的朋友,在學習 Rails 前,最好對以下知識有基本認識:

  • 基本的程式設計能力,了解什麼是變數、控制流程、迴圈、函式、陣列等等
  • HTML/CSS 網頁設計
  • 對網路通訊協定 HTTP 有基礎認識
  • 對 RDBMS 關聯式資料庫和 SQL 語法有基本了解
  • 基本的指令列操作 (CLI: Command line interface),Unix-like 作業系統為佳

如果您有 PHP/MySQL、Node.js、ASP、JSP 等網頁應用程式開發經驗,相信這些對您應該不陌生。 若您沒有這些經驗知識,可以先參考本書的應用程式開發基礎章節。

本書想要涵蓋的重要新功能,但還沒空寫

  • Active Storage: Rails 內建的檔案上傳儲存功能
    • Rails Guides: Active Storage Overview
    • 若上傳的檔案是公開,無需登入就可下載的,則不建議用 Active Storage,改用 carrierwave 會比較簡單。若你上傳的檔案是需要登入檢查權限才能下載的,比較適合用 Active Storage 方案
  • Action Text: Rails 內建的 Rich Editor
    • 搭配 Active Storage 可做檔案上傳
    • 但他的設計特點是用獨立的 DB table 來存放文字資料,而不是在本來的 model 用一個欄位存。例如你有 Post, Article models,都想加個 description 資料,但他的設計是都會存在 action_text_rich_texts 這個 table 裡面,而不是放在 posts, articles table 的 description 欄位。此設計在不同情境下有好有壞。
  • Zeitwerk autoloading 自動載入模式

本書不涵蓋的功能

筆者認為用不到或不好用的功能:

  • Webpacker: 與 Rails 整合在一起的 webpack 前端打包工具
  • Hotwire: 包括 Turbo 和 Stimulus
  • Encrypted Credentials: 原本的 secrets.yml 方法比較簡單好用
  • Active Record 的 has_secure_token: 用 Devise gem 就好了
  • Active Record 的 enums: 資料就用 string 儲存就好了,可讀性比較高
  • Action Mailbox: 很少會做收信功能
  • Action Cable: 開發起來是蠻方便的,但是 Ruby 伺服器不太適合做 real-time 應用,因此不敢上 production 實用。除非 WebSockets 伺服器要換成用 AnyCable
  • Rails 內建的 Testing: 本書和大多數人都會改用 RSpec 來寫測試
  • Routing Concern, Shallow 用法: 不必要,沒用到
  • ActionController 的 Live Streaming: 就是 Server-Sent Events 方案。但是要做 real-time 的話會優先考慮更多人用的 WebSockets 方案。
  • Action Mailer Previews: 本書改用 letter_opener gem
  • Rails API-only 模式: 這麼做就浪費 Rails server-side rendering 的強項了
  • Multiple database support: 沒用到

線上參考資源(英文)


Copyright © 2010-2022 Wen-Tien Chang All Rights Reserved.