如何在 Ruby On Rails 應用程序中使用 PostgreSQL


甚至默認數據庫 SQLite3 鐵路上的紅寶石, 在某些情況下不應該使用。例如,如果您有許多用戶同時訪問您的 Rails 應用程序,則不建議使用 SQLite。您應該嘗試更強大的數據庫,例如 MySQL 或 PostgreSQL,它們提供可擴展性、並發性、集中化和控制。我們已經知道如何使用 MySQL 和 Rails 應用程序今天我將向你展示如何在 Ubuntu Linux 上的 Ruby on Rails 應用程序中使用 PostgreSQL。

內容

  1. 先決條件
  2. 1.安裝PostgreSQL
    1. 1.1. 創建新的數據庫角色
  3. 2. 在 Linux 上使用 PostgreSQL 和 Ruby on Rails 應用程序
  4. 3. 刪除 Rails 應用
    1. 結論是

先決條件

假設您在 Linux 系統上安裝了最新的 Ruby on Rails。如果沒有,請參閱下面的指南。

  • 如何在 Linux 上安裝 Ruby On Rails

1.安裝PostgreSQL

要在 Debian、Ubuntu 和衍生產品上安裝 PostgreSQL,請運行:

$ sudo apt install postgresql postgresql-contrib libpq-dev

此命令將安裝 PostgreSQL 和所有必需的依賴項。是這裡, libpq-dev 一個 PostgreSQL 庫,允許客戶端程序將查詢傳遞到 PostgreSQL 後端服務器並接收這些查詢的結果。設置 Rails 應用程序時需要這個庫來連接到 PostgreSQL。

確保 postgresql 服務已啟動並在啟動時啟用。

$ sudo systemctl start postgresql
$ sudo systemctl enable postgresql

要查看 postgresql 服務的當前狀態,請運行:

$ systemctl status postgresql

1.1. 創建新的數據庫角色

創建和配置數據庫或 Rails 應用程序需要一個專用的數據庫用戶(角色)。

要在 PostgreSQL 中創建新的數據庫角色,請從終端運行以下命令:

$ sudo -u postgres createuser -s ostechnix -P

這裡,

  • sudo -u postgres – 你可以 postgres 帳戶。
  • createuser -s ostechnix – 創建一個名為的新角色 ostechnix 擁有超級用戶權限。
  • -P – 系統將提示您輸入新角色的密碼。

2. 在 Linux 上使用 PostgreSQL 和 Ruby on Rails 應用程序

創建一個名為的新 Rails 應用程序 ostechnixapp 要將 PostgreSQL 用作默認數據庫,請運行:

$ rails new ostechnixapp -d postgresql

這將創建一個 Rails 應用程序。 ostechnixapp 在一個名為 ostechnixapp 安裝已經提到的 gem 依賴項 Gemfile 利用 bundle install.

創建後 ostechnixapp 在您的應用程序中,切換到該目錄:

$ cd ostechnixapp/

編輯應用程序的數據庫配置文件。

$ vi config/database.yml

在下面 default 部分,添加在上一步中創建的 PosgreSQL 數據庫角色及其密碼。

[...]
default: &default
   adapter: postgresql
   encoding: unicode
   # For details on connection pooling, see Rails configuration guide
   # https://guides.rubyonrails.org/configuring.html#database-pooling
   pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
   username: ostechnix
   password: Password123#@!
[...]
在 Rails 應用程序數據庫配置文件中設置 PostgreSQL 用戶及其密碼。

替換您自己的用戶名和密碼。根據 ESC 並輸入 :wq 保存並關閉文件。

使用以下命令為您的 Rails 應用程序創建一個新數據庫:

$ rake db:create

這將使用 Rails 應用程序的名稱創建兩個數據庫。例如,如果您的應用名稱是 ostechnixapp,它將創建 ostechnixapp_development 什麼時候 ostechnixapp_test.

Created database 'ostechnixapp_development'
Created database 'ostechnixapp_test'

您還可以確認數據庫是從 PosgreSQL 成功創建的。

登錄到 PostgreSQL。

$ sudo -u postgres psql

在 postgresql 提示符下,運行: l 列出可用的數據庫。

postgres=# l

示例輸出:

                                       List of databases
            Name           |   Owner   | Encoding | Collate |  Ctype  |   Access privileges   
 --------------------------+-----------+----------+---------+---------+-----------------------
  ostechnixapp_development | ostechnix | UTF8     | C.UTF-8 | C.UTF-8 | 
  ostechnixapp_test        | ostechnix | UTF8     | C.UTF-8 | C.UTF-8 | 
  postgres                 | postgres  | UTF8     | C.UTF-8 | C.UTF-8 | 
  template0                | postgres  | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
                           |           |          |         |         | postgres=CTc/postgres
  template1                | postgres  | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
                           |           |          |         |         | postgres=CTc/postgres
 (5 rows)
 postgres=# 
在 Ruby on Rails 應用程序中使用 PostgreSQL

從 PostgreSQL 提示符輸入的退出 q.

postgres=# q

使用以下命令啟動 Rails Web 服務器:

$ rails server -b 0.0.0.0

這將在默認端口上啟動您的 Rails 應用程序 3000. 在這里傳遞參數 -b 0.0.0.0 從 LAN 上的任何機器訪問 Rails 應用程序。

打開 Web 瀏覽器並轉到以下 URL 以訪問 Rails 測試頁面。 https://ip-address:3000.

Ruby on Rails 應用程序測試頁面Ruby on Rails 應用程序測試頁面

如果你想使用另一個端口, -p 以下是標誌和端口號:

$ rails server -b 0.0.0.0 -p 8080

現在您可以使用以下 URL 訪問您的 Rails 應用程序: https://ip-address:8080.

3. 刪除 Rails 應用

如果您使用默認數據庫 SQLite,您可以通過簡單地刪除 app 目錄來刪除 Rails 應用程序。

$ rm -fr ostechnixapp

如果您以前使用過 PostgreSQL,則應首先使用以下命令刪除應用程序的關聯數據庫:

$ rake db:drop

然後刪除應用程序目錄。

$ rm -fr ostechnixapp

結論是

現在您知道如何使用 PostgreSQL 作為數據庫創建 Rails 應用程序。如前所述,如果您的應用程序被許多用戶積極使用,您應該使用 PostgreSQL 或 MySQL。這對於從 drop 系統管理數據庫和將來擴展數據庫也很有用。

相關文件:

  • 在 Rails 中使用環境變量配置數據庫連接

數據庫LinuxPostgreSQLRuby on Rails with Postgresql 和 rails