หนังสือ/ebook/วีดีโอ สอน Ruby on Rails สร้าง API ตั้งแต่เตรียมเครื่อง ยันเขียนเป็น
Tags: ruby, rails, thai
Published: 2020-01-27 05:40:14

---
title: หนังสือ/ebook/วีดีโอ สอน Ruby on Rails สร้าง API ตั้งแต่เตรียมเครื่อง ยันเขียนเป็น
published: true
description: ใครสนใจเขียน Ruby on Rails ลองเข้ามาอ่านดูครับ
tags: ruby,rails,thai
---

<button name="button" type="button" class="crayons-btn mr-2 whitespace-nowrap">Test</button>

สวัสดีครับ ผมศักดิ์ เปิดบริษัท Softwarehouse มากว่า 10 ปี ใช้ Ruby on Rails มาประมาน 8 ปี รับเขียนโปรแกรมมามากมายหลายภาษา/Framework ครับ

ข้อมูลอื่นๆเกี่ยวกับหนังสือ สามารถดูได้ที่
[soontobeprogrammer.com](https://soontobeprogrammer.com)

## ผมแต่งหนังสือเสร็จแล้วครับ 
[กดที่นี่เพื่อซื้อหนังสือผ่าน shopee](https://sakko.dev/ror-book)
[กดที่นี่เพื่อซื่อ ebook ผ่าน Leanpub](https://sakko.dev/ror-ebook)

![เกิดอยากจะเป็นโปรแกรมเมอร์ สารบัญ](https://soontobeprogrammer.com/books/ror/toc.png)

เนื้อหาของหนังสือมีดังนี้ครับ

- บทท่ี 1 - เตรียมเครื่อง
  - rvm / Install Ruby
  - nvm / Install NodeJS (optional) Ruby on Rails
  - Text Editor
  - Postman / Hoppscoth
- บทท่ี 2 - สร้าง Project
- บทท่ี 3 - Folders และ Files
  - root Folder
  - config Folder
  - app Folder
  - Files อื่นๆ
- บทท่ี 4 - ภาษา Ruby
  - Numbers
  - String
  - Comment
  - puts และ print
  - Array
  - Hash
  - if / else / elsif / end
  - Boolean
  - Case (switch)
  - Loops (for ,while, each)
  - map
  - implicit / explicit return
  - Code Block 30 Class / Object
  - Subclass
  - Modify Build-in Class
- บทท่ี 5 - Controllers
  - Static API [GET]
  - Request with curl
  - CORs / Hoppscotch
  - POST/PUT/PATCH/DELETE
- บทท่ี 6 - Model / Database
  - ActiveRecord
  - Model / Table Design
  - Code First Database Migration
  - การแก้ไขโครงสร้าง Database
  - การเขียนข้อมูลด้วย Rails Console
- บทท่ี 7 - CRUD REST API
  - New project
  - REST APIs
  - Generating Controllers
  - GET users#index
  - POST users#create
  - GET users#show
  - PUT/PATCH users#update
  - DELETE users#destroy
- บทท่ี 8 - Scaffolding
  - rails g scaffold
  - ทดสอบ API จาก scaffold
- บทท่ี 9 - Model Relationships
  - Defining Relationships
- บทท่ี 10 - Sending Emails
  - Mailgun
  - ActionMailer Basic
  - Sending Real emails
- บทท่ี 11 - Errors Handling
  - rescue
  - throwing errors
  - Custom Error Class
  - Catching Errors in Controller
  - Other errors to rescue
- บทท่ี 12 - Authenticating APIs
  - devise gem
  - JWT
  - Model callbacks
  - Sessions Controller
  - Sign up API
  - Sign in API
  - Profile API
  - Sign out API
  - Catching JWT / API Errors
- บทท่ี 13 - Model Validation
  - Presence
  - Inclusion
  - Length / Number
  - Custom Validation
- บทท่ี 14 - Query Interfaces
  - .find / .find*by*?
  - .where / .where.not
  - Date Query
  - Scope
  - Scope with function
  - Ordering
  - Readonly Object
  - JOIN
  - Eager Load / N+1 Query
  - Selecting Fields to Query
  - Calculations
- บทท่ี 15 - Caching with Rails
  - Installing REDIS
  - Configuring Rails
  - Simple Cache Key
  - Caching Model
- บทท่ี 16 - Delayed Jobs
  - ActiveJob
  - Using with Mailer
- บทท่ี 17 - Uploading files / Images
  - ActiveStorage
  - Upload Image API
  - multipart/form-data
  - Auto Resize Images
  - File Validation
  - Storage Config
- บทท่ี 18 - Model / State Machine
  - AASM
  - States
  - Events
  - Callbacks
- บทท่ี 19 - Unit Test
  - Rails test
  - Test Driven Development (TDD)
  - Fixtures
  - Parallels Testing
- บทท่ี 20 - Searching Database
  - Preparation / Database Seed
  - SQL Search / Ransack
  - SQL Multi-column Ransack
  - ElasticSearch / Searchkick
- บทที 21 - Security / Credentials
  - rails credentials
- บทท่ี 22 - Deploying Rails
  - Server Preparation (Ubuntu)
  - Adding new user to Server
  - Installing Rails / NGINX
  - Deploying Code
  - Nginx & Passenger Config
  - SSL / Let’s Encrypt Config
  - Dockerfile

## สำหรับ Video

ผมพยายามทำและรวบรวมวีดีโอที่ผมทำเอง และ ถ้าเป็นไปได้จะพยายามเอาวีดีโออื่นๆที่เกี่ยวข้องมารวมด้วยครับ (ข้ามไปดูวีดีโอด้านล่างสุดได้เลยครับ สำหรับคนใจร้อน)

[Youtube Channel SaKKosama 🐶 กดติดตามหน่อยนะครับ] (https://www.youtube.com/channel/UC1Jindq-cR4nryXJF2gybbQ?sub_confirmation=1&fbclid=IwAR2hQSaMSUnXp-9uIjFkSSdSucovYHenEOmIpRBnAfyX_yFH5PWO-zSLmQM)

เป้าหมายคือ อยากให้เป็นประโยชน์กับทุกๆคน ไม่ว่าจะพนักงานของผมเอง หรือ จะเป็นคนที่มีความสนใจศึกษา Ruby on Rails และอยากให้มี Developer ชาวไทยหันมาใช้งาน Ruby on Rails กันให้เยอะขึ้นครับ

> <h3>ปล. Web dev.to นี้ก็เขียนด้วย Ruby on Rails นะครับ</h3>

List ข้อดีของ Ruby on Rails

1. Ruby เป็นภาษาที่ สามารถอ่านได้ง่าย เข้าใจง่าย
1. Rails เป็น Framework ที่มี High standard และ Convention ที่ดีมากๆ ดีขนาดที่ทุกๆ Framework พยายามนำไปเปรียบเทียบ
1. คนชอบบอกว่า High Learning Curve แต่สำหรับผม มันขึ้นอยู่กับว่า เริ่มอย่างไรมากกว่า
1. Rails เป็น Framework ที่มีครบเกือบจะทุกอย่างที่ Developer ต้องการสำหรับ Web Development
1. Rails เป็น Framework ที่ทำให้สามารถพัฒนาระบบอะไรก็ตามได้อย่างรวดเร็ว และ สามารถทำการเปลี่ยนแปลง feature ต่างๆ ได้โดยง่าย
1. Rails ตั้งแต่ Rails 5 ขึ้นมา มีการใส่ Test Driven Development ได้โดยง่าย ไม่ว่าจะเป็น Unit test, Integration test ในทุกๆเรื่อง โดยที่มีการกำหนดวิธีเขียนมี standard อย่างชัดเจน
1. Rails มี Security Standard ที่ชัดเจน หากทำตามที่ Framework กำหนด มีความปลอดภัยในการทำสูงมาก
1. Rails caching mechanism ดีมากๆ ไม่ว่าจะเป็น Query Cache, Redis Cache รับรองว่าใช้แล้วจะแปลกใจทำไมภาษาอื่นไม่มี

List ข้อด้อยของ Ruby on Rails ที่คนชอบบ่นกัน

1. หลักๆเลยคือ ช้า... คนบ่นทุกคน แต่มันก็พอๆกะ Python (Django)
1. Scale ยาก เพราะว่ามันช้า มันเลย Require scaling เยอะกว่าคนอื่น
1. พึ่งพา gem เยอะ และอาจจะทำให้ไม่ค่อย Flexible หากเลือกไม่ดี (เป็นเหมือนกันทุกภาษา)
1. Learning curve / Learning Material เอาจริงๆ ผมว่าขึ้นอยู่กะคน

สรุปความคิดเห็นส่วนตัว

- ภาษาที่เขียนง่าย อ่านง่าย จะทำให้ Maintain ง่ายขึ้น ผมเปิดบริษัทมาร่วมสิบปี Maintain Rails เป็นอะไรที่สบายที่สุด แต่ NodeJS เป็นอะไรที่ทรมานที่สุด 
- ภาษาที่เขียนง่าย ทำให้สามารถเขียน function ยากๆได้ง่ายขึ้น ภาษาที่เร็วๆ เขียนไม่ดีมันก็ช้าได้
- Function ไหนอยากให้เร็วขึ้น
  - หาทางทำ Caching
  - Optimize query
  - ย้ายไปทำ Microservice แยก เอาก็ได้

พิมมาเยอะ ใครเห็นด้วยไม่เห็นด้วยก็ติชมได้ครับ จะพยายามปรับให้ดีขึ้นเรื่อยๆครับ
ขอบคุณครับ

- [วิธีเตรียม MACOS Catalina จากเครื่องใหม่ จนพร้อมใช้งาน] (https://dev.to/sakko/how-i-upgrade-my-mac-for-development-in-catalina-macos-33g1)

วิีดีโอ

- [TIPS EP0: เตรียม server Ubuntu Server 18.04 แบบง่ายๆ](https://youtu.be/UxGriOptHp4)
- [Ruby on Rails EP1: สอน Ruby on Rails (Active Record / Models)](https://youtu.be/HuS7ExxszBo)
- [Ruby on Rails EP2: สอน Ruby on Rails (Model / has_many)](https://youtu.be/eVoom6bFLnA)
- [Ruby on Rails EP3: สอน Ruby on Rails (Models / many to many)](https://youtu.be/_V0gjIFHXOI)
- [Ruby on Rails EP4: สอน Ruby on Rails (routes)](https://youtu.be/KDeVepjQoMA)
- [Ruby on Rails EP5: สอน Ruby on Rails (Routes and APIs)](https://youtu.be/uZsWOlWSPpE)
- [Ruby on Rails EP5.1 สอน Ruby on Rails (Routes and APIs ต่อ)](https://youtu.be/QYmwWi34x4U)
- [Ruby on Rails EP6: สอน Ruby on Rails (Scaffolding)](https://youtu.be/f6M-vCsh-j8)
- [Ruby on Rails EP7: สอน Ruby on Rails (Active Record Callbacks)](https://youtu.be/eBUDY_2YfHY)
- [Ruby on Rails EP8: สอน Ruby on Rails (ActiveRecord State Machine)](https://youtu.be/OX9NZVpSqRk)
- [Ruby on Rails EP9: สอน Ruby on Rails (Make APIs Rescue from any Error)](https://youtu.be/hCA6KrA8GTI)
- [Ruby on Rails EP10: สอน Ruby on Rails (ใช้ credentials กับ สร้าง JWT)](https://youtu.be/FiFlwATdYxA)
- [Ruby on Rails EP11: Active Record (Single Table Inheritance)](https://youtu.be/9fhO6yTYkzM)
- [Ruby on Rails Ep12: Rails powered by Ruby (พื้นฐาน Ruby #1)](https://youtu.be/mhUxliEt_i0)
- [Ruby on Rails Ep12.1: Rails powered by Ruby (พื้นฐาน Ruby #2)](https://youtu.be/gI01wZrBzFI)
- [Ruby on Rails Ep12.2: Rails powered by Ruby (พื้นฐาน Ruby #3 Class)](https://youtu.be/EWzRwCdd5aM)
- [Ruby on Rails Ep13: Polymorphic using Ruby on Rails] (https://youtu.be/64Gd1S29R3E)
- [Ruby on Rails EP14: Workshop Login API] (https://youtu.be/P5s0DRSbqug)
- [Ruby on Rails EP14.1: Workshop Rest API CRUD (cont.)] (https://youtu.be/U03cupzUf4U)
- [เขียน NuxtJS+VueJS มาเชื่อมต่อ EP14,EP14,1] (https://youtu.be/2DwdzXyYJo4)
- [เทคนิค Code First Database Migration สร้าง Database ด้วย Code แบบแทบจะไม่ต้องพึ่ง SQL อีกเลย] (https://youtu.be/nY7i_KwmjSU)