Switch SQLite3 to PostgreSQL
Database
database 是資料庫,為什麼需要資料庫?因為 client - server 互動需要資料傳輸, client 傳送資料給 server , server 向 client 顯示資料,或是儲存 client 傳送的資料。所以需要 database 儲存資料。
假如所有資料通通放在一起,沒有一個系統性的整理,會變得很可怕。所以我們可以利用表格的方式整理散亂的資料,table 是資料表格,fields column 是”欄” ,record row 是資料”列”,視覺呈現會是這樣
DBMS
database management system 管理資料庫的系統。MySQL / PostgreSQL
SQL
操作資料庫的語言:SQL (Structured Query language)
實作
Rails 預設使用 SQLite3 作為資料庫,主要是在開發,測試環境上,SQLite3 是一個輕量型的資料庫類型,但到正式產品上線,SQLite3 可能會不夠用。
實作情境大致分成三種,第一種:完美 PostgreSQL 專案建立,第二種:任性手動調整 SQLite3 -> PostgreSQL ,跟最後一種:沒辦法就是要 PostgreSQL
安裝 PostgreSQL
brew install postgresql
使用 homebrew 安裝一鍵搞定
啟動 PostgreSQL
brew services start postgresql
關掉 PostgreSQLbrew services stop postgresql
正常一點,用 PostgreSQL 建立專案
rails new myapp --database=postgresql
意思是:用 rails 直接 new 一個新的專案,database 使用 postgresql。
config/database.yml 檔案中可以看到 database 的設定狀態
1 |
|
最後,在用rails db:create
的指令讓 rails 和資料庫做連結,
手賤一點,原本是 SQLite3 轉到 PostgreSQL
以這個情境來說,是自己建立專案,獨立開發的狀態下,
一樣, new 一個新的 Rails 專案,rails new myapp_default_sqlite3
config/database.yml 檔案中可以看到 database 的設定狀態
1 |
|
來吧動手改掉他吧
打開 Gemfile:
- 把
gem 'sqlite3'
註解掉 - 加上
gem 'pg'
bundle
- 把
打開 PostgreSQL services
brew services start postgresql
- 進入到 PostgreSQL 模式,psql
直接建立資料庫
CREATE DATABASE YOUR_DATABASE_NAME
修改 database.yml 檔
1 |
|
rails db:create
成功將 rails 和 PostgreSQL 的資料庫串起來了
第三種情境是沒有選擇,協作專案…
database 的部分,不是自己建的,要怎麼跟自己本機端的 database 串在一起?
這時候需要 PostgreSQL USER_NAME 跟 USER_PASSWORD ,讓這個 database 也可以在本機建立資料。
首先找出自己的 PostgreSQL USER_NAME 跟 USER_PASSWORD ,我的方式是透過 psql
進到資料庫,接者打指令\du
,可以列出使用者。
這裡順便把 PostgreSQL 常用語法也列出來。
指令 | 幹嘛的 |
---|---|
\l | 顯示所有資料庫 |
\du | 查看所有 USER |
\c DatabaseName | 切換資料庫 |
\q | 結束 |
1 | adapter: postgresql |
最後一樣,rails db:create
,看看有沒有成功的在本地的 PostgreSQL 建立 database
不過要是把 username / password 直接寫在檔案裡,要是進行 Git 版控裡,或是放在 GitHub 中帳號密碼會外洩,這裡有另外一個 gem 套件, dotenv
安裝步驟:
根據 GitHub 上的教學,把 dotenv 放到 Gemfile
gem 'dotenv-rails', groups: [:development, :test]
- 記得
bundle
目錄列建立一個
.env
檔案
檔案放USERNAME: YOUR_USERNAME
PASSWORD: YOUR_PASSWORD
然後我們就可以直接修改檔案的內容,改成區域變數的方式
1 | adapter: postgresql |
在 Rails 中請記得區域變數一定要加上 <%= %> .erb 檔的寫法
最後就以brew services stop postgresql
結束這一回合!!!!!!