在所有可用的資料庫引擎中,PostgreSQL 是最受歡迎的資料庫引擎之一。它是一個著名的開源資料庫系統,以其可靠性、強大的功能和效能而聞名。由於 PostgreSQL 是一個熱門的選擇,幾乎所有主流的網頁框架都支援它。與其競爭對手 MySQL 和 SQLite 類似,PostgreSQL 也有其優缺點.
Ruby on Rails 是一個熱門的網頁框架,使用 Ruby 撰寫。它是一個與資料庫無關的框架,這意味著它可以與多種資料庫協同工作。預設情況下,Rails 假定使用 SQL 來實現資料庫功能。然而,它也支援 PostgreSQL 整合。
本教學將 引導您為 Ruby on Rails 應用程式設定 PostgreSQL 的過程.
Ruby on Rails 和 PostgreSQL
PostgreSQL 和 Ruby on Rails 均可在任何 UNIX/Linux 發行版上使用。它們應該可以從預設的套件伺服器中取得。
另一種替代方法是使用 RVM (Ruby Version Manager)。這是一個專門用來管理 Ruby on Rails 安裝的工具。這種方法的好處是 RVM 會建立 Ruby on Rails 的本機安裝。它還可以管理多個 Ruby 版本並在它們之間無縫切換。以下是詳細介紹 在 Ubuntu 上使用 RVM 安裝 Ruby on Rails.
至於 PostgreSQL,請參考這篇關於 在 Ubuntu 上安裝和設定 PostgreSQL.
-
安裝 RVM
得益於 RVM 提供的安裝指令碼,RVM 的安裝過程非常簡單。該指令碼旨在自動偵測 Linux 系統,然後下載並安裝所有必要的套件。我們需要 RVM GPG 金鑰來驗證套件。它能確保接收到的套件沒有被偽造。首先,新增 RVM GPG 金鑰:
|
1 |
gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB |

然後,執行 RVM 安裝指令碼:
|
1 |
curl -sSL https://get.rvm.io | bash -s stable --rails |

最後,驗證安裝:
|
1 |
type rvm | head -n 1 |
-
安裝 Rails
我們現在可以使用 RVM 來安裝其他元件。使用 RVM 安裝 Rails 框架:
|
1 |
gem install rails |
-
安裝 PostgreSQL
下一步需要系統中已預先安裝 PostgreSQL。預設情況下,安裝 PostgreSQL 最簡單的方法是使用預設的套件管理器。它適用於所有主流的 Linux 發行版。請查看 PostgreSQL 下載頁面 以獲取所有可用的安裝方法。在 Ubuntu 上,以下命令將設定 PostgreSQL 軟體庫並立即安裝它:
|
1 |
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' |

|
1 |
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - |

|
1 |
sudo apt update && sudo apt install postgresql -y |

要啟用 PostgreSQL 支援,我們需要安裝 pg gem。它允許從 Ruby 程式碼與 PostgreSQL 進行互動:
|
1 |
gem install pg |
-
設定 PostgreSQL
安裝完成後,我們將設定專案中需要使用的工具。首先,切換到 PostgreSQL 使用者:
|
1 |
su - postgres |
存取 PostgreSQL shell:
|
1 |
psql |

在 PostgreSQL 的環境中,我們現在將建立一個新的 role (傳統上稱為使用者)。PostgreSQL 有其專屬的 roles and permissions。請務必使用合適的使用者名稱和強密碼:
|
1 |
create role <username> with createdb login password 'password123'; |
建立 Rails 應用程式
指示 Rails 建立一個設定為使用 PostgreSQL 作為資料庫的新 Rails 應用程式:
|
1 |
rails new <app_name> --database=postgresql |

這將會建立一個以應用程式使用者名稱命名的新目錄。Rails 通常預期資料庫的使用者名稱與應用程式名稱相同。下一步是設定 Rails 資料庫設定。設定檔位於以下位置:
|
1 |
RAILS_ROOT/config/database.yml |
此檔案 database.yml 包含描述目前 Rails 環境適合的資料庫之資料。顧名思義,它使用 YAML。YAML 是一種適用於所有程式語言、易於人類閱讀的資料序列化標準。
預設情況下,Rails 針對不同的環境預期使用不同的資料庫,例如 development, test 以及 production。這在各種情況下都很有用,例如,每次執行 Rails 測試時,Rails 都會清空並重建 test 資料庫。
以下是一個包含 database.yml 範例,其中包含 development 與 test 資料庫:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
development: adapter: postgresql encoding: unicode database: dummyapp_development pool: 5 username: dummyapp password: password123 test: adapter: postgresql encoding: unicode database: myapp_test pool: 5 username: dummyapp password: password123 |

現在是讓變更生效的時候了。以下指令將會準備 中所述的必要資料庫database.yml。每個資料庫都將擁有自己的使用者,並具有 schema_migrations 資料表。此資料表對於資料和結構描述(schema)遷移是必需的:
|
1 |
rake db:setup |
如果 PostgreSQL 設定檔 pg_hba.conf 包含不正確的設定,此步驟將會失敗。該檔案位於以下位置:
|
1 |
sudo cat /etc/postgresql/13/main/pg_hba.conf |
以下這行是目標。驗證方法不應使用 peer,而應使用 md5:
|
1 |
local all all peer |
修改該行:
|
1 |
local all all md5 |

若要使變更生效,您必須重新啟動 PostgreSQL 服務:
|
1 |
sudo systemctl restart postgresql |
然後,重新執行資料庫設定:
|
1 |
rake db:setup |
執行 Rails
執行 Rails 伺服器需要以下附加元件。請注意,為此您需要安裝 Node.js(搭配 yarn):
|
1 |
rails webpacker:install |

Rails 應用程式現在應該已準備好啟動。啟動 Rails 伺服器:
|
1 |
rails server |

您應該可以從以下 URL 存取伺服器。它將會引導至 Rails 的首頁:
|
1 |
http://localhost:3000 |
為了讓首頁更豐富,建立一個 scaffold:
|
1 |
rails g scaffold Post title:string body:text |

|
1 |
rake db:migrate |
最後,啟動伺服器並再次導覽至該 URL。我們現在可以管理文章(建立、編輯和刪除文章)。
結語
這是 Ruby on Rails 搭配 PostgreSQL 的基本設定。有一個官方入門指南可以協助您進一步利用 Rails。我們建立的範例應用程式使用 PostgreSQL。如此一來,您就可以建立任何使用 PostgreSQL 來實現其功能的應用程式。
祝您開發愉快!


留言
目前尚無留言。成為第一個留言的人吧。