I'm a Ruby on Rails / jQuery web developer. Follow me at @sikachu

Archive for the ‘Ruby’ Category

เจออะไรใน Rails 3: ใส่ flash message ลงไปใน redirect_to ได้เลย

Wednesday, January 20th, 2010 Posted in Ruby, Ruby on Rails | No Comments »

เจออะไรใน Rails 3 เป็นสกู๊ปพิเศษสำหรับนำเสนอสิ่งใหม่ๆ ที่จะมีเพิ่มขึ้นมาใน Ruby on Rails 3.0 ความเป็นมา ปกติแล้วใน Rails 2 ถ้าเราต้องการที่จะตั้งค่า flash message ก่อนที่จะทำการ redirect เราจำเป็นทีจะต้องตั้งค่ามันก่อนที่จะเรียก redirect_to เช่น class UsersController < ApplicationController def create @user = User.new(params[:user]) if @user.save ...

เจออะไรใน Rails 3: เพิ่มพลัง ActiveRecord#find

Saturday, January 2nd, 2010 Posted in News, Ruby, Ruby on Rails | No Comments »

เจออะไรใน Rails 3 เป็นสกู๊ปพิเศษสำหรับนำเสนอสิ่งใหม่ๆ ที่จะมีเพิ่มขึ้นมาใน Ruby on Rails 3.0 ความเป็นมา หลายคนนั้นคงจะรู้จักกับฟีเจอร์ named_scope ที่ได้เปิดตัวออกมาพร้อมกับ Rails 2.1 ทำให้เราสามารถที่จะเขียน scope แล้วนำ scope นี้ไปใช้ได้ใหม่เรื่อยๆ เป็นไปตามหลักของ DRY เช่น class Post < ActiveRecord::Base named_scope :published, :conditions => { :status => :published } named_scope :latest, lambda { |limit| ...

Operator Precedence ใน Ruby

Saturday, December 19th, 2009 Posted in Programming, Ruby | 1 Comment »

Operator Precedence หรือลำดับสำคัญของตัวดำเนินการนั้น ถือเป็นหลักสำคัญของโปรแกรมเมอร์ ที่จะทำให้สามารถทำการเขียนอัลกอริธึมเพื่อแก้ไขปัญหาต่างๆ ได้ ในทางคณิตศาสตร์นั้น มักมีคนสรุปมันออกมาง่ายๆ ว่า "วงเล็บมาก่อน คูณหารก่อนบวกลบ" ถ้าใครเคยเห็น code ภาษา Ruby นั้น คงจะเคยเห็นว่า Ruby นั้นมีทั้ง operator && และ || เหมือนกับในภาษา C แล้วยังมี and กับ or ที่เพิ่มเข้ามาใน Ruby ซึ่งเป็นสิ่งที่ทำให้โค้ดนั้นดูสวยงามขึ้น อ่านง่ายขึ้นตามหลักของ Ruby ลองดูโค้ดด้านล่างนี้เป็นตัวอย่างครับ irb(main):001:0> dessert = "Cheesecake" => "Cheesecake" irb(main):002:0> drink = "Coffee" => ...

Optimize database query ด้วย :include

Friday, August 7th, 2009 Posted in My Project, Programming, Ruby, Ruby on Rails | 1 Comment »

ในการเขียนโปรแกรมบน Ruby on Rails นั้น เรามักที่จะใช้ ActiveRecord ในการทำหน้าที่เป็น ORM ระหว่างตัว Application กับ database ซื่งทำให้การเรียก Record นั้น สามารถทำได้อย่างง่ายดาย เช่น ถ้าผมจะเรียกดู post ทั้งหมดที่มีอยู่ในระบบ ผมแค่สั่ง Post.find(:all) # หรือว่า Post.all ก็ได้ ใน Rails 2.x ซึ่งตรงนี้ ถ้าเราไปดูใน Log file จะพบว่า ActiveRecord นั้น จะใช้คำสั่งค้นหาข้อมูลประมาณนี้ครับ ...

Thin Rolling Restart Patch

Sunday, August 2nd, 2009 Posted in My Project, Programming, Ruby, Ruby on Rails | Comments Off

I wrote a patch for Thin web server to do a rolling restart (i.e. restart the server one at a time) when I was working for my final thesis, Localmapia. I put my source on Github, and already inform the ...

Object#try ใน Rails 2.3

Sunday, August 2nd, 2009 Posted in My Project, Programming, Ruby, Ruby on Rails | Comments Off

เคยเจอปัญหาบ้างไหมครับ กับการที่บางครั้ง object ที่เราเรียก method ไปเนี่ย มันกลายเป็น nil ขึ้นมา ทำให้เกิด exception ขึ้นมา >> @user.username NoMethodError: You have a nil object when you didn't expect it! The error occurred while evaluating nil.username from (irb):1 ซึ่งตรงนี้ เพื่อที่จะหลบ exception ในบางครั้งทำให้ Developer ต้องทำการเช็คก่อนว่า object นั้นเป็น nil หรือไม่ เช่น >> (@user ...

Ruby และ active_support/whiny_nil

Monday, June 29th, 2009 Posted in My Project, Programming, Ruby, Ruby on Rails | Comments Off

สำหรับนักพัฒนาส่วนใหญ่ที่เริ่มเขียน Ruby on Rails คาดว่าตอนนี้ในเครื่องของทุกๆ คน น่าจะลง Ruby 1.8 อยู่ เนื่องจากยังคงมี Gem หลายๆ ตัว ที่ยังไม่รองรับ Ruby 1.9 และทำให้เกิดปัญหาทางด้านความเข้ากันได้อยู่บ้าง ฉะนั้นผมเลยอยากพูดถึงหลุมพรางที่ Ruby 1.8 ได้ทิ้งเอาไว้ และทำให้หลายๆ คนนั้นพลาดตกหลุมกันไปบ้างครับ ผมขอสมมุติเอาไว้ว่า ผมได้สร้างระบบ Blog แห่งหนึ่ง โดยที่มี Model สามตัวคือ Post เอาไว้เก็บข้อความ Comment เอาไว้เก็บความคิดเห็น และ User เอาไว้เก็บชื่อผู้ใช้ ที่สามารถแก้ไขข้อความได้ครับ สมมุติว่า User ที่สามารถเข้ามาแก้ไขได้นี้ ...

Squish it!

Sunday, May 17th, 2009 Posted in Programming, Ruby, Ruby on Rails | Comments Off

ต้องบอกว่า Ruby on Rails นั้นมี helper methods เยอะจริงๆ และบางครั้งถ้าเราไม่ได้เข้าไปดูใน api documentation เราก็จะไม่พบว่ามันมีเมธอดเอาไว้ทำอะไรบ้าง วันนี้ผมเจอ method นึงครับ ซึ่งคิดว่าน่าจะมีประโยชน์ และน่าจะมีใครต้องใช้เมธอดนี้แน่ๆ มีใครบ้างไหมครับ ที่เคยเห็น user ชอบโพสข้อมูลมาเว้นบรรทัดๆๆๆ หลายๆ อัน หรือว่าชอบเคาะ space bar เว้นห่างๆ กัน ทำให้บางครั้งมันดูไม่เรียบร้อย และมันอ่านยาก .. วันนี้ผมมี method มาแนะนำครับ ชื่อว่า #squish ตัวอย่างในการใช้งานก็เป็นอย่างนี้ครับ >> str = %(hello world) => "hello\nworld" >> str.squish => ...

Update Rails แล้วเจอ OpenURI::HTTPError

Tuesday, December 18th, 2007 Posted in Programming, Ruby, Ruby on Rails | No Comments »

วันนี้ลองทำการ update Rails ให้เป็น 2.0.2 (เพิ่งออกเมื่อวานนี้ครับ .. เป็น Bugfix จาก 2.0.1) เนื่องจากว่ายังไม่ได้ลองเขียนอะไรจริงๆ จังๆ ก็เลยทำการอัพเดทให้เป็นรุ่นล่าสุดไว้ก่อน เผื่อว่ามันมีอะไรใหม่ๆ เราจะได้ใช้ feature ใหม่ๆ มันซะเลย   แต่แล้วเจ้ากรรม หลังจากรัน gem update -y แล้วมันดันเกิดปัญหาขึ้นนี่ ..   Updating installed gems... Bulk updating Gem source index for: http://gems.rubyforge.org Attempting remote update of actionmailer ERROR:  While executing gem ... (OpenURI::HTTPError)    ...