หน้าแรก
หน้าแรก
ที่ AppSignal เรามีการติดตามข้อผิดพลาดสำหรับแอปพลิเคชัน Ruby ในการดำเนินการดังกล่าว เราจะรวบรวมแอปพลิเคชันข้อยกเว้นทั้งหมดที่ส่งมาที่เราและแจ้งให้นักพัฒนาทราบทันที อาจเป็นเรื่องยากที่จะได้รับการจัดการข้อยกเว้นที่ถูกต้อง ในบทความนี้ เราจะอธิบายวิธีการทำงาน ปัญหาที่อาจเกิดจากการจัดการที่ไม่ดี และวิธี
เว็บเซิร์ฟเวอร์และ HTTP โดยทั่วไปอาจดูเหมือนเข้าใจยาก เบราว์เซอร์จัดรูปแบบคำขออย่างไร และคำตอบจะถูกส่งไปยังผู้ใช้อย่างไร ในตอน Ruby Magic นี้ เราจะเรียนรู้วิธีสร้างเซิร์ฟเวอร์ Ruby HTTP ในโค้ด 30 บรรทัด เมื่อเสร็จแล้ว เซิร์ฟเวอร์ของเราจะจัดการคำขอ HTTP GET และเราจะใช้เพื่อให้บริการแอป Rack วิธีที่ H
ในบทความนี้เราจะมาพูดถึงการหลบหนีของตัวละครใน Ruby เราจะเรียนรู้วิธีหลีกเลี่ยงตัวละคร วิธีการทำงาน และวิธีหลีกเลี่ยงการหลบหนีโดยสิ้นเชิงสำหรับกรณีการใช้งานบางกรณี ถ้าคุณคิดว่าคุณรู้ทุกอย่างเกี่ยวกับ \ อย่าลืมอ่านทั้งหมดและประหลาดใจ... มาดำดิ่งกันด้วยการหนีอักขระเป็นสตริง หนีคำพูด เมื่อใช้สตริงใน
ในซีรีส์ Ruby Magic เราชอบที่จะแยกซอฟต์แวร์ออกจากกันเพื่อเรียนรู้วิธีทำงานภายใต้ประทุน มันคือทั้งหมดที่เกี่ยวกับกระบวนการ ผลลัพธ์สุดท้ายไม่ใช่สิ่งที่คุณจะใช้ในการผลิต เราเรียนรู้เกี่ยวกับการทำงานภายในของภาษา Ruby และไลบรารียอดนิยม เราเผยแพร่บทความใหม่ประมาณเดือนละครั้ง ดังนั้นอย่าลืมสมัครรับจดหมายข่
ในบทความ Ruby Magic ก่อนหน้านี้เกี่ยวกับ Mastering Concurrency เราได้แนะนำวิธีการสามวิธีในการบรรลุการทำงานพร้อมกันซึ่งมีให้บริการสำหรับเราในฐานะนักพัฒนา Ruby บทความนี้เป็นบทความแรกในซีรีส์สามตอนที่เราเจาะลึกข้อมูลแต่ละวิธี อันดับแรก:หลายกระบวนการ . ด้วยวิธีนี้ กระบวนการหลักจะแยกตัวเองไปยังกระบวนการ
ใน Ruby Magic รุ่นก่อนหน้า เราได้แสดงวิธีใช้งานระบบแชทโดยใช้หลายกระบวนการ ครั้งนี้เราจะแสดงให้คุณเห็นว่าคุณสามารถทำสิ่งเดียวกันโดยใช้หลายเธรดได้อย่างไร สรุปสั้นๆ หากคุณต้องการทราบคำอธิบายโดยละเอียดเกี่ยวกับการตั้งค่าพื้นฐาน โปรดอ่านบทความก่อนหน้า แต่เพื่อเตือนคุณอย่างรวดเร็ว:นี่คือลักษณะของระบบแชทข
ยินดีต้อนรับสู่บทความ Ruby Magic ล่าสุดในชุดของเราเกี่ยวกับการทำงานพร้อมกัน ในรุ่นก่อนหน้านี้ เราได้ติดตั้งเซิร์ฟเวอร์แชทโดยใช้หลายกระบวนการและหลายเธรด คราวนี้เราจะทำสิ่งเดียวกันโดยใช้การวนซ้ำของเหตุการณ์ สรุป เราจะใช้ไคลเอนต์เดียวกันและการตั้งค่าเซิร์ฟเวอร์เดียวกันกับที่เราใช้ในบทความก่อนหน้านี้ เ
ยินดีต้อนรับสู่บทความ Ruby Magic ใหม่! คราวนี้เราจะมาดูกันว่า Ruby ตีความโค้ดของเราอย่างไร และเราจะนำความรู้นี้ไปใช้ให้เกิดประโยชน์ได้อย่างไร โพสต์นี้จะช่วยให้คุณเข้าใจว่าโค้ดถูกตีความอย่างไร และสิ่งนี้จะช่วยนำไปสู่โค้ดที่เร็วขึ้นได้อย่างไร ความแตกต่างเล็กน้อยระหว่างสัญลักษณ์ ในบทความก่อนหน้าของ Ru
ทุกเซิร์ฟเวอร์ที่ใช้งานแอปที่ใช้ AppSignal จะส่งกลุ่มตัวอย่างและเมตริกไปยัง Push API ของเราทุกๆ 30 วินาที คำขอแต่ละรายการมีคีย์ที่เราใช้เพื่อกำหนดว่าข้อมูลมาจากแอปใด ในการทำเช่นนั้น เราจำเป็นต้องสืบค้นฐานข้อมูลของเราเพื่อค้นหาแอพสำหรับคำขอที่เข้ามาแต่ละรายการ ด้วยคำขอ 3 หมื่นล้านรายการต่อเดือน เราพ
เมื่อเกิดข้อผิดพลาดในแอปพลิเคชันของคุณ Ruby จะแสดงข้อยกเว้นและพิมพ์ stack trace ไปที่บันทึก ในบทความนี้ เราจะมาดูวิธีอ่านสแต็กเทรซและวิธีใช้เพื่อค้นหาแหล่งที่มาของข้อยกเว้นในแอปพลิเคชันของคุณ คอลสแตก เมื่อใดก็ตามที่คุณเรียกใช้เมธอด Ruby จะวาง stack frame บน คอลสแต็ก (หรือ รันไทม์สแต็ก แต่มักเรียกว่
เมื่อเกิดข้อผิดพลาดในแอปพลิเคชัน Rails ของคุณ ข้อยกเว้นและการติดตามสแต็กจะช่วยคุณค้นหาว่าปัญหาเกิดขึ้นที่ใด หลังจากที่รู้ว่าเกิดอะไรขึ้นที่ไหน เราก็ต้องหา ทำไม มันเกิดขึ้น. ในบทความนี้ เราจะใช้ backtrace เพื่อค้นหาจุดบกพร่องในแอปพลิเคชัน Rails NoMethodError (undefined method `request_uri' for #
ยินดีต้อนรับสู่บทความ Ruby Magic ใหม่! ในตอนนี้ เราจะมาดูกันว่า Ruby ใช้ น้ำตาลสังเคราะห์ . อย่างไร เพื่อทำให้ไวยากรณ์บางส่วนมีความหมายมากขึ้น หรืออ่านง่ายขึ้น ในตอนท้าย เราจะรู้ว่ากลอุบายบางอย่างของ Ruby ทำงานอย่างไรภายใต้ประทุนและเขียนวิธีการของเราเองโดยใช้น้ำตาลเพียงเล็กน้อย เมื่อเขียนแอป Ruby เ
ข้อยกเว้นส่วนใหญ่เกิดจากการส่งข้อมูลที่ไม่คาดคิดไปยังวิธีการที่ทำงานได้ดี ดังนั้นการติดตามข้อมูลบางส่วนผ่านแอปพลิเคชันของคุณจึงมักเป็นประโยชน์เพื่อค้นหาสาเหตุของข้อผิดพลาด ในบทความนี้ เราจะพูดถึงการตรวจสอบข้อมูลในแอปพลิเคชัน Ruby และ Rails ใส่ , #ตรวจสอบ และ p วางของ Ruby เมธอดใช้สำหรับพิมพ์ข้อควา
Ruby มีเครื่องมือเปรียบเทียบในไลบรารีมาตรฐานเพื่อช่วยวัดประสิทธิภาพของโค้ดของคุณ มีประโยชน์มากที่สุดเมื่อเปรียบเทียบการใช้งานทั้งสองแบบ เพื่อดูว่าอันไหนเร็วที่สุด ในตัวอย่างนี้ เราได้รับมอบหมายให้แปลง Hash ด้วยคีย์สตริง (เช่น {"foo" => "bar"} เป็นหนึ่งเดียวกับสัญลักษณ์ (เช่น
ข้อยกเว้น เป็นโครงสร้างข้อมูลพิเศษที่เก็บข้อมูลเกี่ยวกับพิเศษ สภาพที่เกิดขึ้นในใบสมัครของคุณ ข้อยกเว้นคือสัญญาณที่ส่งเมื่อโปรแกรมของคุณไม่สามารถทำงานต่อได้ เนื่องจากไม่ทราบวิธีจัดการกับสถานการณ์เฉพาะ ใน Ruby เราเรียกการส่งสัญญาณว่า เพิ่ม เป็นข้อยกเว้น raise 'this is an exception' puts &q
เมื่อแอปพลิเคชัน Rails ยอมรับคำขอ ตัวควบคุมมักจะถามโมเดลสำหรับข้อมูลที่ร้องขอ จากนั้นโมเดลจะดึงข้อมูลจากฐานข้อมูลและส่งกลับไปยังคอนโทรลเลอร์ ในที่สุดคอนโทรลเลอร์ก็แสดงมุมมองซึ่งแสดงถึงข้อมูลในรูปแบบที่มนุษย์อ่านได้ ในบางสถานการณ์ การแสดงมุมมองเป็นการดำเนินการที่มีราคาแพง โดยเฉพาะอย่างยิ่งถ้ามุมมองต
เครื่องมือเช่น top , uptime , w และเมตริกโฮสต์ของ AppSignal จะรายงานเมตริกที่เรียกว่า load average . เมตริกนี้จะบอกคุณเกี่ยวกับภาระที่ระบบของคุณได้รับ โดยเฉลี่ยในหลายกรอบเวลา $ uptime 10:14:14 up 60 days, 17:42, 1 user, load average: 0.44, 0.28, 0.25 ค่าเฉลี่ยโหลดมักจะแสดงเป็นตัวเลขสามตัว เช่นใน
วันนี้เราจะเจาะลึกไปที่ Russian Doll Caching ซึ่งเป็นกลวิธีในการปรับปรุงการแคชของคุณให้มากกว่าการแคชแฟรกเมนต์ในตัวของ Rails การแคชแฟรกเมนต์ เมื่อใช้การแคชแฟรกเมนต์ในตัวของ Rails ส่วนของมุมมองที่แสดงจะถูกจัดเก็บเป็นแฟรกเมนต์ของมุมมองและนำกลับมาใช้ใหม่หากมีการร้องขออีกครั้ง ชิ้นส่วนที่แคชเหล่านี้ถูกน
สามารถกู้คืนข้อยกเว้นที่ยกมาเพื่อป้องกันไม่ให้แอปพลิเคชันของคุณหยุดทำงานเมื่อถึงด้านบนสุดของสแต็กการโทร ใน Ruby เราใช้ rescue คำสำคัญสำหรับสิ่งนั้น เมื่อช่วยเหลือข้อยกเว้นใน Ruby คุณสามารถระบุคลาสข้อผิดพลาดเฉพาะที่ควรได้รับการช่วยเหลือ begin raise 'This exception will be rescued!' rescu
เมื่อสร้างแอป Rails ใหม่ การแคชได้รับการตั้งค่าไว้แล้ว ทำให้การเริ่มต้นใช้งานได้รวดเร็วพอๆ กับการห่อส่วนย่อยของมุมมองโดยใช้ cache ผู้ช่วยหรือใช้ Rails.cache.fetch เพื่อจัดเก็บผลลัพธ์ API ภายนอก ข้อมูลแคชถูกเก็บไว้ในที่เก็บแคชของ Rails ซึ่งสามารถเก็บข้อมูลไว้ในหน่วยความจำ, Memcached, Redis หรือแม้แต่