ตอบด้วย screenshot:
{% img img-responsive /images/posts/ruby-2-1-improvement.png 645 259 เรียกว่า big yes %}
อัปเกรดจาก Ruby 1.9 เป็น 2.1 ใน production สัปดาห์ที่แล้ว นี่คือสิ่งที่เห็น ส่วนสีเทาท้ายคือ GC time ไปเกือบศูนย์ Overall upgrade ให้ improvement server response time 15-20% โดยไม่ทำ GC tuning เพิ่ม!
เห็น boost ใหญ่ใน Google และ Bing crawl rates หลัง ship upgrade ซึ่ง awesome สำหรับ sites เหมือนเราที่ได้ประโยชน์จาก search engine traffic มาก
เยี่ยม แตยากแค่ไหน?
บน Rails app ใหญ่ close to 150 gem dependencies upgrade แค่ single small commit และ testing ไปๆ มา ใช้ rvm บน servers ทั้งหมด provision ด้วย chef อัปเกรด servers ทั้งหมดเป็น 2.1 ง่ายแค่เปลี่ยน version number ใน chef role file
เจอปัญหาอะไรบ้าง?
ยัง用 iconv transliteration ต้อง include iconv gem แทน built-in functionality ที่ถูกลบจาก 2.x ไม่ได้ ruby-debug หรือ debugger gem ทำงานภายใต้ 2.x เปลี่ยน用 pry และ pry-byebug ยังชอบ debugger gem กว่า pry-byebug แต pry ดีกว่า irb มาก wash แทบไม่ต่าง **Deivid Rodriguez, byebug's author, ชี้ว่า problems ของผมกับ pry-byebug อาจไม่ใช่ byebug เขาพูดถูก! (จริงๆ caused by interaction ระหว่าง byebug และ pry)**
ใน mixed 1.9 และ 2.1 environment ต้อง upgrade bundler เป็น 1.5.1 ด้วย bundler ใหม่ สามารถ specify 2.1 เป็น platform requirement ใน Gemfile:
gem 'iconv', '~> 1.0.2', :platform => [:mri_20, :mri_21]ดูเหมือน GitHub เจอปัญหาอื่นกับ 2.1 mentioned by Aman Gupta ใน gist: https://gist.github.com/tmm1/8393897 แตเรายังไม่เจอ issues
อยาก tune GC หลัง ship ได้ speed เพิ่ม Aman มี post ดีรายละเอียดวิธีทำ: https://tmm1.net/ruby21-rgengc/ 2.1 series ทั้งหมดบน blog ของเขาคุ้มค่าอ่านถ้าอยากได้ประโยชน์มากจาก cheap, simple Ruby upgrade