Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

คู่มือขั้นตอน: อัปเกรดแอป Rails ไป 4.2 ได้อย่างราบรื่น

การอัปเกรดบางแอป Rails ง่ายแค่ bundle update rails

แต่ถ้าคุณมีแอปประเภท อีกแบบ ล่ะ? แอปที่ยังค้างอยู่ที่ Rails 4.0 หรือ 3.2 เพราะไม่ไหว้จะลากมันมุ่ยๆ ไปในอนาคต?

ไม่ว่าจะเป็นการอัปเกรดที่เร็วหรือเจ็บปวด ขั้นตอนเหล่านี้จะช่วยให้คุณไปถึง Rails 4.2 ได้อย่างราบรื่นที่สุด และ תוךนั้นคุณจะได้เรียนรู้การใช้ประโยชน์จากฟีเจอร์ใหม่ของ Rails 4.2 เต็มที่

อ่าน Upgrade Guide

ควรเริ่มอัปเกรด Rails ด้วยการอ่าน Rails Upgrade Guide เสมอ

Upgrade guide จะนำคุณผ่านการเปลี่ยนแปลงหลักระหว่างเวอร์ชัน Rails มันจะบอกวิธีแก้ไขแอปเพื่อแก้ปัญหาใหญ่ๆ ที่คุณจะเจอ (เช่น การเปลี่ยนแปลงใน Rails 4.1 ที่จะทำให้เราเจ็บปวดนานชั่วโมงถ้าไม่รู้ว่า要注意)

นอกจากนี้ upgrade guide ยังอธิบาย ทำไม ต้องทำการเปลี่ยนแปลงเหล่านั้น ซึ่งสำคัญเพราะช่วยให้คุณเข้าใจว่าควรปฏิบัติตามข้อเสนอไหน และไหนสามารถละเลยได้

และถ้าอยากเข้าใจการเปลี่ยนแปลง Rails 4.2 ลึกขึ้น อ่าน release notes จะแนะนำฟีเจอร์ใหม่ๆ ที่จะได้ใช้งาน ถ้าอื่นไม่อาจ ทำให้คุณมีแรงจูงใจให้อัปเกรดเสร็จ

อัปเกรดแบบขั้นตอน

เมื่อย้ายไปเวอร์ชัน Rails ใหม่ ให้อัปเกรดไป newest point version ก่อนเสมอ และอย่าข้าม minor versions

เช่น อยากอัปเกรดจาก 4.1.6 ไป 4.2 ให้ไป 4.1.6 → 4.1.9 → 4.2 ถ้าเริ่มที่ 4.0.12 ให้ไป 4.0.12 → 4.0.13 → 4.1.9 → 4.2 อาจดูเหมือนงานมากขึ้น แต่จะประหยัดเวลาในระยะยาว

ทำไม? Point version ล่าสุดของ Rails release มี deprecation warnings ที่ดีที่สุด

อย่าประมาณค่าความมีประโยชน์ของ deprecation warnings ถ้าอัปเกรดแบบขั้นตอน มันจะบอกทุกอย่างว่าอะไรจะพัง และป้องกันได้อย่างไร ถ้ากระโดดไกลเกินไป แอปจะพังอย่างง่าย และคุณไม่รู้ว่าทำไม

สุดท้าย ถ้า point version upgrade (เช่น 4.0.9 → 4.0.13) ทำให้ test แตก มันมักจะแตกตอน major/minor upgrade ด้วย แต่ง่ายต่อการ debug และ fix มากกว่าเมื่อเปลี่ยนแปลงน้อยกว่า

นี่คือขั้นตอน:

  1. อัปเกรดไป newest point release ของ Rails version ปัจจุบัน
  2. อัปเกรด gems อื่นๆ ที่บล็อก bundle update
  3. แก้ tests commit ตามต้องการ
  4. แก้ deprecation warnings commit ตามต้องการ
  5. อัปเกรดไป minor/major version ถัดไป และทำซ้ำ

พึ่งพา Tests

ตอนอัปเกรด Rails tests จะเป็นสัญญาณแรกว่ามีอะไรผิดปกติ ควรเป็นอย่างแรกที่รัน และอย่างแรกที่แก้ อย่าพยายามให้แอป boot ก่อนที่ tests จะผ่านส่วนใหญ่

อัปเกรด Gems

ตอน test fail และดูไม่ใช่ความผิดของคุณ มักหมายถึง gem ตัวนึงต้องอัปเกรด

การอัปเกรด Rails คือเวลาที่แย่ที่สุดสำหรับการอัปเกรด gem เนื่องจากแอปเปลี่ยนแปลงมาก โดนบอกว่าสิ่งไหนพัง ไม่ชัดเจน

แต่เพราะบาง gems พึ่งพา Rails internals มาก จึงต้องทำอยู่ดี ถ้าสิ่งใดใน sass fail ให้อัปเกรด sass-rails gem และหวังว่าจะไม่แย่ลง

จดบันทึก มากๆ

ถ้าอัปเกรด Rails ยากมาก คุณจะต้องทดลอง Debug ทดสอบโค้ด เปลี่ยน tests

ขณะทำ คุณ จะ ลืมการเปลี่ยนแปลงที่ทำ สิ่งที่ลองและเกือบได้ แต่ไม่พอ ทดสอบไหนที่จะดูต่อ ไฟล์อื่นที่ต้องแก้ เคล็ดลับให้เพื่อนร่วมงานที่อัปเกรดไป 4.2 พฤติกรรมแปลกที่อยากดูรายละเอียดหลัง

อย่าทำให้เกิด: ทำการเปลี่ยนแปลง roll back แล้วรู้ว่ามันถูกต้อง แต่ไม่จำว่าทำอะไรไป เขียนไว้ให้ชัดเจน

แหล่งข้อมูลอื่นๆ

ในคอมเมนต์ Miha Rekar แนะนำ RailsDiff ซึ่งแสดง diff ระหว่างแอป Rails ใหม่ที่ generate จากเวอร์ชันต่างกัน วิธีดีมากในการเรียนรู้ config parameters ที่ไม่ต้องใช้แล้ว หรือ parameters ใหม่ที่ควรเพิ่ม

และ Daniel Kehoe เขียนคู่มือครบถ้วนเกี่ยวกับการอัปเดต Ruby และ Rails ด้วย RVM และ RVM gemsets

การอัปเกรด Rails ที่ดีที่สุด

บางการอัปเกรด Rails ราบรื่น ทุกอย่างทำงาน บางอย่างท้าทาย ใช้หลายวันหรือหลายสัปดาห์ ขึ้นอยู่กับแอป dependencies และสิ่งที่ Rails เปลี่ยน แตถ้าปฏิบัติตามขั้นตอนเหล่านี้ คุณจะได้ประสบการณ์อัปเกรดที่ดีที่สุด

คุณอยู่ที่ Rails 4.2 แล้วไหม? อัปเกรดเป็นยังไง? แค่อัปเดต gems มากๆ หรือยังตามหา test ตัวสุดท้ายที่ fail อยู่?

(หมายเหตุ: ผมจะปล่อย Practicing Rails วันที่ 11 กุมภาพันธ์! เหลือไม่กี่สัปดาห์สำหรับส่วนลด 25% early access)