SQLite3 on Rails
Posted by PunNeng, Sun Feb 18 23:08:00 UTC 2007
ทุกวันนี้ผมทำงานกับ Rails โดยใช้ SQLite3 เป็น database แทน MySQL ในขณะที่กำลังพัฒนา และ test ก่อนที่จะเอาไป deploy ใช้กับ MySQL อีกทีตอนที่ใช้งานจริงๆ
เนื่องจากมันเบา จึงเร็ว ติดตั้งง่าย ไม่มี config เยอะมากมาย ผมว่ามันสะดวกดี ตอนที่เรากำลังกำลังพัฒนางานๆ นึงอยู่
วิธีติดตั้งก็ไม่ยากเย็นเลย มาดูฝั่ง Mac กันก่อน ให้ติดตั้งผ่าน darwinport นะครับ จะสะดวกมาก โดยไปที่ terminal แล้วพิมพ์ว่า
$ sudo port install rb-sqlite3
แล้วก็รอมันทำจนเสร็จ สำหรับฝั่ง linux ผมใช้ Ubuntu ครับ มี apt-get อยู่แล้ว สบายหายห่วง แค่พิมพ์ใน terminal ว่า
$ apt-get install sqlite3 swig libsqlite3-ruby libsqlite3-dev gem install sqlite3-ruby
สำหรับฝั่ง Windows ก็ไม่ยาก เพียง download สองตัวนี้ http://www.sqlite.org/sqlite-327.zip http://www.sqlite.org/sqlitedll-327.zip extract แล้วเอาไปไว้ใน /WINDOWS/system32 จากนั้นพิมพ์ใน cmd ว่า
gem install sqlite3-ruby
แล้วเลือก driver ที่เป็น win32 ตัวล่าสุด
จากน้ันไปแก้ใน config/database.yml ในชุดของ development และ test เป็น
development: # ใน test ด้วยครับ
adapter: sqlite3
dbfile: db/development.db
แล้วก็ทำการสร้าง table มาใช้งาน เราเข้าไปใน db/ แล้วพิมพ์ใน terminal ว่า
project_name/db$ sqlite3 development.db
แล้วก็ร่ำกันเลยด้วย sql command
แต่เดี๋ยวก่อนนนน เราทำ migration ได้แล้วนี่ ผมแนะนำให้ใช้ migration ครับ มาถึงก็สร้าง migration file ก่อนเลย แล้วก็ rake db:migrate ตามเรื่องครับ ดูตัวอย่างได้จากอันนี้ ไม่ต้องไปสร้าง db สร้าง table ให้วุ่นวาย
ปล. SQLite3 มี bug บน Windows นิดนึง คือถ้าตอนที่เรา load fixtures(เดี๋ยวจะมาเล่าให้ฟังอีกที) แล้วใน fixture file ของเราไม่ได้ระบุค่าอะไรให้มัน แทนที่มันจะเก็บค่าว่างๆ เอาไว้ มันจะเก็บเป็น NULL ซึ่งเป็น text แทน ส่วนวิธีซ่อม ให้ใช้เวอร์ชันที่ต่ำกว่า 3.3.7 (บน mac ไม่เห็นจะเป็นอะไร)