Rails 預設的資料庫是 Sqlite,如欲使用較為專業的開源資料庫 PostgreSQL,可參照此說明筆記進行操作。
安裝 PostgreSQL on Mac
- 使用 Homebrew 套件管理工具安裝:
$ brew install postgresql
(預設安裝 postgreSQL v14) - 安裝後重新啟動
$ brew services restart postgresql
- 重新啟動 Terminal
- 查看版本
$ postgres --version
或$ psql --version
在 Rails 專案建立 PostgreSQL 資料庫
Pre-requisites:
- 確認已經在本機中安裝 PostgreSQL
- 本機中必須保持運行 PostgreSQL,可透過
$ brew service list
查看運行狀況。
postgresql@14 started hsuan ~/Library/LaunchAgents/[email protected]
如果 PostgreSQL 沒有於背景運行,可見以下相關啟動 PostgreSQL 的操作指令:
- 方法一使用 psql 手動啟動和停止 PostgreSQL,每次需要輸入相應的指令(較不推薦)。
psql -D /usr/local/var/postgres start
psql -D /usr/local/var/postgres stop
- 方法二使用 Homebrew 服務管理工具啟動和停止 PostgreSQL。此方法將 PostgreSQL 服務作為系統常駐運行的服務,可在在系統啟動後自動啟動(推薦)。
$ brew services start postgresql
$ brew services stop postgresql
$ brew services restart postgresql
Step1:安裝 pg gem
- 方法 1:建立新專案時就選擇使用 PostgreSQL:
$ rails new myapp --database=postgresql
- 方法 2:單純 new 新專案,接著安裝 pg gem:
$ bundle add pg
+$ bundle install
方法 1 較為推薦,可以讓 rails 自動幫妳生成相關設定,如果是使用方法 2,則要將原先在 Gemfile 中的gem sqlite3
手動移除,只保留gem pg
(通常一個專案僅需要一個資料庫)
Step2:設定資料庫 adapter
接著設定 Rails 專案的 config/database.yml(如果是使用–database=postgresql,Rails 會自動設定好這部分的檔案)。
如果原本是 sqlite,可以使用指令切換資料庫來產生 database.yml$ rails db:system:change --to postgresql
,或是自行手動改寫檔案內容。
database.yml
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch('RAILS_MAX_THREADS') { 5 } %>
development:
<<: *default
database: YOUR_PROJECT_NAME_development
test:
<<: *default
database: YOUR_PROJECT_NAME_test
production:
<<: *default
database: YOUR_PROJECT_NAME_production
username: YOUR_PROJECT_NAME
password: <%= ENV['YOUR_PROJECT_NAME_DATABASE_PASSWORD'] %> # 密碼依照需求設定
Step3:建立專案資料庫
有三種狀況:
- 狀況一:還沒建立資料庫,可以從 rails 專案建立對應的資料庫 (database.yml 必須先設定好):進入到 rails console 後使用指令
$ rails db:create
來自動建立資料庫,資料庫名稱會命名為<專案名稱>_development
- 狀況二:還沒建立資料庫,透過
$ psql
自行建立資料庫(相關指令於文章下方),資料庫名稱需與 database.yml 的設定相符 - 狀況三:已經有原先的資料庫,並且有
schema
和seed
需要進行資料轉移,可以執行:$ rails db:setup
其效果等於db:create
+db:schema:load
+db:seed
Step4:執行 migration 並啟動伺服器
- 執行
$ rails db:migrate
- 執行
$ rails server
資料庫終端機其餘操作
解除安裝:$ brew uninstall postgres
建立或刪除資料庫:
$ createdb <new_database> # 新增資料庫
$ dropdb <database> # 刪除資料庫
查看所有資料庫資訊:$ pqsl -list
,postgresSQL 安裝後的默認資料庫是postgres
進入資料庫:$ psql <資料庫名稱>
psql (14.7 (Homebrew))
Type "help" for help.
<資料庫名稱>=#
\q = exit
\l = list
其他:
圖形界面軟體推薦:Postico2
References: