นอกจากการเปลี่ยนแปลงเกี่ยวกับ Rack [[th/releases/Rails2dot3/application-architecture|ที่บอกไว้ในบทก่อนหน้า]] 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 นั่นเอง * ข้อมูลเพิ่มเติม: * [[http://weblog.rubyonrails.org/2008/12/17/introducing-rails-metal|Introducing Rails Metal]] * [[http://soylentfoo.jnewland.com/articles/2008/12/16/rails-metal-a-micro-framework-with-the-power-of-rails-m|Rails Metal: a micro-framework with the power of Rails]] * [[http://www.railsinside.com/deployment/180-metal-super-fast-endpoints-within-your-rails-apps.html|Metal: Super-fast Endpoints within your Rails Apps]] * [[http://ryandaigle.com/articles/2008/12/18/what-s-new-in-edge-rails-rails-metal|What's New in Edge Rails: Rails Metal]] === 7.2. Application Templates === Rails 2.3 รวม [[http://github.com/jeremymcanally/rg/tree/master|rg]] application generator จาก Jeremy McAnally เข้ามาไว้ในเฟรมเวิร์คแล้ว ซึ่งหมายความว่าคุณสามารถสร้างแอพพลิเคชั่นจากแม่แบบของคุณเอง (template-based application generation) ใน Rails ได้เลย ยกตัวอย่างเช่น ถ้าคุณต้องการเพิ่มปลั๊กอินสำหรับทุกๆแอพพลิเคชั่นที่คุณสร้าง คุณก็สามารถสร้างแม่แบบของแอพพลิเคชั่นขึ้นแค่ครั้งเดียวและใช้แม่แบบนี้สร้างแอพพลิเคชั่นใหม่ๆผ่านคำสั่ง ''rails'' นอกจากนั้น Rails ยังมี rake task ใหม่สำหรับนำแม่แบบไปใช้กับแอพพลิเคชั่นที่มีอยู่แล้วได้เช่นกัน: $ rake rails:template LOCATION=~/template.rb คำสั่งนี้จะทำการนำเข้าส่วนต่างๆของแม่แบบไปไว้ในโค้ดที่มีอยู่แล้วในโปรเจค * ผู้เขียนโค้ดหลัก: [[http://www.jeremymcanally.com/|Jeremy McAnally]] * ข้อมูลเพิ่มเติม: [[http://m.onkey.org/2008/12/4/rails-templates|Rails templates]] === 7.3. Backtraces ที่เงียบขึ้น === การแก้ไขนี้เป็นการต่อยอดจากปลั๊กอิน [[http://www.thoughtbot.com/projects/quietbacktrace|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'' เพื่อ [[http://afreshcup.com/2008/12/05/a-little-rails_root-tidiness/|ล้างโค้ดที่มีอยู่]]ได้เลย * Rails จะไม่สร้างไฟล์ต่างๆที่เกี่ยวข้องกับ CGI และ FCGI dispatching ใน /public อีกต่อไป (ถ้าคุณต้องการใช้ไฟล์ทั้งสองคุณจะต้องระบุตัวเลือก ''--with-dispatches'' ตอนใช้คำสั่ง ''rails'' หรือไม่ก็เพิ่มมันทีหลังด้วยคำสั่ง ''rake rails:generate_dispatchers'')