Ai đó có thể đã từng nói với bạn, "Đừng sử dụng hệ thống Ruby." Đó là lời khuyên tốt, nhưng tại sao? Hãy cùng tìm hiểu.
Bạn có Ruby nào?
MacOS được cài đặt sẵn "system Ruby".
Sử dụng which
để xem Ruby được cài đặt ở đâu:
$ which ruby
/usr/bin/ruby
Nếu bạn thấy /usr/bin/ruby
, nó là hệ thống macOS được cài đặt sẵn Ruby.
Bạn có thể sử dụng Ruby hệ thống để chạy các tập lệnh sysadmin, miễn là bạn không thay đổi hệ thống Ruby bằng cách cố gắng cập nhật nó hoặc thêm đá quý.
Nhưng bạn không muốn sử dụng nó khi bạn đang phát triển các dự án trong Ruby.
Ruby để phát triển
Để phát triển các dự án bằng Ruby, bạn nên Cài đặt Ruby bằng Homebrew hoặc sử dụng trình quản lý phiên bản như asdf, chruby, rbenv hoặc rvm.
Trình quản lý phiên bản sẽ giúp ích nếu bạn đang thực hiện nhiều dự án và không thể cập nhật tất cả cùng một lúc. Để có hướng dẫn so sánh các trình quản lý phiên bản và chỉ ra cách tốt nhất để cài đặt Ruby, hãy xem bài viết của tôi Cài đặt Ruby trên máy Mac.
Nhưng tại sao không sử dụng Ruby mặc định của macOS? Hãy cùng xem lý do tại sao việc sử dụng Ruby mặc định của Mac để phát triển là một ý tưởng tồi.
Việc cài đặt viên ngọc phức tạp
RubyGems là thư viện phần mềm được tạo sẵn giúp phát triển dễ dàng và thú vị trong Ruby. Hầu hết các dự án Ruby sử dụng ít nhất một vài viên ngọc.
Nếu bạn sử dụng hệ thống Mac Ruby, chạy gem install
sẽ cố gắng lưu đá quý vào thư mục Ruby hệ thống /Library/Ruby/Gems/2.6.0
. Thư mục đó thuộc sở hữu của root
, siêu người dùng hệ thống. Người dùng bình thường không được phép ghi vào nó (và bạn thực sự không nên thay đổi thư mục này).
Nếu bạn cố gắng cài đặt một viên đá quý, ví dụ:gem install rails
, bạn sẽ gặp lỗi quyền:
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory
Vi phạm bảo mật hệ thống
Các hệ thống dựa trên Unix rất mạnh mẽ, vì vậy có một giải pháp. Bạn có thể cài đặt đá quý làm siêu người dùng để ghi đè giới hạn quyền. Nhưng đừng làm điều này!
$ sudo gem install rails
Bất kỳ lúc nào bạn chuẩn bị chạy sudo
, bạn nên dừng lại và hỏi xem bạn có sắp tự bắn vào chân mình hay không.
Trong trường hợp này, bạn cần sudo
bởi vì bạn đang thay đổi các tệp hệ thống được quản lý bởi Hệ điều hành. Đừng làm điều đó! Bạn có thể để hệ thống ở trạng thái bị hỏng hoặc bị xâm nhập. Tệ hơn nữa, một viên đá quý có thể chứa mã độc hại giả mạo máy tính của bạn.
Quản lý đá quý
Các nhà phát triển có kinh nghiệm sử dụng Bundler để cài đặt đá quý và quản lý các phần phụ thuộc của chúng.
Hãy tưởng tượng bạn có các dự án sử dụng các phiên bản đá quý khác nhau (có thể có một bản phát hành đá quý mới giữa các dự án của bạn). Hoặc có thể hai viên ngọc khác nhau trong dự án của bạn dựa trên các phiên bản khác nhau của một viên ngọc phụ thuộc.
Bundler sử dụng một Gemfile trong thư mục dự án của bạn để theo dõi các đá quý bạn cần. Nếu bạn sử dụng sudo
để cài đặt đá quý với hệ thống Ruby, bạn sẽ kết thúc với một mớ hỗn độn các viên đá quý không tương thích trong thư mục Ruby hệ thống.
Bạn có thể khắc phục sự cố về quyền của hệ thống bằng cách cài đặt Bundler bằng một lệnh sử dụng thư mục chính của bạn cho đá quý. Nhưng cài đặt Ruby với Homebrew hoặc sử dụng trình quản lý phiên bản và sử dụng Bundler được cài đặt sẽ dễ dàng hơn, sẽ thiết lập chính xác môi trường phát triển cục bộ của bạn.
Sử dụng Ruby mới nhất
Khi bạn bắt đầu một dự án, hãy sử dụng bản phát hành Ruby mới nhất (phiên bản này là 3.0 tại thời điểm nó được viết).
Hệ thống Ruby trong macOS Catalina hoặc Big Sur là Ruby 2.6.3, đã cũ. Nếu bạn mới bắt đầu với Ruby, hãy cài đặt bằng Homebrew và làm việc trên một dự án với Ruby 3.0. Khi bạn bắt đầu xây dựng một dự án khác, có thể đã đến lúc cài đặt trình quản lý phiên bản để bạn có thể sắp xếp các dự án với các phiên bản Ruby khác nhau.
MacOS sau Big Sur
MacOS Big Sur hiện là phiên bản hiện tại. Apple nói:
"Thời gian chạy của ngôn ngữ kịch bản như Python, Ruby và Perl được bao gồm trong macOS để tương thích với phần mềm cũ. Các phiên bản tương lai của macOS sẽ không bao gồm thời gian chạy của ngôn ngữ kịch bản theo mặc định và có thể yêu cầu bạn cài đặt các gói bổ sung . "
Nếu bạn đang đọc nó vào cuối năm 2021, hệ thống Ruby có thể đã biến mất. Nếu không, hãy tự chuẩn bị bằng cách cài đặt Ruby bằng Homebrew hoặc trình quản lý phiên bản.
Thưởng thức Ruby
Đối với các nhà phát triển dự định xây dựng các ứng dụng web với Rails, tôi đã viết một hướng dẫn Cài đặt Rails trên máy Mac, vượt xa Cài đặt Ruby trên máy Mac để chỉ ra cách chọn một trình quản lý phiên bản sẽ hoạt động với Node cũng như Ruby.
Tận hưởng niềm vui khi viết mã trong Ruby! Rốt cuộc, nó được biết đến như một ngôn ngữ dành riêng cho hạnh phúc của các lập trình viên. Nhưng hãy nhớ rằng, hệ thống Ruby dành cho macOS, không dành cho bạn.