พื้นฐาน Sinatra
แอปเว็บน้ำหนักเบา
พื้นฐาน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐาน Sinatra
- เส้นทางและพารามิเตอร์
- API แบบ JSON
- มิดเดิลแวร์และ Rack