Ruby Weekly เป็นข่าวรายสัปดาห์ทาง email ซึ่งผมเป็นสมาชิกอยู่ซักพักใหญ่ๆ ละ
มีข่าวสารอัพเดต, Tip, Blogpost เรื่องเกี่ยวกับ Ruby และยังรวมถึงตำแหน่งงานว่างสำหรับ Ruby developer ด้วย
ผมว่ามันเป็นจดหมายข่าวที่ดีทีเดียวเลย
เพื่อนๆ สามารถเข้าไป subscribe ได้ฟรีตาม link นี้ครับ
นอกจาก Ruby Weekly แลัว ยังมีจดหมายข่าวของสาย web app อื่นๆ ให้ subscribe ด้วยเช่น HTML5, javascript รับประกันคถณภาพโดยคุณ Peter Cooper คนดัง สะใจกันไปเลย
วันจันทร์ที่ 12 มกราคม พ.ศ. 2558
วันอังคารที่ 28 ตุลาคม พ.ศ. 2557
โชว์ข้อมูลดีบักสำหรับ Rails
เราสามารถเรียกดูข้อมูลในตัวแปรต่างๆ ที่ใช้อยู่ใน Rails ได้โดยใช้เมธอดพิเศษของ Rails ซึ่งมีอยู่ 3 เมธอด ได้แก่
1. เมธอด
2. เมธอด
3. เมธอด
ทั้งสามแบบใช้งานคล้ายๆ กัน โดยเราสามารถเรียกใช้เมธอดนี้แล้วใส่ตัวแปรที่เราอยากตรวจสอบลงไปเป็น argument โดย debug และ
วิธีการนำไปใช้ก็ง่ายมาก คือเราสามารถเรียกเมธอดทั้ง 3 ตัวนี้ได้จาก view (ไฟล์ .html.erb) แล้วให้มันแสดงผลออกมาทางหน้าเพจเลย
จากโค้ดตัวอย่าง เราเรียกเมธอด
ผลลัพธ์ที่ได้จะเป็นข้อความดีบัก ซึ่งมีหน้าตาประมาณนี้
ลองใช้ดูละกันครับ
1. เมธอด
debug
2. เมธอด
to_yaml
3. เมธอด
inspect
ทั้งสามแบบใช้งานคล้ายๆ กัน โดยเราสามารถเรียกใช้เมธอดนี้แล้วใส่ตัวแปรที่เราอยากตรวจสอบลงไปเป็น argument โดย debug และ
to_yaml
จะให้ผลลัพธ์คล้ายๆ กันจะต่างกันตรงที่ข้อมูลของตัวแปรที่เราตรวจสอบด้วย to_yaml
จะอยู่ใน format ของ yaml เลย ในขณะที่ debug
จะเป็นข้อความที่จัดเรียงให้อ่านง่ายกว่า ส่วน inspect นั้น ให้ผลลัพธ์เหมือนกับที่เราใช้ inspect
ใน Ruby เลยวิธีการนำไปใช้ก็ง่ายมาก คือเราสามารถเรียกเมธอดทั้ง 3 ตัวนี้ได้จาก view (ไฟล์ .html.erb) แล้วให้มันแสดงผลออกมาทางหน้าเพจเลย
<!DOCTYPE html>
<html>
<head>
<title>Depot</title>
<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
<%= csrf_meta_tags %>
</head>
<body>
<%= yield %>
<%= debug(params) %>
</body>
</html>
จากโค้ดตัวอย่าง เราเรียกเมธอด
debug
จากหน้า layout (ไฟล์ app/views/application.html.erb) โดยตัวแปรที่เราต้องการตรวจสอบในที่นี้คือ param
ผลลัพธ์ที่ได้จะเป็นข้อความดีบัก ซึ่งมีหน้าตาประมาณนี้
ลองใช้ดูละกันครับ
วันพฤหัสบดีที่ 9 ตุลาคม พ.ศ. 2557
Method lookup และ super
ทุกครั้งที่ message ถูกส่งไปยังผู้รับ (receiver) Ruby จะทำการตรวจสอบทันทีว่าภายในคลาสต้นสังกัดของอ็อบเจกต์ที่เป็นผู้รับ message นั้นมีเมธอดที่มีชื่อเดียวกันกับชื่อของ message ที่ถูกส่งเข้ามาหรือไม่
กระบวนการค้นหาเมธอดที่มีชื่อเดียวกับ message นั้น หากค้นหากันภายในคลาสของผู้รับแล้วไม่เจอเมธอดที่มีชื่อเดียวกับ message Ruby จะทำการค้นหาต่อไปยัง โมดูลที่คลาสนั้นผนวก (include) เข้ามา รวมถึงคลาสแม่ทุกๆ คลาสที่สืบทอดต่อกันมา เรื่อยไปขึ้นไปจนถึงคลาส BasicObject ซึ่งเป็นคลาสแม่ลำดับบนสุดของทุกๆ คลาส กันเลยทีเดียว
เรื่องของลำดับขั้นในการค้นหาเมธอดของอ็อบเจกต์เมื่อตัวมันได้รับ message นั้นถือว่ามีความสำคัญไม่น้อย เพราะนอกจากจะช่วยให้เราแยกแยะการทำงานของอ็อบเจกต์และเมธอดได้แล้ว ยังช่วยให้เราเข้าใจถึงการ override ของ Ruby อีกด้วย
สมมติว่าเรากำหนดให้คลาส A, คลาส B และ โมดูล M มีความสัมพันธ์กันตามโค้ดต่อไปนี้
module M
def print
puts “this is print method”
end
end
class A
include M
วันศุกร์ที่ 12 กันยายน พ.ศ. 2557
เทคนิคการแปลงข้อมูลโดยใช้ Type Conversion
Ruby มีความสามารถที่เรียกว่า built-in conversion ที่ช่วยให้เมธอดสามารถ เปลี่ยน (convert) อ็อบเจกต์ที่ป้อนเข้ามา ให้เป็นค่าของข้อมูลพื้นฐานอย่างเช่น ตัวเลข สตริงหรืออาร์เรย์ ตามที่เมธอดนั้นคาดหวังได้<br /> คำอธิบายข้างต้นอาจทำให้ไม่เห็นภาพ ลองดูตัวอย่างตามนี้ ครับ<br /> สมมติว่าเรามี อาร์เรย์
grade
ซึ่งประกอบด้วยชื่อระดับราคาและความหรูหราของโรงแรม ตั้งแต่ โมเต็ล จนถึง โรงแรมระดับลักเซอร์รี่ เราต้องการแสดงข้อความที่ระบุชื่อของโรงแรมจากอ็อบเจกต์ hotel
และพร้อมบอกระดับชั้น ตามจำนวนของดาว ซึ่งแทนด้วย rating
ที่เป็น attribute ของ hotel
โดย rating
จะเป็นตัวเลข มีค่าตั้งแต่ 0 ถึง 5
เราสามารถสร้างอ็อบเจกต์ hotel ง่ายๆ ได้โดยใช้ Struct ดังนี้Hotel = Struct.new(:name, :rating, :address)
h1 = Hotel.new("Sweet Inn", 1, "Bangkok")
h2 = Hotel.new("Centrara Grand", 5, "Phuket")
กำหนดให้ระดับมาตรฐานและบริการ (ความไฮโซ) ของ hotel อยู่ในอาร์เรย์ที่ชื่อ grade
grade = ["Motel", "Bed and breakfasts", "Contel", "Boutique", "Resort", "Luxury"]
เราสามารถแสดงข้อความที่ต้องการได้ดังนี้
วันพฤหัสบดีที่ 21 สิงหาคม พ.ศ. 2557
เก็บตกเทคนิคการใช้ irb
เก็บตกเทคนิคการใช้ irb ที่น่าจะเป็นประโยชน์ครับ
เปลี่ยน irb prompt ให้สั้นลง
irb prompt แบบเดิมหน้าตาแบบนี้
ถ้าต้องการย่อ prompt ให้สั้นลง อ่านสบายขึ้น ให้ใส่อ็อบชั่น
อ้างอิงค่า return จากบรรทัดก่อนหน้า
เราสามารถอ้างอิงค่าสุดท้ายที่ return จากการรันโค้ดก่อนหน้าได้จาก "_" ดังตัวอย่างต่อไปนี้
เปลี่ยน irb prompt ให้สั้นลง
irb prompt แบบเดิมหน้าตาแบบนี้
C:\>irb
irb(main):001:0>
ถ้าต้องการย่อ prompt ให้สั้นลง อ่านสบายขึ้น ให้ใส่อ็อบชั่น
--simple-prompt
เวลาเรียก irb ดังนี้C:\>irb --simple-prompt
>>
อ้างอิงค่า return จากบรรทัดก่อนหน้า
เราสามารถอ้างอิงค่าสุดท้ายที่ return จากการรันโค้ดก่อนหน้าได้จาก "_" ดังตัวอย่างต่อไปนี้
>> "Manchester United F.C".gsub(/United/, "City")
=> "Manchester City F.C"
>> better_team = _
=> "Manchester City F.C"
>>
สมัครสมาชิก:
บทความ (Atom)