ทำงานไปด้วย 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
เล่าเรื่องการทำเว็บไซต์ด้วย Ruby on Rails จ้า พร้อมวิธีการปรับแต่ง Server จำพวก FreeBSD, debian จากประสบการณ์ในการทำงาน Admin
แสดงบทความที่มีป้ายกำกับ rake แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ rake แสดงบทความทั้งหมด
วันเสาร์ที่ 9 ตุลาคม พ.ศ. 2553
วันศุกร์ที่ 11 มิถุนายน พ.ศ. 2553
การใช้งาน Rack ในแบบ test, production
ตามปกติเวลาเราใช้คำสั่ง rake ใน Rails ก็มักจะใช้คำสั่งห้วนๆ ตัวอย่างเช่น rake สร้าง database หรือ การ migrate database
$ rake db:create
$ rake db:migrate
ซึ่งคำสั่งดังกล่าวก็จะสร้างให้กับ Environment development เพียงอย่างเดียว ทีนี้ก็เกิดคำถามว่า ถ้าเราต้องการทำใน Environment อื่นๆ เช่น test , production จะทำยังไง ?
วิธีแก้ไขง่ายๆ ก็คือ การเพิ่มตัวแปร RAILS_ENV=environment เข้าไป ด้งตัวอย่างต่อไปนี้
$ rake db:create RAILS_ENV=production
$ rake db:migrate RAILS_ENV=production
ซึ่งก็คือการสร้าง Database และ การ Migrate Database ให้กับ Rails ภายใน Environment Production นั่นเองครับ
$ rake db:create
$ rake db:migrate
ซึ่งคำสั่งดังกล่าวก็จะสร้างให้กับ Environment development เพียงอย่างเดียว ทีนี้ก็เกิดคำถามว่า ถ้าเราต้องการทำใน Environment อื่นๆ เช่น test , production จะทำยังไง ?
วิธีแก้ไขง่ายๆ ก็คือ การเพิ่มตัวแปร RAILS_ENV=environment เข้าไป ด้งตัวอย่างต่อไปนี้
$ rake db:create RAILS_ENV=production
$ rake db:migrate RAILS_ENV=production
ซึ่งก็คือการสร้าง Database และ การ Migrate Database ให้กับ Rails ภายใน Environment Production นั่นเองครับ
สมัครสมาชิก:
บทความ (Atom)