Hướng dẫn cài đặt Rails RVM Ubuntu 20.04 chi tiết và hiệu quả

Chào bạn, chào mừng đến với Bùi Mạnh Đức! Ruby on Rails, hay còn gọi là Rails, là một trong những framework phát triển ứng dụng web mạnh mẽ và phổ biến nhất, được xây dựng trên ngôn ngữ lập trình Ruby. Sức mạnh của nó nằm ở triết lý “Convention over Configuration” (Ưu tiên quy ước hơn cấu hình), giúp các lập trình viên xây dựng ứng dụng nhanh chóng và hiệu quả. Tuy nhiên, hành trình bắt đầu với Rails đôi khi gặp phải trở ngại ngay từ bước đầu tiên: cài đặt môi trường trên Ubuntu, đặc biệt là phiên bản 20.04. Việc cài đặt thủ công có thể dẫn đến xung đột phiên bản, lỗi phụ thuộc khó chịu, và một môi trường phát triển không ổn định.

Để giải quyết triệt để vấn đề này, chúng ta sẽ sử dụng RVM (Ruby Version Manager). RVM là một công cụ dòng lệnh tuyệt vời cho phép bạn dễ dàng cài đặt, quản lý và làm việc với nhiều môi trường Ruby khác nhau trên cùng một hệ thống. Thay vì loay hoay với các gói hệ thống, bạn có thể tạo ra các môi trường độc lập cho từng dự án. Bài viết này sẽ hướng dẫn bạn chi tiết từng bước, từ chuẩn bị hệ thống Ubuntu 20.04, cài đặt RVM, thiết lập Ruby và Rails, cho đến cách xử lý các lỗi thường gặp, giúp bạn có một khởi đầu suôn sẻ nhất trên con đường chinh phục Ruby on Rails.

Chuẩn bị môi trường trên Ubuntu 20.04

Trước khi đi sâu vào cài đặt RVM và Ruby on Rails, bước đầu tiên và quan trọng nhất là đảm bảo hệ thống Ubuntu 20.04 của bạn được cập nhật và có đầy đủ các công cụ nền tảng. Một hệ thống được chuẩn bị tốt sẽ giúp quá trình cài đặt diễn ra mượt mà, tránh được nhiều lỗi không đáng có. Việc này giống như xây một nền móng vững chắc cho ngôi nhà của bạn; nền móng càng tốt, ngôi nhà càng ổn định.

Cập nhật hệ thống và các gói cần thiết

Đầu tiên, hãy mở Terminal của bạn lên (bạn có thể dùng tổ hợp phím Ctrl + Alt + T) và chạy lệnh sau để cập nhật danh sách các gói phần mềm và nâng cấp chúng lên phiên bản mới nhất. Điều này đảm bảo hệ thống của bạn an toàn và tương thích với các phần mềm sắp cài đặt.

sudo apt update && sudo apt upgrade -y

Sau khi hệ thống đã được cập nhật, chúng ta cần cài đặt một số gói tiện ích cơ bản. curl là công cụ để tải về dữ liệu từ máy chủ, gnupg dùng để quản lý các khóa mã hóa công khai (cần thiết để xác thực nguồn cài đặt RVM), và build-essential là một gói tổng hợp chứa các công cụ biên dịch mã nguồn như trình biên dịch C/C++, `make`,… rất quan trọng để RVM có thể xây dựng Ruby từ mã nguồn.

sudo apt install curl gnupg build-essential -y

Việc cài đặt các gói này đảm bảo rằng bạn có đủ “nguyên liệu” cần thiết cho các bước tiếp theo. Quá trình này thường diễn ra nhanh chóng và là tiền đề không thể thiếu cho một môi trường phát triển hoàn chỉnh.

Hình minh họa

Thiết lập các phụ thuộc cần thiết cho Ruby và Rails

Ruby, khi được biên dịch từ mã nguồn bởi RVM, yêu cầu một số thư viện hệ thống cụ thể để hoạt động đúng cách. Thiếu các thư viện này là một trong những nguyên nhân phổ biến nhất gây ra lỗi trong quá trình cài đặt. Do đó, chúng ta cần cài đặt chúng một cách đầy đủ.

Hãy chạy lệnh sau để cài đặt tất cả các thư viện phụ thuộc cần thiết:

sudo apt install libssl-dev libreadline-dev zlib1g-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi-dev -y

Để bạn hiểu rõ hơn, đây là chức năng của một vài thư viện chính trong danh sách trên:

  • libssl-dev: Cung cấp thư viện cho kết nối bảo mật (SSL/TLS), rất quan trọng cho việc giao tiếp qua HTTPS và các tác vụ mã hóa.
  • libreadline-dev: Giúp các công cụ dòng lệnh của Ruby (như IRB) trở nên thân thiện hơn, hỗ trợ chỉnh sửa dòng lệnh và lịch sử lệnh.
  • zlib1g-dev: Cung cấp thư viện nén dữ liệu, được nhiều gem của Ruby sử dụng.
  • libsqlite3-dev: Cần thiết để làm việc với cơ sở dữ liệu SQLite3, cơ sở dữ liệu mặc định cho các ứng dụng Rails mới tạo.
  • libxml2-dev & libxslt1-dev: Là phụ thuộc của gem Nokogiri, một thư viện phân tích cú pháp HTML và XML rất phổ biến trong hệ sinh thái Rails.

Sau khi hoàn tất bước này, hệ thống Ubuntu của bạn đã hoàn toàn sẵn sàng cho việc cài đặt RVM và Ruby. Bạn đã có một nền tảng vững chắc để tiếp tục.

Cài đặt RVM (Ruby Version Manager)

Với môi trường Ubuntu đã được chuẩn bị kỹ lưỡng, giờ là lúc chúng ta cài đặt RVM. RVM sẽ thay bạn quản lý tất cả những phức tạp liên quan đến phiên bản Ruby và các bộ gem đi kèm, giúp bạn tập trung vào việc phát triển ứng dụng. Sử dụng RVM giống như có một trợ lý đắc lực, luôn đảm bảo môi trường làm việc của bạn gọn gàng và có tổ chức.

Cách thêm khoá công khai và cài đặt RVM

Để đảm bảo rằng chúng ta tải về và cài đặt RVM từ một nguồn đáng tin cậy, bước đầu tiên là thêm khóa GPG công khai của dự án RVM vào hệ thống. Khóa này dùng để xác minh tính toàn vẹn của gói cài đặt, bảo vệ bạn khỏi các phần mềm độc hại.

Sử dụng lệnh sau để thêm khóa:

gpg --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

Sau khi khóa đã được thêm thành công, bạn có thể tiến hành cài đặt RVM bằng cách chạy script cài đặt chính thức của nó. Script này sẽ tự động tải về và thiết lập mọi thứ cần thiết trong thư mục người dùng của bạn. Sử dụng curl để tải và thực thi script:

\curl -sSL https://get.rvm.io | bash -s stable

Hình minh họa

Lệnh này sẽ tải script từ get.rvm.io và thực thi nó. Tùy chọn -s stable đảm bảo bạn sẽ cài đặt phiên bản RVM ổn định mới nhất. Quá trình này có thể mất vài phút. Sau khi hoàn tất, bạn cần tải lại cấu hình shell hoặc mở một cửa sổ Terminal mới để các thay đổi có hiệu lực.

Để RVM hoạt động ngay lập tức mà không cần mở lại Terminal, bạn có thể chạy lệnh sau:

source ~/.rvm/scripts/rvm

Kiểm tra và xác nhận phiên bản RVM đã cài đặt

Sau khi quá trình cài đặt hoàn tất và bạn đã tải lại cấu hình shell, bước tiếp theo là kiểm tra xem RVM đã được cài đặt đúng cách hay chưa. Đây là bước xác nhận quan trọng để đảm bảo mọi thứ đã sẵn sàng cho việc cài đặt Ruby.

Gõ lệnh sau vào Terminal:

rvm --version

Nếu cài đặt thành công, bạn sẽ thấy một thông báo hiển thị phiên bản RVM đã được cài đặt, ví dụ như `rvm 1.29.12 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin`. Điều này xác nhận rằng RVM đã được tích hợp vào môi trường shell của bạn và sẵn sàng để sử dụng.

Hình minh họa

Nếu bạn nhận được thông báo lỗi “command not found”, hãy thử đóng cửa sổ Terminal hiện tại và mở lại một cửa sổ mới. Điều này thường xảy ra do shell chưa nhận diện được đường dẫn của RVM. Nếu vẫn không được, hãy kiểm tra tệp cấu hình của shell (như `~/.bashrc` hoặc `~/.zshrc`) để đảm bảo rằng dòng source "$HOME/.rvm/scripts/rvm" đã được thêm vào cuối tệp. Giờ đây, bạn đã có trong tay một công cụ quản lý phiên bản Ruby mạnh mẽ.

Cài đặt Ruby thông qua RVM

Khi RVM đã được cài đặt và hoạt động trơn tru, việc cài đặt Ruby trở nên đơn giản và linh hoạt hơn bao giờ hết. Bạn không còn bị giới hạn bởi phiên bản Ruby có sẵn trong kho của Ubuntu. Thay vào đó, bạn có thể chọn và cài đặt bất kỳ phiên bản nào bạn muốn, từ những phiên bản cũ để bảo trì dự án cũ đến những phiên bản mới nhất để trải nghiệm các tính năng tiên tiến.

Lựa chọn phiên bản Ruby phù hợp và cài đặt

Trước khi cài đặt, bạn có thể muốn xem danh sách tất cả các phiên bản Ruby mà RVM hỗ trợ. Sử dụng lệnh sau:

rvm list known

Bạn sẽ thấy một danh sách dài các phiên bản có sẵn. Tại thời điểm viết bài, các phiên bản trong nhánh 3.x (ví dụ: 3.0.x, 3.1.x, 3.2.x) là những lựa chọn phổ biến và được khuyến nghị cho các dự án mới vì chúng mang lại nhiều cải tiến về hiệu suất và cú pháp. Chúng ta sẽ tiến hành cài đặt một phiên bản ổn định, ví dụ như Ruby 3.1.2.

rvm install 3.1.2

RVM sẽ tự động tải mã nguồn của Ruby 3.1.2 về, biên dịch và cài đặt nó vào một thư mục riêng biệt trong `~/.rvm`. Quá trình này có thể mất một vài phút tùy thuộc vào tốc độ máy tính của bạn vì nó bao gồm cả việc biên dịch mã nguồn. Hãy kiên nhẫn chờ đợi đến khi quá trình hoàn tất. Đây là một trong những ưu điểm lớn nhất của RVM: tự động hóa hoàn toàn quá trình biên dịch phức tạp.

Hình minh họa

Thiết lập Ruby mặc định và kiểm tra phiên bản

Sau khi RVM đã cài đặt xong phiên bản Ruby bạn chọn, bạn cần “bảo” RVM sử dụng phiên bản này làm phiên bản mặc định cho hệ thống của mình. Điều này có nghĩa là mỗi khi bạn mở một cửa sổ Terminal mới, phiên bản Ruby này sẽ được tự động kích hoạt.

Sử dụng lệnh sau để thiết lập Ruby 3.1.2 làm mặc định:

rvm use 3.1.2 --default

RVM sẽ tạo một alias mặc định trỏ đến phiên bản này. Bây giờ, để xác nhận rằng mọi thứ đã được thiết lập chính xác, hãy kiểm tra phiên bản Ruby hiện tại của bạn:

ruby -v

Kết quả trả về sẽ là `ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]`, xác nhận rằng bạn đang sử dụng đúng phiên bản vừa cài đặt. Bạn cũng có thể kiểm tra đường dẫn thực thi của Ruby bằng lệnh which ruby. Kết quả sẽ trỏ đến một đường dẫn bên trong thư mục ~/.rvm, ví dụ: /home/your_user/.rvm/rubies/ruby-3.1.2/bin/ruby. Điều này chứng tỏ RVM đang quản lý hoàn toàn môi trường Ruby của bạn, tách biệt khỏi Ruby hệ thống (nếu có).

Cài đặt Rails sau khi Ruby đã được thiết lập

Với một phiên bản Ruby sạch sẽ và được quản lý bởi RVM, giờ là lúc cài đặt “ngôi sao” chính: framework Rails. Trong hệ sinh thái Ruby, các thư viện và framework được đóng gói dưới dạng các “gem“. Rails cũng là một gem, và chúng ta sẽ sử dụng công cụ quản lý gem mặc định của Ruby để cài đặt nó. Một ưu điểm lớn khi dùng RVM là bạn không cần quyền sudo để cài đặt gem, vì mọi thứ đều nằm trong thư mục người dùng của bạn, giúp môi trường sạch sẽ và an toàn hơn.

Cài đặt gem Rails mới nhất

Trước khi cài đặt Rails, bạn nên đảm bảo rằng công cụ gem của mình đã được cập nhật lên phiên bản mới nhất. Điều này giúp tránh các vấn đề tương thích và đảm bảo quá trình cài đặt diễn ra suôn sẻ.

gem update --system

Sau khi gem đã được cập nhật, bạn có thể tiến hành cài đặt Rails. Lệnh sau sẽ tải về và cài đặt phiên bản Rails ổn định mới nhất cùng với tất cả các gem phụ thuộc của nó.

gem install rails

Hình minh họa

Quá trình này có thể mất một chút thời gian vì Rails có khá nhiều dependencies cần được cài đặt. Công cụ gem sẽ tự động xử lý tất cả, từ việc tải về, giải nén đến cài đặt vào đúng vị trí trong môi trường Ruby hiện tại của bạn. Bạn sẽ thấy một danh sách các gem được cài đặt trên Terminal. Sau khi quá trình hoàn tất, Rails đã sẵn sàng để bạn sử dụng.

Xác minh Rails thành công và tạo dự án mẫu

Tương tự như khi kiểm tra RVM và Ruby, chúng ta cần xác minh rằng Rails đã được cài đặt thành công. Hãy chạy lệnh sau để kiểm tra phiên bản Rails:

rails -v

Nếu bạn thấy kết quả như Rails 7.0.4, xin chúc mừng, bạn đã cài đặt thành công Rails! Bây giờ, để thực sự chắc chắn rằng mọi thứ hoạt động cùng nhau, hãy tạo một dự án Rails đầu tiên. Đây là bài kiểm tra cuối cùng cho toàn bộ quá trình cài đặt.

Di chuyển đến thư mục bạn muốn chứa dự án (ví dụ: ~/Projects) và chạy lệnh:

rails new my_first_app

Lệnh này sẽ tạo một thư mục mới có tên my_first_app chứa toàn bộ cấu trúc của một ứng dụng Rails hoàn chỉnh, đồng thời tự động chạy bundle install để cài đặt tất cả các gem cần thiết cho dự án. Sau khi lệnh thực thi xong, hãy di chuyển vào thư mục dự án:

cd my_first_app

Môi trường phát triển Ruby on Rails của bạn trên Ubuntu 20.04 giờ đây đã được thiết lập hoàn chỉnh. Bạn đã sẵn sàng để bắt đầu xây dựng ứng dụng của riêng mình.

Cấu hình và kiểm tra môi trường phát triển

Sau khi đã cài đặt thành công Ruby, Rails và tạo dự án đầu tiên, bước tiếp theo là khởi động máy chủ phát triển và đảm bảo rằng ứng dụng của bạn có thể chạy được. Đây là khoảnh khắc thú vị nhất, khi bạn được nhìn thấy thành quả của mình sau các bước thiết lập kỹ thuật. Việc kiểm tra môi trường chạy không chỉ xác nhận cài đặt thành công mà còn giúp bạn làm quen với quy trình làm việc cơ bản trong Rails.

Thiết lập cơ bản cho môi trường phát triển Ubuntu

Trong hầu hết các trường hợp sử dụng RVM, môi trường của bạn đã được cấu hình gần như hoàn hảo. RVM tự động quản lý biến môi trường PATH, đảm bảo rằng khi bạn gõ lệnh ruby, rails, hay gem, hệ thống sẽ sử dụng các phiên bản được cài đặt bởi RVM thay vì các phiên bản hệ thống. Tuy nhiên, việc biết cách kiểm tra là rất quan trọng để xử lý sự cố sau này.

Bạn có thể kiểm tra biến PATH của mình bằng lệnh:

echo $PATH

Hãy chắc chắn rằng đường dẫn đến thư mục shims của RVM (ví dụ: /home/your_user/.rvm/gems/ruby-3.1.2/bin/home/your_user/.rvm/rubies/ruby-3.1.2/bin) xuất hiện ở phần đầu của chuỗi kết quả. Điều này đảm bảo rằng các lệnh của RVM được ưu tiên. Nếu không thấy, bạn có thể cần kiểm tra lại tệp ~/.bashrc hoặc ~/.zshrc để chắc chắn dòng source của RVM được đặt đúng chỗ và đã được tải lại.

Chạy server Rails và thử nghiệm ứng dụng cơ bản

Bây giờ, hãy khởi động máy chủ phát triển của Rails. Từ bên trong thư mục dự án của bạn (my_first_app), chạy lệnh sau:

rails server

Bạn cũng có thể dùng lệnh viết tắt là rails s. Lệnh này sẽ khởi động máy chủ web Puma, máy chủ mặc định của Rails. Bạn sẽ thấy các dòng log xuất hiện trên Terminal, cho biết máy chủ đang lắng nghe các kết nối. Dòng quan trọng nhất sẽ trông như thế này:

=> Booting Puma=> Rails 7.0.4 application starting in development=> Run `bin/rails server --help` for more startup optionsPuma starting in single mode...* Puma version: 5.6.5 (ruby 3.1.2-p20) ("Birdie's Version")* Min threads: 5* Max threads: 5* Environment: development* PID: 12345* Listening on http://127.0.0.1:3000* Listening on http://[::1]:3000Use Ctrl-C to stop

Hình minh họa

Máy chủ hiện đang chạy và sẵn sàng nhận yêu cầu tại địa chỉ http://localhost:3000 hoặc http://127.0.0.1:3000. Hãy mở trình duyệt web của bạn lên và truy cập vào địa chỉ này. Nếu mọi thứ thành công, bạn sẽ được chào đón bằng trang “Yay! You’re on Rails!” đặc trưng. Đây là bằng chứng xác thực rằng toàn bộ môi trường của bạn, từ Ubuntu, RVM, Ruby đến Rails, đều đang hoạt động hài hòa với nhau. Để dừng máy chủ, quay lại Terminal và nhấn tổ hợp phím Ctrl + C.

Xử lý các phụ thuộc cần thiết cho Ruby on Rails

Một trong những sức mạnh lớn nhất của Ruby on Rails là hệ sinh thái gem phong phú. Hầu hết mọi tính năng bạn có thể nghĩ đến đều có thể đã được ai đó đóng gói thành một gem. Tuy nhiên, việc quản lý các gem này cho từng dự án là một công việc quan trọng. Đây là lúc Bundler, một công cụ không thể thiếu trong mọi dự án Rails, phát huy tác dụng.

Cài đặt và cập nhật bundler

Bundler là một trình quản lý phụ thuộc cho Ruby. Nó đảm bảo rằng dự án của bạn luôn sử dụng chính xác phiên bản gem mà bạn đã chỉ định, giúp môi trường phát triển và sản phẩm của bạn nhất quán trên mọi máy tính. Khi bạn tạo một dự án Rails mới, Bundler thường đã được cài đặt sẵn như một gem cơ bản.

Tuy nhiên, bạn nên chủ động cài đặt hoặc cập nhật nó để đảm bảo mình đang dùng phiên bản mới nhất:

gem install bundler

Sau khi cài đặt xong, bạn có thể sử dụng Bundler để quản lý các gem của dự án. Mọi dự án Rails đều có một tệp tên là Gemfile. Đây là nơi bạn khai báo tất cả các gem mà dự án của bạn cần. Khi bạn chạy lệnh bundle install trong thư mục dự án, Bundler sẽ đọc tệp Gemfile, tìm và cài đặt tất cả các gem được liệt kê với phiên bản phù hợp. Nó cũng tạo ra một tệp Gemfile.lock, ghi lại chính xác phiên bản của từng gem đã được cài đặt, đảm bảo tính nhất quán cho dự án.

Hình minh họa

Quản lý các gem và dependencies phổ biến

Khi làm việc với Gemfile, bạn sẽ thường xuyên cần thêm, xóa hoặc cập nhật các gem. Ví dụ, để thêm một gem phổ biến cho việc phân trang như pagy, bạn chỉ cần thêm dòng sau vào Gemfile:

gem 'pagy'

Sau đó, chạy bundle install để Bundler tải và cài đặt gem này. Một lưu ý quan trọng là việc chỉ định phiên bản cho gem. Để tránh các lỗi không mong muốn khi một gem cập nhật phiên bản mới và gây ra thay đổi đột phá (breaking change), bạn nên chỉ định phiên bản một cách hợp lý. Ví dụ:

  • gem 'nokogiri', '~> 1.13': Cho phép cài đặt các phiên bản từ 1.13 đến dưới 1.14. Đây là cách phổ biến nhất, cho phép nhận các bản vá lỗi nhỏ mà không gây ra thay đổi lớn.
  • gem 'rails', '7.0.4': Chỉ cài đặt chính xác phiên bản 7.0.4.
  • gem 'devise', '>= 4.8': Cài đặt phiên bản 4.8 hoặc mới hơn.

Việc quản lý Gemfile một cách cẩn thận là chìa khóa để duy trì một dự án Rails ổn định và dễ bảo trì trong dài hạn. Hãy luôn kiểm tra Gemfile.lock vào hệ thống quản lý phiên bản (như Git) để đảm bảo mọi thành viên trong nhóm đều làm việc trên cùng một bộ gem.

Giải pháp và lưu ý khi gặp lỗi trong quá trình cài đặt

Mặc dù việc sử dụng RVM đã giảm thiểu rất nhiều rủi ro, nhưng không có quá trình cài đặt nào là hoàn hảo 100%. Đôi khi, bạn vẫn có thể gặp phải một số lỗi không mong muốn. Điều quan trọng là phải giữ bình tĩnh, đọc kỹ thông báo lỗi và hiểu nguyên nhân gốc rễ. Dưới đây là một số lỗi thường gặp và cách khắc phục chúng.

Lỗi thường gặp khi cài RVM và Ruby

Một số vấn đề phổ biến nhất khi cài RVM và Ruby thường liên quan đến môi trường hệ thống.

  • Lỗi thiếu thư viện hệ thống: Đây là lỗi phổ biến nhất. Nếu bạn gặp thông báo lỗi trong quá trình rvm install ruby đề cập đến việc thiếu các tệp header như openssl/ssl.h hoặc readline.h, điều đó có nghĩa là bạn đã bỏ lỡ bước chuẩn bị môi trường. Hãy quay lại phần “Chuẩn bị môi trường trên Ubuntu 20.04” và đảm bảo bạn đã cài đặt tất cả các gói -dev cần thiết. Sau khi cài đặt xong, hãy thử lại lệnh rvm install.
  • Lỗi cấp quyền (Permission Denied): Nếu bạn thấy lỗi liên quan đến quyền truy cập, rất có thể bạn đã vô tình sử dụng sudo với một lệnh RVM hoặc gem nào đó. RVM được thiết kế để chạy hoàn toàn ở cấp độ người dùng. Sử dụng sudo có thể làm hỏng quyền sở hữu các tệp trong thư mục ~/.rvm. Để khắc phục, bạn có thể thử chạy rvm fix-permissions hoặc trong trường hợp xấu nhất là xóa hoàn toàn RVM (rvm implode) và cài đặt lại từ đầu.
  • Lỗi kết nối mạng: Khi tải khóa GPG hoặc script cài đặt RVM, bạn có thể gặp lỗi do tường lửa hoặc sự cố mạng. Hãy đảm bảo rằng kết nối internet của bạn ổn định và thử lại. Đôi khi, máy chủ khóa GPG có thể tạm thời không khả dụng, hãy kiên nhẫn và thử lại sau ít phút.

Hình minh họa

Lỗi khi cài đặt hoặc sử dụng Rails

Khi đã có Ruby, các lỗi tiếp theo thường liên quan đến gem và các phụ thuộc của chúng.

  • Xung đột phiên bản gem: Bundler rất giỏi trong việc giải quyết các phụ thuộc, nhưng đôi khi nó cũng “bó tay”. Ví dụ, dự án của bạn yêu cầu gem A phiên bản 1.0 và gem B, nhưng gem B lại yêu cầu gem A phiên bản 2.0. Lúc này, Bundler sẽ báo lỗi. Bạn cần đọc kỹ thông báo lỗi để xem gem nào đang gây xung đột và điều chỉnh phiên bản trong Gemfile cho phù hợp.
  • Lỗi Bundler khi cài đặt gem “khó tính”: Một số gem như nokogiri (phân tích XML/HTML) hay pg (kết nối PostgreSQL) cần được biên dịch trên máy của bạn và yêu cầu các thư viện hệ thống cụ thể. Nếu bạn gặp lỗi khi bundle install các gem này, thông báo lỗi thường sẽ chỉ rõ thư viện nào đang bị thiếu (ví dụ: libxml2-dev cho nokogiri, libpq-dev cho pg). Hãy dùng sudo apt install để cài đặt thư viện đó và chạy lại bundle install.
  • Lỗi khi chạy rails server: Một lỗi phổ biến với các phiên bản Rails mới là thiếu môi trường thực thi JavaScript. Rails 7 mặc định sử dụng importmap-rails không cần Node.js. Tuy nhiên, nếu bạn làm việc với dự án cũ hơn hoặc dùng các công cụ như Webpacker, bạn sẽ cần cài đặt Node.js và Yarn. Lỗi thường có thông báo rõ ràng như “ExecJS::RuntimeUnavailable”. Cài đặt Node.js sẽ giải quyết được vấn đề này.

Best Practices

Để có một môi trường phát triển Ruby on Rails ổn định, hiệu quả và dễ quản lý trong dài hạn, việc tuân thủ các thực hành tốt nhất (best practices) là vô cùng quan trọng. Những thói quen này không chỉ giúp bạn tránh được các lỗi phổ biến mà còn giúp dự án của bạn trở nên chuyên nghiệp và dễ dàng hợp tác hơn.

  • Luôn cập nhật RVM và Ruby lên phiên bản mới nhất ổn định: Các phiên bản mới của RVM thường đi kèm với các bản sửa lỗi và hỗ trợ tốt hơn cho các phiên bản Ruby mới. Hãy thỉnh thoảng chạy lệnh rvm get stable để cập nhật RVM. Tương tự, việc sử dụng các phiên bản Ruby mới (trong cùng một nhánh major) giúp bạn hưởng lợi từ các cải tiến về hiệu suất và bảo mật.
  • Sử dụng gemset trong RVM để quản lý dự án riêng biệt: Đây là một trong những tính năng mạnh mẽ nhất của RVM nhưng thường bị bỏ qua. Gemset cho phép bạn tạo ra các môi trường gem hoàn toàn độc lập cho mỗi dự án. Điều này có nghĩa là các gem của dự án A sẽ không bao giờ xung đột với các gem của dự án B. Để tạo và sử dụng một gemset, bạn chỉ cần chạy: rvm use ruby-3.1.2@my_first_app --create --default. Kể từ đó, mọi gem bạn cài đặt sẽ chỉ thuộc về gemset my_first_app.
  • Không bao giờ cài Ruby hoặc gem bằng sudo khi dùng RVM: RVM được thiết kế để hoạt động hoàn toàn trong thư mục chính của người dùng (~/.rvm). Việc sử dụng sudo sẽ làm thay đổi quyền sở hữu các tệp, gây ra các lỗi permission denied khó chịu và làm mất đi tính an toàn của môi trường. Hãy tập thói quen không gõ sudo trước các lệnh gem, bundle, hay rake.
  • Sao lưu file cấu hình môi trường trước khi chỉnh sửa: Trước khi thực hiện bất kỳ thay đổi nào đối với các tệp cấu hình shell quan trọng như .bashrc, .zshrc, hoặc .profile, hãy tạo một bản sao lưu. Một lỗi nhỏ trong các tệp này có thể khiến Terminal của bạn không hoạt động đúng cách. Một lệnh đơn giản như cp ~/.bashrc ~/.bashrc.bak có thể cứu bạn khỏi nhiều giờ gỡ lỗi.

Hình minh họa

Kết luận

Vậy là chúng ta đã cùng nhau đi qua một hành trình chi tiết để cài đặt một môi trường phát triển Ruby on Rails hoàn chỉnh và chuyên nghiệp trên Ubuntu 20.04 bằng RVM. Bằng cách tuân thủ các bước một cách cẩn thận, bạn đã xây dựng được một nền tảng vững chắc, linh hoạt và dễ dàng quản lý. Chúng ta đã bắt đầu từ việc chuẩn bị hệ thống, cài đặt các phụ thuộc cần thiết, sau đó cài đặt RVM để quản lý các phiên bản Ruby, và cuối cùng là cài đặt Rails và tạo ra dự án đầu tiên.

Sử dụng RVM không chỉ giúp bạn tránh được những xung đột phiên bản phiền phức mà còn mang lại khả năng làm việc trên nhiều dự án với các yêu cầu môi trường khác nhau một cách dễ dàng thông qua các gemset. Đây là một phương pháp được cộng đồng Ruby tin dùng và là một kỹ năng quan trọng cho bất kỳ lập trình viên Rails nào. Việc nắm vững các bước xử lý lỗi và các thực hành tốt nhất sẽ giúp bạn tự tin hơn khi đối mặt với các thách thức trong quá trình phát triển.

Bây giờ, môi trường của bạn đã sẵn sàng. Đừng ngần ngại, hãy bắt tay vào việc xây dựng ứng dụng Rails đầu tiên của mình, khám phá các tính năng mạnh mẽ của framework và tham gia vào cộng đồng Ruby on Rails năng động. Chúc bạn có những trải nghiệm thú vị và thành công trên con đường lập trình của mình!

Đánh giá
Tác giả

Mạnh Đức

Có cao nhân từng nói rằng: "Kiến thức trên thế giới này đầy rẫy trên internet. Tôi chỉ là người lao công cần mẫn đem nó tới cho người cần mà thôi !"

Chia sẻ
Bài viết liên quan