PostgreSQL เป็นฐานข้อมูลโอเพนซอร์สแบบ object-relational database system ที่มาพร้อมความสามารถมากมายที่สั่งสมมาตลอด 15 ปีของการพัฒนา และยังมีสถาปัตยกรรมที่ขึ้นชื่อเรื่องความน่าเชื่อถือ สมรรถนะ และการทำงานอย่างถูกต้องอีกด้วย 1)
ในปัจจุบัน Rails สนับสนุนอแดปเตอร์สำหรับทำงานกับ ActiveRecord เพียงแค่ตัวเดียว ซึ่งในไฟล์ database.yml จะใช้ชื่อว่า “ postgresql” และสามารถทำงานร่วมกันได้กับ postgres และ postgres-pr gems
ตอนนี้มีไลบรารี่สำหรับ PostgreSQL-Client ที่มาในรูปแบบ gem อยู่ 4 ไลบรารี่ นั่นก็คือ:
สำหรับการสร้างแอพพลิเคชั่น Rails ใหม่ที่ใช้ฐานข้อมูล PostegreSQL ให้พิมพ์คำสั่ง:
$ rails -d postgresql my_rails_app
จากนั้นให้แก้ไขไฟล์ database.yml ให้ชี้ไปที่ฐานข้อมูลของคุณ
development:
adapter: postgresql
host: localhost
port: 5432
username: your_db_username
password: your_db_password
database: your_rails_project_development
schema_search_path: public
encoding: utf8
template: template0
คุณไม่จำเป็นต้องระบุ port ถ้าจะใช้ port 5432 อยู่แล้ว นอกจากนั้น encoding กับ schema_search_path ก็ไม่จำเป็นนอกจากว่าคุณไม่อยากจะใช้ค่า default ที่มากับ PostgreSQL กรณีที่คุณต้องการใช้ UTF8 ให้ระบุค่า “ template0” สำหรับ template เพราะว่า PostgreSQL 8.3 ใช้ encoding แบบ SQL_ASCII เป็นค่าเริ่มต้น
ถ้าคุณไม่ระบุค่า host และ port ในระบบปฏิบัติการลีนุกซ์หรือยูนิกซ์ ระบบจะใช้ domain socket แทน TCP session แต่ถ้าคุณระบุค่าสำหรับ host คุณสามารถระบุ path สำหรับ domain socket ที่คุณต้องการได้ด้วย (ค่า default ดูเหมือนจะเป็น /var/run/postgresql)
ถ้าคุณใช้การตรวจสอบชื่อผู้ใช้แบบ ident auth สำหรับ PostgreSQL คุณไม่จำเป็นต้องระบุ password ก็ได้ เพราะว่าปกติแล้ว ident auth จะอนุญาตให้ผู้ใช้เข้าใช้ได้ทันทีถ้าชื่อตรงกับชื่อของผู้ใช้ในฐานข้อมูล ซึ่งหมายความว่าชื่อผู้ใช้ที่ระบุในแอพพลิเคชั่น Rails จะต้องตรงกับชื่อผู้ใช้ฐานข้อมูลเพื่อที่ ident auth จะทำงานได้อย่างถูกต้อง
หมายเหตุ: คุณสามารถใช้ unicode แทน utf8 สำหรับระบุ encoding ได้
aptitude install ruby-full build-essential postgresql-server-dev-8.3 gem install postgres
จาก http://www.postgresql.org/ftp/source/
# เปลี่ยนตัวเลขให้เป็นเลขเวอร์ชั่นที่คุณดาวน์โหลดมา $ tar zxvf postgresql-8.3.6.tar.gz $ cd postgresql-8.3.6 $ ./configure $ make $ sudo make install
$ sudo dscl . create /Users/_pgsql
$ sudo dscl . create /Users/_pgsql UserShell /bin/tcsh $ sudo dscl . create /Users/_pgsql UniqueID 101 $ sudo dscl . create /Users/_pgsql PrimaryGroupID 101 $ sudo dscl . create /Users/_pgsql NFSHomeDirectory /usr/local/pgsql/ $ sudo dscl . create /Users/_pgsql RealName "PostgreSQL Server" $ sudo dscl . append /Users/_pgsql RecordName pgsql $ sudo dscl . create /Groups/_pgsql $ sudo dscl . create /Groups/_pgsql PrimaryGroupID 101 $ sudo dscl . append /Groups/_pgsql RecordName pgsql $ sudo dscl . create /Groups/_pgsql RealName "PostgreSQL Users"
$ sudo chown -R _pgsql:_pgsql /usr/local/pgsql
$ sudo su - _pgsql $ /usr/local/pgsql/bin/initdb -E utf8 --locale=en_US.UTF-8 -D /usr/local/pgsql/data $ exit
$ sudo port install postgresql83-server
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql83-server.plist
$ sudo mkdir -p /opt/local/var/db/postgresql83/defaultdb $ sudo chown postgres:postgres /opt/local/var/db/postgresql83/defaultdb $ sudo su postgres -c '/opt/local/lib/postgresql83/bin/initdb -D /opt/local/var/db/postgresql83/defaultdb'
$ sudo su - # setenv ARCHFLAGS '-arch i386' # gem install pg -- --with-pgsql-include=/usr/local/pgsql/include --with-pgsql-lib=/usr/local/pgsql/lib # exit
หมายเหตุ: สำหรับ Snow Leopard 64-bit ต้องใช้: setenv ARCHFLAGS '-arch x86_64' นอกจากนั้น pg 0.9.0+ ยังต้องใช้ --with-pg-include, --with-pg-lib ด้วย
$ sudo gem install pg
หมายเหตุ: ถ้าคุณดูที่ http://rubyforge.org/projects/ruby-pg/ คุณจะเห็นว่า gem เวอร์ชั่นใหม่ที่สุดคือ 'pg' ไม่ใช่ 'postgres'
Discussion