วันเสาร์ที่ 9 ตุลาคม พ.ศ. 2553

Rails Rake Task + Cron Job

ทำงานไปด้วย Rails ซักพักนึงแล้ว คิดไหมว่า บางครั้งก็ต้องมีการรัน job schedule เรื่อยๆ เพื่อปรับปรุงเว็บไซต์

ตัวอย่างเช่น การปรับปรุง search index ของ xapian ถ้าจะ update กันด้วย rake command ก็จะเป็นดังนี้

# cd /path/to/rails_apps/
# rake xapian update_index RAILS_ENV=production

ทีนี้ข้อมูลต้องมีการอัพเดตเรื่อยๆ แล้ว เราจะมานั่งพิมพ์ command เพื่ออัพเดตเองตลอดได้ยังไง วันนี้มีทางออกแล้วครับ

คำตอบก็คือ cron job ที่เรารู้จักกันดีอยู่แล้วนี่เอง ที่เราไม่ค่อยเห็น บทความการใช้งาน rake กับ cron job มากนักก็อาจเป็นเพราะว่า มันมีทริกนิดนึง ก็คือ เรื่องของ PATH ครับ กล่าวคือ ต้องใส่ path เต็มๆของ rake

path เต็มๆ ของ rake หาได้จากคำสั่งนี้
# whereis rake

แล้วในการเรียกใช้งาน rake เราก็ต้องตั้งค่า directory เริ่มต้นให้ถูกต้องด้วยนั่นเอง
# cd /path/to/rails_apps/

สรุป ก็จะได้คำสั่งสำหรับ run cronjob ดังนี้ (สั่งให้ทำงานทุกๆ 45 นาที)

45 * * * * cd /home/nutjang/rails && /usr/local/bin/rake xapian:update_index RAILS_ENV=production

ไม่มีความคิดเห็น:

แสดงความคิดเห็น