Ruby Academy · บทเรียน

พื้นฐาน Sinatra

แอปเว็บน้ำหนักเบา

บทเรียน 1 จาก 413 ขั้นตอน

พื้นฐาน Sinatra เป็นบทเรียน Ruby Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ruby Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน

ซินาตราคืออะไร

ซินาตรา คือ DSL น้ำหนักเบาสำหรับสร้างเว็บแอปพลิเคชันด้วยรูบีโดยใช้ความพยายามเพียงเล็กน้อย

  • ไม่มีแบบแผนที่ซับซ้อนอย่างเรลส์
  • กำหนดเส้นทางโดยตรงในไฟล์เดียว
  • เหมาะอย่างยิ่งสำหรับแอปพลิเคชันขนาดเล็ก เอพีไอ และต้นแบบ

คุณระบุคำกริยาเอชทีทีพีและเส้นทาง แล้วส่งคืนเนื้อหาการตอบสนอง

require 'sinatra'

get '/' do
  'Hello from Sinatra!'
end

การติดตั้งซินาตรา

ซินาตราเป็นเจ็ม คุณติดตั้งได้ด้วยคำสั่ง gem หรือผ่าน Gemfile

  • gem install sinatra
  • หรือเพิ่ม gem 'sinatra' ลงในไฟล์จัดการแพ็กเกจ แล้วเรียกใช้ bundle install

เรียกใช้แอปพลิเคชันด้วย ruby app.rb แล้วแอปพลิเคชันจะให้บริการที่พอร์ต 4567 โดยค่าเริ่มต้น

# Gemfile
source 'https://rubygems.org'
gem 'sinatra'
gem 'puma'

เส้นทางแรกของคุณ

เส้นทาง จับคู่คำกริยาเอชทีทีพีกับเส้นทางยูอาร์แอลและบล็อก ค่าที่บล็อกส่งคืนจะกลายเป็นเนื้อหาการตอบสนอง

  • get, post, put, delete จะจับคู่กับเมธอดเอชทีทีพี
  • นิพจน์สุดท้ายในบล็อกจะถูกส่งไปยังไคลเอนต์
require 'sinatra'

get '/hello' do
  'Hello, world!'
end

get '/bye' do
  'Goodbye!'
end

การส่งคืน HTML

เนื่องจากค่าที่ส่งคืนเป็นเพียงสตริง คุณจึงส่งคืน HTML ดิบได้โดยตรง

  • มีประโยชน์สำหรับหน้าเว็บอย่างรวดเร็วที่ไม่ต้องใช้กลไกแม่แบบ
  • สำหรับแอปพลิเคชันจริง ควรเลือกใช้มุมมอง ERB หรือ HAML
require 'sinatra'

get '/' do
  '<h1>Welcome</h1><p>This is my Sinatra app.</p>'
end

การจำลองการตอบสนองด้วยรูบีล้วน

ก่อนเชื่อมต่อกับเอชทีทีพี คุณสามารถจำลองสิ่งที่ตัวจัดการส่งคืนด้วยเมธอดธรรมดาได้ นี่คือตรรกะที่เส้นทางจะเรียกใช้

  • เก็บตรรกะทางธุรกิจไว้นอกบล็อกเส้นทาง
  • ทำให้ทดสอบโค้ดได้โดยไม่ต้องใช้เซิร์ฟเวอร์
def greeting(name)
  "Hello, #{name}!"
end

puts greeting('Sinatra')

คำกริยาเอชทีทีพี

ซินาตรารองรับคำกริยาเอชทีทีพีที่ใช้กันทั่วไปทั้งหมดในรูปแบบเมธอดของเส้นทาง

  • get ใช้อ่านข้อมูล
  • post ใช้สร้างข้อมูล
  • put/patch ใช้อัปเดตข้อมูล
  • delete ใช้ลบข้อมูล
require 'sinatra'

post '/users' do
  'Creating a user'
end

delete '/users/:id' do
  "Deleting user #{params['id']}"
end

การกำหนดรหัสสถานะ

คุณควบคุมรหัสสถานะเอชทีทีพีได้ด้วยตัวช่วย status

  • status 404 กำหนดสถานะไม่พบข้อมูล
  • status 201 ระบุว่าทรัพยากรถูกสร้างขึ้นแล้ว
  • ค่าเริ่มต้นคือ 200 OK
require 'sinatra'

get '/missing' do
  status 404
  'Not found'
end

การกำหนดค่าด้วยเซ็ต

ซินาตรากำหนดค่าด้วย set, enable และ disable

  • set :port, 8080 เปลี่ยนพอร์ตที่ใช้รับฟัง
  • set :bind, '0.0.0.0' ยอมรับการเชื่อมต่อจากภายนอก
  • enable :logging เปิดใช้บันทึกคำขอ
require 'sinatra'

set :port, 8080
set :bind, '0.0.0.0'

get '/' do
  'Configured app'
end

ตัวกรองก่อนการประมวลผล

ตัวกรองก่อนการประมวลผลจะทำงานก่อนคำขอที่ตรงกันทุกคำขอ เหมาะสำหรับการตั้งค่า เช่น การยืนยันตัวตนหรือส่วนหัวเนื้อหา

  • ทำงานในบริบทเดียวกับเส้นทาง
  • สามารถอ่านและแก้ไข params รวมถึงส่วนหัวการตอบสนองได้
require 'sinatra'

before do
  content_type :json
end

get '/' do
  '{"ok": true}'
end

แอปพลิเคชันแบบแยกโมดูล

สำหรับโครงการขนาดใหญ่ ให้ใช้รูปแบบแยกโมดูลด้วยการสืบทอดคลาสจาก Sinatra::Base

  • ช่วยแยกแอปพลิเคชันหลายตัวออกจากกัน
  • นำไปติดตั้งภายใต้แร็กได้ง่ายกว่า
  • เรียกใช้ run! เพื่อเริ่มต้นด้วยตนเอง
require 'sinatra/base'

class MyApp < Sinatra::Base
  get '/' do
    'Modular Sinatra'
  end
end

MyApp.run!

การจำลองตัวกำหนดเส้นทางภายในเครื่อง

คุณสามารถจำลองตรรกะการกำหนดเส้นทางของซินาตราด้วยตัวกระจายงานแบบแฮชอย่างง่าย เพื่อทำความเข้าใจแนวคิดนี้

  • คีย์คือเส้นทาง ส่วนค่าคือโพรซีเยอร์สำหรับจัดการ
  • การค้นหาจะส่งคืนเนื้อหาการตอบสนอง
routes = {
  '/' => -> { 'Home' },
  '/about' => -> { 'About us' }
}

puts routes['/'].call
puts routes['/about'].call

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจเกี่ยวกับพื้นฐานของซินาตรา

สรุป

คุณได้เรียนรู้พื้นฐานสำคัญของซินาตรา:

  • ซินาตราเป็น DSL สำหรับเว็บที่มีน้ำหนักเบาและติดตั้งเป็นเจ็ม
  • เส้นทางจะจับคู่คำกริยาเอชทีทีพีกับเส้นทางและบล็อก
  • ค่าที่บล็อกส่งคืนคือเนื้อหาการตอบสนอง
  • ใช้ตัวช่วย status, set และตัวกรอง before เพื่อควบคุมการทำงาน
  • แอปพลิเคชันแบบแยกโมดูลจะสืบทอดคลาสจาก Sinatra::Base

ต่อไป คุณจะจัดการเส้นทางแบบไดนามิกและพารามิเตอร์

เริ่มต้นได้ฟรี

เรียนรู้ Ruby ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
29
บทเรียน
109

คำถามที่พบบ่อย

บทเรียน “พื้นฐาน Sinatra” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “พื้นฐาน Sinatra” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ruby Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “พื้นฐาน Sinatra”

แอปเว็บน้ำหนักเบา คุณปฏิบัติ Ruby Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ruby Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ruby Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “พื้นฐาน Sinatra” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Ruby Academy นี้ได้ไหม

ได้ บทเรียน Ruby Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พื้นฐาน Sinatra
  2. เส้นทางและพารามิเตอร์
  3. API แบบ JSON
  4. มิดเดิลแวร์และ Rack
← กลับไปที่ Ruby Academy