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

Khám phá Ruby on Rails 8:Các tính năng và cải tiến mới

Bản Rails 8 beta đầu tiên đã chính thức được phát hành, mang đến một bộ tính năng, sửa lỗi và cải tiến thú vị. Phiên bản này được xây dựng trên nền tảng của Rails 7.2, đồng thời giới thiệu các tính năng và tối ưu hóa mới để giúp quá trình phát triển Rails trở nên hiệu quả và thú vị hơn.

Các điểm nổi bật chính bao gồm tích hợp với Kamal 2 để triển khai dễ dàng, giới thiệu Propshaft làm đường dẫn tài sản mặc định mới và các cải tiến mở rộng của ActiveRecord. Rails 8 cũng mang đến một số nâng cấp tích hợp SQLite khiến nó trở thành một lựa chọn khả thi để sử dụng trong sản xuất.

Hãy cùng tìm hiểu và khám phá mọi thứ mà Rails 8 mang lại!

Triển khai dễ dàng với Kamal 2 và Thruster

Rails 8 giúp việc triển khai ứng dụng của bạn trở nên đơn giản với Kamal 2 và Thruster.

Kamal 2 giảm nhu cầu phụ thuộc vào các dịch vụ đám mây được quản lý và nền tảng Nền tảng dưới dạng dịch vụ (PaaS) bằng cách cho phép triển khai nhanh chóng và dễ dàng lên máy ảo đám mây, máy chủ kim loại trần hoặc môi trường VPS chỉ trong vài phút.

Với một lệnh duy nhất (kamal setup ), bạn có thể thiết lập Môi trường Rails sẵn sàng sản xuất trên hộp Linux tiêu chuẩn, giúp việc triển khai trở nên dễ dàng và tiết kiệm chi phí.

Kamal 2 cũng tích hợp với Thruster, một proxy tùy chỉnh được xây dựng riêng cho Rails cho phép triển khai không có thời gian ngừng hoạt động, hỗ trợ HTTP/2, SSL tự động với Let's Encrypt, nén Gzip và dễ dàng lưu trữ nhiều ứng dụng trên một máy chủ — tất cả đều không cần thiết lập phức tạp.

Với Kamal 2 và Thruster, Rails 8 giúp việc triển khai ứng dụng trở nên dễ dàng hơn bao giờ hết. Và nếu bạn muốn thiết lập triển khai khác, bạn có thể chọn không tham gia bằng cách sử dụng--skip-kamal gắn cờ để duy trì quy trình làm việc hiện tại của bạn.

Triển khai Rails gọn gàng hơn với bộ điều hợp vững chắc

Một trong những cải tiến lớn trong Rails 8 là việc triển khai đơn giản hơn bằng cách giảm số lượng dịch vụ bổ sung cần thiết để triển khai các yêu cầu ứng dụng web phổ biến.

Theo truyền thống, nếu bạn yêu cầu các tính năng như hàng đợi công việc, bộ nhớ đệm và pub/gửi tin nhắn phụ, bạn sẽ sử dụng kết hợp cơ sở dữ liệu như PostgreSQL với Redis cho các hàm phụ trợ.

Với Rails 8, bạn có thể xử lý tất cả những điều này chỉ bằng SQLite, nhờ ba bộ chuyển đổi được hỗ trợ bởi cơ sở dữ liệu mới:Solid Cable, Solid Cache và Solid Queue.

  1. Cáp đặc là bộ điều hợp Action Cable mặc định mới của Rails trong quá trình sản xuất và có nghĩa là bạn có thể loại bỏ sự phụ thuộc phổ biến vào Redis. Nó hoạt động như máy chủ pub/sub, chuyển tiếp tin nhắn giữa ứng dụng và máy khách được kết nối bằng cách sử dụng tính năng bỏ phiếu nhanh thông qua SQLite. Bất chấp việc bỏ phiếu, hiệu suất của Solid Cable có thể so sánh với Redis trong hầu hết các trường hợp.

  2. Bộ nhớ đệm cố định thay thế nhu cầu về Redis bằng cách sử dụng bộ lưu trữ trên đĩa thay vì RAM để lưu vào bộ nhớ đệm. Cách tiếp cận này cho phép bộ nhớ đệm lớn hơn, tiết kiệm chi phí hơn, tồn tại lâu hơn và xử lý nhiều yêu cầu hơn mà không làm giảm hiệu suất. Nó cũng hỗ trợ các chính sách lưu giữ và lưu trữ được mã hóa để đáp ứng các yêu cầu về quyền riêng tư.

  3. Hàng đợi cố định thay thế Redis cho quá trình xử lý Active Jobbackground, sử dụng FOR UPDATE SKIP LOCKED cơ chế xử lý công việc hiệu quả (tương thích với PostgreSQL, MySQL hoặc SQLite). Nó bao gồm các tính năng cần thiết như kiểm soát đồng thời, thử lại và công việc định kỳ, đồng thời đã chứng minh được bản thân tại HEY, nơi hiện quản lý 20 triệu công việc mỗi ngày.

Ba bộ điều hợp này được thiết kế xoay quanh một ý tưởng đơn giản:SSD và NVMedrive hiện đại đủ nhanh để xử lý nhiều tác vụ mà trước đây yêu cầu các giải pháp trong bộ nhớ. Bằng cách khai thác các ổ đĩa tốc độ này, Rails sẽ loại bỏ nhu cầu sử dụng các công cụ dựa trên RAM riêng biệt như Redis.

SQLite đã sẵn sàng để sản xuất

Rails 8 đưa SQLite từ một công cụ phát triển nhẹ trở thành một lựa chọn đáng tin cậy để sử dụng trong sản xuất nhờ vào công việc mở rộng trên bộ chuyển đổi SQLite và Rubydriver.

Với việc giới thiệu các bộ điều hợp vững chắc đã thảo luận ở trên, SQLite hiện có khả năng hỗ trợ Action Cable, Rails.cache và Active Job một cách hiệu quả, mở rộng vai trò của nó ngoài môi trường tạo mẫu hoặc thử nghiệm.

Dưới đây là một số cải tiến chính đối với việc tích hợp SQLite trong Rails 8:

  • Tìm kiếm toàn văn bản và bảng ảo hiện được hỗ trợ bằng cách sử dụngcreate_virtual_table .
  • Bộ điều hợp hiện cho phép chèn số lượng lớn các thiết bị cố định để nâng cao hiệu suất gieo dữ liệu.
  • Giao dịch mặc định là IMMEDIATE chế độ cải thiện tính đồng thời.
  • Xử lý lỗi nâng cao bằng cách dịch SQLite3::BusyException vàoActiveRecord::StatementTimeout .

Kỷ nguyên mới cho đường ống tài sản với trục cánh quạt

Rails 8 cũng giới thiệu Propshaft làm mặc định đường dẫn nội dung mới, thay thế hệ thống Sprockets lâu đời. Sprockets đã phục vụ tốt cho các nhà phát triển Rails trong hơn một thập kỷ, nhưng nó được thiết kế ở một thời đại khác — trước sự bùng nổ của các công cụ xây dựng JavaScript và các cải tiến trình duyệt hiện đại.

Propshaft phản ánh cách tiếp cận đơn giản, hiện đại hơn để quản lý tài sản, được xây dựng dựa trên nhu cầu cốt lõi của các nhà phát triển ngày nay. Mục đích của nó rất đơn giản:cung cấp đường dẫn rõ ràng cho nội dung và áp dụng dấu thông báo cho bộ nhớ đệm.

Không giống như Sprockets đảm nhận nhiều nhiệm vụ bổ sung, Propshaft chỉ tập trung vào những gì thiết yếu, phù hợp một cách tự nhiên với triết lý Rails mới về giữ cho quy trình tài sản gọn gàng (trong khi việc xử lý JavaScript phức tạp được giao cho các công cụ chuyên dụng như Esbuild hoặc Vite).

Xác thực tích hợp đơn giản

Rails đã xây dựng các thành phần xác thực chính trong nhiều năm qua, từ has_secure_password trong Rails 5 đến normalizes , generates_token_forauthenticate_by inRails 7.1.

Với Rails 8, tất cả các thành phần này kết hợp với nhau để cung cấp cho bạn điểm khởi đầu đơn giản để xây dựng hệ thống xác thực dựa trên phiên, an toàn.

Bằng cách chạy một lệnh duy nhất, bạn có thể thiết lập tất cả các yếu tố cần thiết cho hệ thống xác thực với các phiên được cơ sở dữ liệu hỗ trợ và chức năng đặt lại mật khẩu:

 

Lệnh này tạo các tệp chính, bao gồm mô hình, bộ điều khiển, trình gửi thư và chế độ xem:

 

Điều này giúp bạn nhanh chóng đạt được mục tiêu xác thực an toàn, sẵn sàng cho sản xuất. Tất cả những gì còn lại là tích hợp quy trình đăng ký người dùng được tùy chỉnh theo nhu cầu ứng dụng của bạn.

Thư mục và trình tạo tập lệnh mới

Rails 8 giới thiệu script mới thư mục dành riêng để chứa các tập lệnh dùng một lần hoặc có mục đích chung, chẳng hạn như di chuyển dữ liệu, tác vụ dọn dẹp hoặc các hoạt động tiện ích khác. Sự bổ sung này giúp sắp xếp các tập lệnh này một cách gọn gàng, giữ chúng tách biệt với logic ứng dụng chính của bạn.

Để tạo tập lệnh dễ dàng hơn, có sẵn trình tạo tập lệnh mới. Bạn có thể tạo tập lệnh bằng một lệnh đơn giản:

 

Các lệnh này tạo các tệp tập lệnh tương ứng mà sau đó bạn có thể thực thi bằng:

 

Cách tiếp cận hợp lý này giúp ứng dụng của bạn luôn ngăn nắp và giúp việc xử lý các tập lệnh tùy chỉnh trở nên thuận tiện và dễ bảo trì hơn.

Một loạt cải tiến về bản ghi đang hoạt động

Active Record cũng đã thấy những cải tiến lớn trong Rails 8 để cải thiện hiệu suất, đơn giản hóa việc di chuyển, cải thiện sự cố và cung cấp hỗ trợ tốt hơn cho các trường hợp sử dụng cơ sở dữ liệu phức tạp.

Dưới đây là một số thay đổi chính được giới thiệu trong phiên bản mới nhất này:

  • Rails 8 hiện phân biệt giữa float4float8 trong PostgreSQL.
  • drop_table hiện hỗ trợ xóa nhiều bảng cùng một lúc.
  • Hỗ trợ các tùy chọn nâng cao khi tạo bảng bằng PostgreSQL, bao gồm kế thừa và phân vùng.
  • Tính năng chèn số lượng lớn các thiết bị cố định hiện được hỗ trợ để cải thiện hiệu suất gieo hạt dữ liệu.
  • Việc di chuyển cơ sở dữ liệu mới bây giờ bắt đầu bằng cách tải lược đồ cơ sở dữ liệu trước khi thực hiện di chuyển.
  • create_schemadrop_schema các hoạt động hiện có thể đảo ngược được.
  • Rails 8 hiện yêu cầu MySQL 5.6.4 trở lên do những cải tiến như độ chính xác ngày giờ.
  • Thẻ nhật ký truy vấn được bật theo mặc định trong môi trường phát triển để theo dõi các câu lệnh SQL trở lại mã ứng dụng và xác định cơ sở dữ liệu nào đang được sử dụng.

Kết thúc

Rails 8 giới thiệu một loạt các bản cập nhật có tác động mạnh mẽ, từ việc triển khai dễ dàng hơn với Kamal và quy trình tài sản hiện đại cho đến những cải tiến đáng kể về ActiveRecord và cải thiện khả năng sản xuất cho SQLite.

Những tiến bộ này không chỉ nâng cao năng suất của nhà phát triển mà còn phù hợp với các phương pháp hay nhất hiện đại, cho phép bạn tập trung vào việc xây dựng ứng dụng của mình thay vì xử lý các vấn đề phức tạp về cơ sở hạ tầng.

Để biết danh sách chi tiết tất cả các tính năng mới, tối ưu hóa và thay đổi, hãy xem ghi chú phát hành chính thức của Rails 8.

Nếu bạn muốn tham gia đóng góp cho Rails, hãy truy cập kho lưu trữ Rails GitHub để khám phá các vấn đề mở và xem lại nguyên tắc đóng góp.

Cảm ơn đã đọc!

Tái bút. Nếu bạn muốn đọc các bài đăng của Ruby Magic ngay khi chúng được đăng tải, hãy đăng ký nhận bản tin Ruby Magic của chúng tôi và không bao giờ bỏ lỡ một bài đăng nào!

Khám phá Ruby on Rails 8:Các tính năng và cải tiến mới

Damilola Olatunji

Damilola là nhà văn kỹ thuật và nhà phát triển phần mềm tự do có trụ sở tại Lagos, Nigeria. Anh ấy chuyên về JavaScript và Node.js, đồng thời mong muốn cung cấp các bài viết ngắn gọn và thiết thực cho các nhà phát triển. Khi không viết hay viết mã, anh ấy thích đọc sách, chơi game và đi du lịch.

Tất cả bài viết của Damilola Olatunji