Thứ ba, 30/07/2019 | 00:00 GMT+7

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 RubyRails .

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:

Output
postgres (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:

Output
psql (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 developmenttest 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 :

config / database.yml
... 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:

Output
Created database 'appname_development' Created database 'appname_test'

Như kết quả gợi ý, lệnh này đã tạo database developmenttest 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:

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.


Tags:

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.04
2019-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