Cách sử dụng PostgreSQL với ứng dụng Ruby on Rails của bạn trên macOS
Khi sử dụng khuôn khổ web Ruby on Rails , ứng dụng của bạn được cài đặt theo mặc định để sử dụng SQLite làm database . SQLite là một database quan hệ nhẹ, di động và thân thiện với user , hoạt động đặc biệt tốt trong môi trường bộ nhớ thấp và sẽ hoạt động tốt trong nhiều trường hợp. Tuy nhiên, đối với các ứng dụng phức tạp cần tính toàn vẹn dữ liệu tin cậy hơn và khả năng mở rộng theo chương trình, database PostgreSQL sẽ là lựa chọn linh hoạt và mạnh mẽ hơn. Để cấu hình cài đặt Ruby on Rails của bạn để sử dụng PostgreSQL, bạn cần thực hiện một số bước bổ sung để cài đặt và chạy nó.Trong hướng dẫn này, bạn sẽ cài đặt môi trường phát triển Ruby on Rails được kết nối với database PostgreSQL trên máy macOS local . Bạn sẽ cài đặt và cấu hình PostgreSQL, sau đó kiểm tra cài đặt của bạn bằng cách tạo một ứng dụng Rails sử dụng PostgreSQL làm server database của nó.
Yêu cầu
Hướng dẫn này yêu cầu những điều sau:
- Một máy tính hoặc máy ảo được cài đặt macOS, có quyền truy cập quản trị vào máy đó và kết nối internet. Hướng dẫn này đã được thử nghiệm trên macOS 10.14 Mojave . 
- Môi trường phát triển Ruby on Rails được cài đặt trên máy macOS của bạn. Để cài đặt điều này, hãy làm theo hướng dẫn của ta về Cách cài đặt Ruby on Rails với rbenv trên macOS . Hướng dẫn này sẽ sử dụng version 2.6.3 của Ruby và 5.2.3 của Rails; để biết thông tin về các version mới nhất, hãy xem các trang web chính thức của Ruby và Rails . 
Bước 1 - Cài đặt PostgreSQL
Để cấu hình Ruby on Rails để tạo ứng dụng web của bạn với PostgreSQL làm database , trước tiên bạn sẽ cài đặt database vào máy của bạn . Mặc dù có nhiều cách để cài đặt PostgreSQL trên macOS , hướng dẫn này sẽ sử dụng trình quản lý gói Homebrew .
Có nhiều gói Homebrew để cài đặt các version PostgreSQL khác nhau. Để cài đặt version mới nhất, hãy chạy lệnh sau:
- brew install postgresql 
Nếu bạn muốn  download  một version  cụ thể của PostgreSQL, hãy thay thế postgresql trong lệnh trước đó bằng gói mong muốn của bạn. Bạn có thể tìm thấy các gói có sẵn tại trang web Homebrew .
 Tiếp theo, bao gồm binary  PostgreSQL trong biến PATH của bạn để truy cập các công cụ dòng lệnh PostgreSQL, đảm bảo thay thế 10 bằng số version  bạn đang sử dụng:
- echo 'export PATH="/usr/local/opt/postgresql@10/bin:$PATH"' >> ~/.bash_profile 
Sau đó, áp dụng các thay đổi bạn đã thực hiện đối với file  ~/.bash_profile cho phiên  shell  hiện tại của bạn:
- source ~/.bash_profile 
Để khởi động dịch vụ và cho phép nó bắt đầu khi đăng nhập, hãy chạy như sau:
- brew services start postgresql@10 
Kiểm tra đảm bảo cài đặt thành công:
- postgres -V 
Bạn sẽ nhận được kết quả sau:
Outputpostgres (PostgreSQL) 10.9 Sau khi PostgreSQL được cài đặt, bước tiếp theo là tạo một role mà ứng dụng Rails của bạn sẽ sử dụng sau này để tạo database của bạn.
Bước 2 - Tạo role database cho ứng dụng của bạn
Trong PostgreSQL, các role được dùng để tổ chức các quyền và phân quyền. Khi khởi động PostgreSQL với Homebrew, bạn sẽ tự động có role siêu user được tạo bằng tên user macOS của bạn . Để giữ các quyền siêu user này tách biệt với cá thể database bạn sử dụng cho ứng dụng Rails của bạn , trong bước này, bạn sẽ tạo một role mới với ít quyền truy cập hơn.
 Để tạo ra một  role  mới, chạy lệnh sau, thay thế appname với bất cứ tên nào bạn muốn cung cấp cho vai diễn này:
- createuser -P -d appname 
Trong lệnh này, bạn sử dụng createuser để tạo ra một  role  tên appname . Cờ -d đã cấp cho  role  quyền tạo database  mới.
 Bạn cũng đã chỉ định cờ -P ,  nghĩa là  bạn sẽ  được yêu cầu  nhập password  cho  role  mới  của bạn . Nhập password  mong muốn của bạn, đảm bảo ghi lại password  đó để bạn có thể sử dụng password  đó trong file  cấu hình trong bước sau.
 Nếu bạn không sử dụng cờ -P và muốn đặt password  cho  role  sau khi tạo, hãy nhập console  PostgreSQL bằng lệnh sau:
- psql postgres 
Bạn sẽ nhận được kết quả sau, cùng với dấu nhắc cho console PostgreSQL:
Outputpsql (10.9) Type "help" for help.  postgres=#  Control panel  PostgreSQL được biểu thị bằng dấu nhắc postgres=# . Tại  dấu nhắc  PostgreSQL, nhập lệnh này để đặt password  cho  role  database  mới, thay thế tên được đánh dấu bằng tên bạn đã tạo:
- \password appname 
PostgreSQL sẽ nhắc bạn nhập password . Nhập password mong muốn của bạn tại dấu nhắc , sau đó xác nhận.
Bây giờ, thoát khỏi console PostgreSQL bằng lệnh lệnh sau:
- \q 
Dấu nhắc thông thường của bạn bây giờ sẽ xuất hiện lại.
Trong bước này, bạn đã tạo một role PostgreSQL mới mà không có quyền siêu user cho ứng dụng của bạn . Đến đây bạn đã sẵn sàng tạo một ứng dụng Rails mới sử dụng role này để tạo database .
Bước 3 - Tạo một ứng dụng Rails mới
Với role của bạn được cấu hình cho PostgreSQL, bây giờ bạn có thể tạo một ứng dụng Rails mới được cài đặt để sử dụng PostgreSQL làm database .
Đầu tiên, chuyển đến folder chính của bạn:
- cd ~ 
Tạo một ứng dụng Rails mới trong folder  này, thay cho appname với bất cứ điều gì bạn muốn gọi ứng dụng của bạn:
- rails new appname -d=postgresql 
Tùy chọn -d=postgresql đặt PostgreSQL làm database .
 Khi bạn đã chạy lệnh này, một folder  mới có tên appname sẽ xuất hiện trong folder  chính của bạn, chứa tất cả các phần tử của một ứng dụng Rails cơ bản.
Tiếp theo, chuyển vào folder của ứng dụng:
- cd appname 
Đến đây bạn đã tạo một ứng dụng Rails mới và đã chuyển vào folder root cho dự án của bạn , bạn có thể cấu hình và tạo database PostgreSQL từ bên trong ứng dụng Rails của bạn .
Bước 4 - Cấu hình và tạo database của bạn
 Khi tạo database  development và test cho ứng dụng của bạn, Rails sẽ sử dụng  role  PostgreSQL mà bạn đã tạo ở Bước 2. Để  đảm bảo  Rails tạo các database  này, bạn sẽ thay đổi file  cấu hình database  của dự án  của bạn . Sau đó, bạn sẽ tạo database   của bạn .
Một trong những thay đổi cấu hình cần thực hiện trong ứng dụng Rails của bạn là thêm password cho role PostgreSQL mà bạn đã tạo ở bước cuối cùng. Để giữ an toàn thông tin nhạy cảm như password , bạn nên lưu trữ thông tin này trong một biến môi trường thay vì ghi trực tiếp vào file cấu hình của bạn.
 Để lưu trữ password  của bạn trong một biến môi trường khi đăng nhập, hãy chạy lệnh sau, thay thế APPNAME bằng tên ứng dụng của bạn và PostgreSQL_Role_Password bằng password  bạn đã tạo ở bước cuối cùng:
- echo 'export APPNAME_DATABASE_PASSWORD="PostgreSQL_Role_Password"' >> ~/.bash_profile 
Lệnh này ghi lệnh export vào file  ~/.bash_profile của bạn để biến môi trường sẽ được đặt khi đăng nhập.
 Để xuất biến cho phiên hiện tại của bạn, hãy sử dụng lệnh source :
- source ~/.bash_profile 
Đến đây bạn đã lưu trữ password của bạn trong môi trường của bạn , đã đến lúc thay đổi file cấu hình.
 Mở file  cấu hình database  của ứng dụng trong editor   bạn muốn . Hướng dẫn này sẽ sử dụng nano :
- nano config/database.yml 
Trong phần default , hãy tìm dòng có nội dung pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> và thêm các dòng được đánh dấu sau, điền thông tin đăng nhập của bạn và biến môi trường bạn đã tạo.  Nó trông giống như sau :
... default: &default   adapter: postgresql   encoding: unicode   # For details on connection pooling, see Rails configuration guide   # http://guides.rubyonrails.org/configuring.html#database-pooling   pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>   username: appname   password: <%= ENV['APPNAME_DATABASE_PASSWORD'] %>  development:   <<: *default   database: appname_development ... Điều này sẽ làm cho ứng dụng Rails chạy database  với  role  và password  chính xác. Lưu và thoát bằng cách nhấn CTRL+X , Y , sau đó ENTER .
Để biết thêm thông tin về cấu hình database trong Rails, hãy xem tài liệu Rails .
  Đến đây bạn  đã  áp dụng các thay đổi  đối với config/database.yml , hãy tạo config/database.yml cho ứng dụng của bạn bằng cách sử dụng lệnh rails :
- rails db:create 
Khi Rails tạo database , bạn sẽ nhận được kết quả sau:
OutputCreated database 'appname_development' Created database 'appname_test' Như  kết quả  gợi ý, lệnh này đã tạo database  development và test trong  server  PostgreSQL của bạn.
Đến đây bạn có một database PostgreSQL được kết nối với ứng dụng Rails của bạn. Để đảm bảo ứng dụng của bạn đang hoạt động, bước tiếp theo là kiểm tra cấu hình của bạn.
Bước 5 - Kiểm tra cấu hình của bạn
Để kiểm tra xem ứng dụng của bạn có thể sử dụng database PostgreSQL hay không, hãy thử chạy ứng dụng web của bạn để ứng dụng này hiển thị trong trình duyệt.
Đầu tiên, bạn sẽ sử dụng web server tích hợp sẵn cho Rails, Puma , để phục vụ ứng dụng của bạn. Web server này tự động đi kèm với Rails và không cần cài đặt thêm. Để cung cấp ứng dụng của bạn, hãy chạy lệnh sau:
- rails server --binding=127.0.0.1 
--binding liên kết ứng dụng của bạn với một IP được chỉ định. Theo mặc định, cờ này sẽ ràng buộc Rails với 0.0.0.0 , nhưng vì điều này  nghĩa là  Rails sẽ lắng nghe tất cả các giao diện, nên sẽ an toàn hơn khi sử dụng 127.0.0.1 để chỉ định localhost . Theo mặc định, ứng dụng sẽ lắng nghe trên cổng 3000 .
Khi ứng dụng Rails của bạn đang chạy, dấu nhắc lệnh của bạn sẽ không xuất hiện , được thay thế bằng kết quả này:
Output=> Booting Puma => Rails 5.2.3 application starting in development => Run `rails server -h` for more startup options Puma starting in single mode... * Version 3.12.1 (ruby 2.6.3-p62), codename: Llamas in Pajamas * Min threads: 5, max threads: 5 * Environment: development * Listening on tcp://127.0.0.1:3000 Use Ctrl-C to stop Để kiểm tra xem ứng dụng của bạn có đang chạy hay không, hãy mở cửa sổ  terminal  mới trên  server  của bạn và sử dụng lệnh curl để gửi yêu cầu đến 127.0.0.1:3000 :
- curl http://127.0.0.1:3000 
Bạn sẽ nhận được rất nhiều kết quả trong HTML, kết thúc bằng thông tin như :
Output...         <strong>Rails version:</strong> 5.2.3<br />         <strong>Ruby version:</strong> 2.6.3 (x86_64-darwin18)       </p>     </section>   </div> </body> </html> Bạn cũng có thể truy cập ứng dụng Rails của bạn trong trình duyệt web local bằng cách truy cập:
http://127.0.0.1:3000 Tại URL này, bạn sẽ tìm thấy trang chào mừng của Ruby on Rails:
Điều này nghĩa là ứng dụng của bạn được cấu hình đúng cách và được kết nối với database PostgreSQL.
Kết luận
Trong hướng dẫn này, bạn đã tạo một ứng dụng web Ruby on Rails được cấu hình để sử dụng PostgreSQL làm database trên máy macOS local . Nếu bạn muốn tìm hiểu thêm về ngôn ngữ lập trình Ruby, hãy xem loạt bài Cách viết mã trong Ruby của ta .
Để biết thêm thông tin về việc chọn database cho ứng dụng của bạn, hãy xem hướng dẫn của ta về sự khác biệt giữa và các trường hợp sử dụng của SQLite, PostgreSQL và MySQL . Nếu bạn muốn đọc thêm về cách sử dụng database , hãy xem bài viết Giới thiệu về truy vấn trong PostgreSQL của ta hoặc khám phá sản phẩm Dịch vụ database của DigitalOcean.
Các tin liên quan
Cách sử dụng PostgreSQL với ứng dụng Ruby on Rails của bạn trên Ubuntu 18.042019-06-28
Cách kiểm tra database PostgreSQL với InSpec trên Ubuntu 18.04
2019-04-02
Công cụ kết nối dịch vụ database và đo điểm chuẩn PostgreSQL bằng pgbench
2019-02-14
Giới thiệu về Truy vấn trong PostgreSQL
2018-10-17
Cách thiết lập bản sao lôgic với PostgreSQL 10 trên Ubuntu 18.04
2018-08-31
Cách di chuyển thư mục dữ liệu PostgreSQL đến vị trí mới trên Ubuntu 18.04
2018-07-13
Cách cài đặt và sử dụng PostgreSQL trên Ubuntu 18.04
2018-05-04
Cách sử dụng tìm kiếm toàn văn bản trong PostgreSQL trên Ubuntu 16.04
2017-06-15
Cách bảo mật PostgreSQL chống lại các cuộc tấn công tự động
2017-01-24
Cách sử dụng Postgresql với Ứng dụng Django của bạn trên Debian 8
2016-12-22
 

