
เป้าหมาย: ป้องกันข้อบกพร่องลืมเกี่ยวกับปัญหาประสิทธิภาพส่วนใหญ่และใช้เวลามากขึ้นในการโค้ดแทนการดีบักและแก้ไขการทดสอบ
โดยสรุปให้เขียนเว็บแอปพลิเคชันที่น่าทึ่งอย่างรวดเร็วสนุกและง่าย
Lucky มีคู่มือชุดใหม่ที่ทำให้ง่ายต่อการเริ่มต้น
อย่าลังเลที่จะกล่าวสวัสดีหรือถามคำถามในห้องสนทนาของเรา
หรือคุณสามารถคัดลอกแอพที่ใช้งานได้จริงด้วย Lucky Jumpstart
หากต้องการติดตั้ง Lucky อ่านคำแนะนำการติดตั้ง Lucky สำหรับระบบปฏิบัติการของคุณ คู่มือจะนำคุณผ่านการติดตั้งยูทิลิตี้บรรทัดคำสั่งที่ใช้สำหรับสร้างแอปพลิเคชันโชคดีใหม่
ติดตามข่าวสารล่าสุดโดยติดตาม @LuckyFramework บน Twitter
API (หลัก)
class Api::Users::Show < ApiAction
get " /api/users/:user_id " do
user = UserQuery .find(user_id)
json UserSerializer .new(user)
end
endget "/sign_in" สำหรับเส้นทางที่ไม่ได้พักuser_id ถูกสร้างขึ้นเนื่องจากมีพารามิเตอร์เส้นทาง user_idjson เพื่อแสดงผล JSON สกัด serializers สำหรับการตอบสนอง JSON ที่นำกลับมาใช้ใหม่ได้ # Set up the model
class User < BaseModel
table do
column last_active_at : Time
column last_name : String
column nickname : String ?
end
end? เป็นประเภทเมื่อคอลัมน์สามารถ nil Crystal จะช่วยให้คุณจำได้ว่าอย่าเรียกวิธีการที่ไม่ทำงานlast_active_at และ last_name เนื่องจากพวกเขาไม่ได้ทำเครื่องหมายว่าเป็น nilable) # Add some methods to help query the database
class UserQuery < User::BaseQuery
def recently_active
last_active_at.gt( 1 .week.ago)
end
def sorted_by_last_name
last_name.lower.desc_order
end
end
# Query the database
UserQuery .new.recently_active.sorted_by_last_nameUser::BaseQuery ถูกสร้างขึ้นโดยอัตโนมัติเมื่อคุณกำหนดรุ่น สืบทอดมาจากมันเพื่อปรับแต่งการสืบค้นlower ในคอลัมน์ String เพื่อให้แน่ใจว่า postgres เรียงลำดับทุกอย่างในตัวพิมพ์เล็กgt เพื่อให้ผู้ใช้ใช้งานได้นานกว่า 1 สัปดาห์ที่ผ่านมา Lucky มี abstractions ที่ทรงพลังมากมายสำหรับการสร้างแบบสอบถามที่ซับซ้อนและประเภทวิธีเฉพาะ (เช่น lower ) class Users::Index < BrowserAction
get " /users " do
users = UserQuery .new.sorted_by_last_name
render IndexPage , users: users
end
end
class Users::IndexPage < MainLayout
needs users : UserQuery
def content
render_new_user_button
render_user_list
end
private def render_new_user_button
link " New User " , to: Users :: New
end
private def render_user_list
ul class: " user-list " do
users.each do | user |
li do
link user.name, to: Users :: Show .with(user.id)
text " - "
text user.nickname || " No Nickname "
end
end
end
end
endneeds users : UserQuery บอกคอมไพเลอร์ว่าจะต้องส่งผ่านผู้ใช้ประเภท UserQueryUsers::New ผ่านพารามิเตอร์โดยใช้ with : Users::Show.with(user.id) ไม่มีการพยายามจดจำผู้ช่วยเส้นทางอีกต่อไปและไม่ว่าผู้ช่วยจะถูกพหูพจน์หรือไม่ - ถ้าคุณลืมที่จะส่งผ่านพารามิเตอร์ไปยังเส้นทางโชคดีจะแจ้งให้คุณทราบในเวลาคอมไพล์column nickname : String? Lucky Lucky จะล้มเหลวในการรวบรวมหน้าหากคุณเพิ่งทำ text user.nickname เนื่องจากมันไม่อนุญาตให้พิมพ์ nil ดังนั้นเราจึงเพิ่มทางเลือก "No Nickname" ไม่มีการพิมพ์ข้อความเปล่าโดยไม่ตั้งใจใน HTML! คุณต้องตรวจสอบให้แน่ใจว่าได้ติดตั้งการพึ่งพาคริสตัล
shards installcrystal spec จากรูทโครงการ ดูการสนับสนุน. md
เรารักสมาชิกชุมชนทุกคนที่ทำงานหนักเพื่อให้โชคดีขึ้น หากคุณเป็นหนึ่งในคนเหล่านั้นเราต้องการให้เสื้อยืด!
เพื่อให้ได้เสื้อเราขอให้คุณมีส่วนร่วมอย่างมีนัยสำคัญต่อผู้โชคดี ซึ่งรวมถึงสิ่งต่าง ๆ เช่นการส่ง PRS ด้วยการแก้ไขข้อผิดพลาดและการใช้งานคุณสมบัติช่วยให้สมาชิกคนอื่น ๆ ทำงานผ่านปัญหาและปรับใช้แอปพลิเคชันในโลกแห่งความเป็นจริงโดยใช้ Lucky!
หากต้องการอ้างสิทธิ์เสื้อของคุณกรอกแบบฟอร์มนี้
Paulcsmith Paul Smith - ผู้สร้าง Lucky ดั้งเดิม
ทำด้วย contrib.rocks
lucky watch ขึ้นอยู่กับ Sentry อย่างหนัก ขอบคุณ @samueleaton!