Translations of this page?:

นอกจากการเปลี่ยนแปลงเกี่ยวกับ Rack ที่บอกไว้ในบทก่อนหน้า Railties (โค้ดส่วนแกนของ Rails) เองก็มีการเปลี่ยนแปลงใหญ่ๆอยู่บ้างเหมือนกัน ไม่ว่าจะเป็น Rails Metal, application templates, และ quiet backtraces

7.1. Rails Metal

Rails Metal เป็นส่วนประกอบใหม่ที่ให้บริการ endpoint เร็วติดจรวดสำหรับแอพพลิเคชั่น Rails ของคุณ โดย Metal จะอ้อมส่วน routing และ Action Controller เพื่อให้เกิดความเร็วสูงสุด (โดยแลกกับสิ่งต่างๆที่ Action Controller มีให้) การเปลี่ยนแปลงนี้ใช้ประโยชน์จากงานโครงสร้างที่ทำให้ Rails เป็นแอพพลิเคชั่น Rack ที่สนับสนุน middleware stack นั่นเอง

7.2. Application Templates

Rails 2.3 รวม rg application generator จาก Jeremy McAnally เข้ามาไว้ในเฟรมเวิร์คแล้ว ซึ่งหมายความว่าคุณสามารถสร้างแอพพลิเคชั่นจากแม่แบบของคุณเอง (template-based application generation) ใน Rails ได้เลย ยกตัวอย่างเช่น ถ้าคุณต้องการเพิ่มปลั๊กอินสำหรับทุกๆแอพพลิเคชั่นที่คุณสร้าง คุณก็สามารถสร้างแม่แบบของแอพพลิเคชั่นขึ้นแค่ครั้งเดียวและใช้แม่แบบนี้สร้างแอพพลิเคชั่นใหม่ๆผ่านคำสั่ง rails นอกจากนั้น Rails ยังมี rake task ใหม่สำหรับนำแม่แบบไปใช้กับแอพพลิเคชั่นที่มีอยู่แล้วได้เช่นกัน:

$ rake rails:template LOCATION=~/template.rb

คำสั่งนี้จะทำการนำเข้าส่วนต่างๆของแม่แบบไปไว้ในโค้ดที่มีอยู่แล้วในโปรเจค

7.3. Backtraces ที่เงียบขึ้น

การแก้ไขนี้เป็นการต่อยอดจากปลั๊กอิน Quiet Backtrace ของ Thoughtbot ซึ่งอนุญาติให้คุณสามารถเลือกบรรทัดที่จะเอาออกจาก backtrace ของ Test::Unit สำหรับการแก้ไขนี้ Rails 2.3 ได้เพิ่ม ActiveSupport::BacktraceCleaner และ Rails::BacktraceCleaner เข้าไปในเฟรมเวิร์ค ทำให้สนับสนุนการกรอง (โดยใช้การแทนค่าผ่าน regex กับแต่ละบรรทัดของ backtrace) และการซ่อน ซึ่ง Rails เรียกว่า silencers (เพื่อซ่อนบรรทัดใน backtrace ทั้งบรรทัดเลย) Rails ใช้ฟีเจอร์ใหม่นี้ในการเพิ่ม silencer ที่ซ่อนบรรทัดที่ไม่ค่อยน่าสนใจในแอพพลิเคชั่นใหม่และสร้างไฟล์ config/backtrace_silencers.rb เพื่อเก็บเงื่อนไขการซ่อนของคุณเอง นอกจากนั้นฟีเจอร์นี้ยังทำให้คุณสามารถพิมพ์ผลลัพธ์จาก gem ที่จัดรูปแบบสวยงามแล้วใน backtrace อีกด้วย

7.4. การบู๊ตที่เร็วขึ้นในโหมดพัฒนาด้วย Lazy Loading/Autoload

มีการแก้ไขค่อนข้างมากเพื่อให้มั่นใจว่าเฉพาะส่วนที่ถูกใช้งาน (และ dependencies) จะถูกโหลดขึ้นมาในแรมเมื่อจำเป็นเท่านั้น แกนหลักของเฟรมเวิ์รคไม่ว่าจะเป็น Active Support, Active Record, Action Controller, Action Mailer และ Action View ได้ถูกแก้ให้ใช้ autoload เพื่อโหลดแต่ละ class ตอนใช้งาน ซึ่งทำให้กินแรมน้อยลงและเพิ่มสรรถนะให้กับแอพพลิเคชั่น Rails โดยรวม

คุณสามารถระบุให้แกนหลักถูกโหลดเข้าไว้ในแรมโดยอัตโนมัติตอนบู๊ตได้โดยใช้ตัวเลือก preload_frameworks ค่าเริ่มต้นของตัวเลือกนี้คือ false เพื่อที่จะให้ Rails โหลดส่วนที่ต้องการเมื่อใช้งานโดยอัตโนมัติเท่านั้น แต่ก็มีบางกรณีที่คุณอาจจะอยากโหลดทุกอย่างตอนบู๊ตเลย - เช่นถ้าคุณใช้ Passenger หรือ JRuby เพราะทั้งสองต้องโหลด Rails ขึ้นมาทั้งหมดก่อนใช้งาน

7.5. การเปลี่ยนแปลงอื่นๆใน Railties

  • คำชี้แนะสำหรับการอัพเดตเซิร์ฟเวอร์ CI ให้ build Rails ถูกปรับปรุงและขยายให้ครอบคลุมเนื้อหามากขึ้น
  • Rails เปลี่ยนมาใช้ ActiveSupport::TestCase แทน Test::Unit::TestCase และต้องใช้ Mocha เพื่อทำการทดสอบโค้ด
  • มีการปรับปรุงไฟล์ environment.rb ใหม่ให้เรียบร้อยขึ้น
  • สคริปต์ dbconsole ให้คุณใช้รหัสผ่านที่เป็นตัวเลขได้โดยไม่ crash แล้ว
  • Rails.root คืน object ที่เป็น Pathname ซึ่งหมายความว่าคุณสามารถใช้ object นี้กับ join เพื่อ ล้างโค้ดที่มีอยู่ได้เลย
  • Rails จะไม่สร้างไฟล์ต่างๆที่เกี่ยวข้องกับ CGI และ FCGI dispatching ใน /public อีกต่อไป (ถ้าคุณต้องการใช้ไฟล์ทั้งสองคุณจะต้องระบุตัวเลือก –with-dispatches ตอนใช้คำสั่ง rails หรือไม่ก็เพิ่มมันทีหลังด้วยคำสั่ง rake rails:generate_dispatchers)
 
th/releases/rails2dot3/railties.txt · Last modified: 2009/03/04 16:26 by sukit
 
Recent changes RSS feed Creative Commons License