Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Ruby

Rails 8 ra mắt:Các tính năng chính và tự do triển khai

Rails 8 cuối cùng cũng đã ra mắt và nó đang làm mọi thứ thay đổi theo một cách khá thú vị. Nếu bạn đã hoạt động trong cộng đồng Rails, bạn có thể đã nghe khẩu hiệu:"Không cần PaaS".

Đây là một nhiệm vụ bất thường (nhưng không có gì đáng ngạc nhiên). Bản phát hành này nhằm mục đích giúp việc triển khai các ứng dụng Rails của bạn trở nên dễ dàng hơn mà không cần nền tảng dưới dạng dịch vụ (PaaS) đầy đủ tính năng.

Nền tảng cung cấp một cách để các nhà phát triển đưa ứng dụng của họ lên web mà không cần quản lý cơ sở hạ tầng cơ bản chạy mã của họ. Các doanh nghiệp như Heroku, Render, Fly và Railway đều là những lựa chọn phổ biến trong cộng đồng Rails. Các nhà phát triển thường sẵn sàng đánh đổi một số chi phí lưu trữ bổ sung để lấy trải nghiệm mà nền tảng dành cho nhà phát triển mang lại, nhưng bản phát hành Rails này đang tìm cách làm cho giao dịch đó bớt hấp dẫn hơn một chút.

Trong bài viết này, chúng tôi sẽ xem xét các tính năng mới và cải tiến đã giúp điều này trở nên khả thi. Những thứ như Solid Cache, Solid Queue và Solid Cable là những thứ mới trong Rails 8 và loại bỏ một số phụ thuộc mà chúng ta từng cần (chẳng hạn như Redis). Kamal 2 hiện là mặc định cho việc triển khai và có các trình tạo xác thực mới giúp loại bỏ nhu cầu về một loại đá quý khác. Hãy bắt tay vào thực hiện.

Rails 8 đã thay đổi điều gì?

Rails (và cụ thể là Rails 8) thực sự muốn để giúp bạn chuyển ứng dụng sang sản xuất dễ dàng hơn mà không cần phải trả tiền cho nền tảng. Hầu hết các thay đổi trong bản phát hành Rails này đều xoay quanh sứ mệnh đó - giảm bớt công việc cần thiết để tự lưu trữ các ứng dụng Rails mà không cần PaaS!

Rails 8 ra mắt:Các tính năng chính và tự do triển khai Hãy xem xét kỹ hơn từng thay đổi chính.

Bộ đệm đặc cho bộ nhớ đệm không cần Redis

Rails sử dụng ActiveSupport để lưu vào bộ nhớ đệm mọi thứ, điều này rất quan trọng để giúp ứng dụng web hoạt động hiệu quả. Trong lịch sử, mọi người dựa vào Redis để lưu vào bộ nhớ đệm vì nó nhanh và đáng tin cậy.

Solid Cache đã được phát hành cách đây một thời gian dưới dạng kho lưu trữ bộ đệm không có Redis cho ActiveSupport Nó đã được sử dụng tại 37signals và hơn thế nữa trong một thời gian và Rails hiện đang quảng bá nó như là lựa chọn mặc định. Bởi vì nó sử dụng cơ sở dữ liệu (SQLite theo mặc định) để lưu trữ bộ nhớ đệm thay vì RAM, nên bạn có thêm lợi ích là có thể lưu vào bộ nhớ đệm nhiều hơn bình thường. Dung lượng cơ sở dữ liệu rẻ hơn RAM, do đó, mặc dù việc sử dụng cơ sở dữ liệu để sao lưu hệ thống bộ nhớ đệm sẽ chậm hơn so với sử dụng RAM nhưng khả năng lưu nhiều nội dung vào bộ nhớ đệm trong thời gian dài hơn có thể giúp một số ứng dụng hoạt động hiệu quả hơn.

Sự cân bằng hiệu suất này rất tốt cho một số trường hợp sử dụng nhưng có thể không lý tưởng cho những trường hợp khác, vì vậy vẫn dễ dàng sử dụng một trong các kho lưu trữ bộ đệm khác. Việc loại bỏ nhu cầu sử dụng Redis hoặc Memcached theo mặc định sẽ giúp bạn tiến một bước gần hơn tới nhiệm vụ "Không cần PaaS" mà Rails đang thực hiện.

Hàng đợi vững chắc cho các tác vụ nền không có Redis

Có thể bạn đã biết Rails sử dụng ActiveJob thư viện để giúp bạn viết và chạy các công việc nền dễ dàng hơn. Giống như bộ nhớ đệm, Rails cho phép bạn chọn phần phụ trợ hỗ trợ ActiveJob . Nhiều người yêu thích Sidekiq hoặc Good Job, nhưng hầu hết các lựa chọn ngày nay đều có hai vấn đề:

  • Chúng là một phần phụ thuộc khác để nhập, quản lý và có khả năng thanh toán
  • Họ dựa vào một dịch vụ khác như Redis (mà bạn phải lưu trữ, quản lý và có khả năng phải trả tiền)

Solid Queue tìm cách giải quyết cả hai vấn đề này bằng cách quản lý các công việc nền mà không cần dựa vào Redis. Nếu bạn đang sử dụng Sidekiq hoặc một nhà cung cấp dịch vụ xếp hàng khác phụ thuộc vào Redis thì Solid Queue là một giải pháp thay thế giúp giảm độ phức tạp và giúp việc lưu trữ dễ dàng hơn. Giống như Solid Cache, Solid Queue sử dụng cơ sở dữ liệu của ứng dụng thay vì RAM để theo dõi các công việc nền. Đây là một tính năng khác mà Rails hiện đang cung cấp theo mặc định để giảm sự phụ thuộc và giúp việc triển khai sản xuất trở nên đơn giản hơn.

Cáp chắc chắn cho ổ cắm web không cần Redis

Rails sử dụng Action Cable để giúp các nhà phát triển dễ dàng sử dụng các ổ cắm web cho các tính năng thời gian thực. Trong lịch sử, điều này đòi hỏi Redis. Bạn có thể đoán được chuyện này sẽ dẫn đến đâu!

Giữ nguyên chủ đề 'Solid', Rails 8 đi kèm với một bộ chuyển đổi dựa trên cơ sở dữ liệu mặc định khác. Bạn không cần để sử dụng nó, nhưng nếu bạn đang muốn sử dụng ổ cắm web và muốn tránh phải định cấu hình và bảo trì Redis thì đây là một tùy chọn tuyệt vời của bên thứ nhất. Cùng với Solid Cache và Solid Queue, Solid Cable giúp việc vận chuyển các ứng dụng Rails mà không cần PaaS trở nên dễ dàng hơn bằng cách loại bỏ nhu cầu về Redis và dựa vào cơ sở dữ liệu.

Kamal 2 để triển khai dễ dàng hơn

Tính năng mới tiếp theo trong Rails 8 khá khác so với Solid adapter. Tuy nhiên, Kamal (và cụ thể là Kamal 2) giúp việc gửi ứng dụng bằng phần cứng của riêng bạn trở nên đơn giản hơn. Bởi vì Docker đã giúp việc mô-đun hóa phần mềm trở nên dễ dàng nên việc có một phần mềm để vận chuyển các bộ chứa Docker, bất kể ngôn ngữ, hoàn toàn có ý nghĩa.

Theo tôi, Kamal, ngay cả khi được kết hợp với phần còn lại của Rails 8, cũng không thể thực sự chạm tới trải nghiệm của nhà phát triển trên hầu hết các nền tảng. Tuy nhiên, nó khiến mọi việc dễ dàng hơn nhiều để gửi phần mềm đến máy chủ web của riêng bạn, ngay cả khi bạn không sử dụng Rails! Nó có thể không phải là sự thay thế hoàn toàn cho PaaS, nhưng khi bạn đã hoàn tất quá trình thiết lập ban đầu, hãy chạy kamal deploy là một cải tiến lớn so với việc tự mình triển khai.

Trình tạo xác thực (không có Devise!)

Nếu bạn đang tạo một ứng dụng Rails có người dùng , có thể bạn sẽ cần xác thực. Cho đến nay, Rails chưa bao gồm tính năng xác thực như một phần của framework. Cộng đồng có một số giải pháp tuyệt vời để giúp các nhà phát triển Rails viết xác thực, trong đó phổ biến nhất là Devise.

Rails 8 đi kèm với trình tạo xác thực . Đây không phải là một hệ thống xác thực đầy đủ nhưng nó đủ để giúp bạn thực hiện đúng các phần quan trọng (như bảo mật). Nhà phát triển có quyền viết các chế độ xem để xử lý luồng đăng nhập và đăng ký của người dùng, nhưng trình tạo sẽ xử lý các phiên, xác thực mật khẩu và thậm chí cả email mật khẩu. DHH đã nói một chút về việc lựa chọn loại trừ các chế độ xem trong trình xác thực là một lựa chọn có chủ ý nhằm ngăn các ứng dụng Rails trông giống nhau.

Việc bổ sung các trình tạo mới này không trực tiếp đơn giản hóa các ứng dụng vận chuyển nhưng nó cung cấp giải pháp của bên thứ nhất cho một vấn đề phổ biến trong việc xây dựng các ứng dụng web mà Rails đã thiếu trong một thời gian dài.

Trục hỗ trợ cho đường dẫn nội dung

Một trong những thay đổi lớn nhất (dưới mui xe) trong Rails 8 là việc chuyển từ Sprockets sang Propshaft cho đường dẫn nội dung mặc định. Rails vẫn hỗ trợ Sprockets nếu bạn muốn hoặc cần sử dụng nó, nhưng các ứng dụng Rails 8 8 mới mặc định là Propshaft.

Propshaft rất quan tâm đến việc không gói hoặc giảm thiểu tài sản. Giống như Rails đang tìm cách làm cho PaaS trở nên không cần thiết, nó cũng đang cố gắng làm cho các quy trình xây dựng phức tạp trở nên không cần thiết. Giống như nhiều mặc định mới khác trong Rails 8, bạn có thể sử dụng Propshaft với các phiên bản Rails cũ hơn và vẫn sử dụng Sprockets cho Rails 8!

SQLite và Rails

Mặc dù SQLite không hẳn là một phần của Rails nhưng Rails thậm chí còn dựa vào SQLite nhiều hơn với bản phát hành này. SQLite là một công cụ cơ sở dữ liệu không có máy chủ, làm cho nó đơn giản hơn Postgres. Nếu ứng dụng Rails của bạn sử dụng SQLite, bạn sẽ không cần quy trình cơ sở dữ liệu chạy riêng biệt với quy trình web của mình. Tất nhiên, điều này rất phù hợp với sứ mệnh của Rails 8, giúp việc vận chuyển các ứng dụng web trở nên đơn giản hơn.

Rails 8 đi kèm với sự hỗ trợ của bên thứ nhất dành cho SQLite, đảm bảo nó đủ mạnh để xử lý các nhu cầu cơ sở dữ liệu truyền thống của bạn và hỗ trợ các bộ điều hợp Solid dựa trên cơ sở dữ liệu mới.

Mọi thứ mới trong Rails 8 đều nhằm mục đích làm cho nền tảng trở nên ít cần thiết hơn

Nếu bạn đang nâng cấp ứng dụng Rails hiện có lên Rails 8, bạn không cần phải làm gì nhiều để hoàn tất quá trình nâng cấp. Chỉ một số thứ bị xóa, chủ yếu ở Active Record , vốn đã có thông báo ngừng sử dụng từ lâu. Tất nhiên, bạn có thể tận dụng tất cả các giá trị mặc định "mới trong Rails 8" để đơn giản hóa việc triển khai ứng dụng của mình, nhưng đó là tùy chọn.

Những thay đổi lớn nhất trong Rails 8 là dành cho các ứng dụng Rails mới! Các ứng dụng Rails mới sẽ mặc định sử dụng Solid Queue cho các tác vụ nền, Solid Cache cho bộ nhớ đệm, Solid Cable cho ổ cắm web, Propshaft cho đường dẫn tài sản và Kamal 2 cho việc triển khai.

Rails gần đây đang thực hiện sứ mệnh nén sự phức tạp và cung cấp một framework đầy đủ tính năng để tạo các ứng dụng web hiện đại. Rails 8 bước tiến xa hơn việc tạo ra ứng dụng web và vận chuyển ứng dụng web trong khi vẫn tương thích với các tùy chọn hiện có.

Bạn có thể sử dụng tất cả, một số hoặc không sử dụng giá trị mặc định nào của Rails 8 và vẫn sử dụng nền tảng nếu bạn thích trải nghiệm đó của nhà phát triển. Tuy nhiên, bản phát hành này nhằm mục đích cung cấp cho bạn tùy chọn bỏ qua nền tảng và có nhiều quyền sở hữu hơn đối với cơ sở hạ tầng của mình.

Nếu bạn thích bài viết này, hãy đăng ký nhận bản tin Honeybadger để biết thêm tin tức và hướng dẫn về Ruby và Rails ngay trong hộp thư đến của bạn!