Rails 6-Những điểm mới đáng chú ý

Tram Ho

Hi,

Chào mọi người. Hôm nay mình sẽ chia sẽ với các bạn một vài điểm thú vị về Rails 6-phiên bản mới nhất của framework Rails. Lý do mà mình viết bài viết này là vì trong tháng vừa rồi sấp mặt với dự án quá, không có thời gian tìm hiểu thêm cái chi hay về coding đủ để viết một tutor hết, tiện trước đây có tham gia một dự án nhỏ sử dụng Rails 6. Nên mình dành thời gian đọc thêm về Rails 6 sau khi được một vài người chỉ “nên đọc”

Nhìn chung, Rails 6 ra mắt cung cấp thêm một số tính năng để hổ trợ việc phát triển các ứng dụng website cũng như api. Trong bài viết mình xin giữ nguyên gốc Tiếng Anh với những mục mình sẽ note ra sau khi đọc các tài liệu. Vì thực ra mình cũng gặp khó khăn khi dịch những cụm từ đó một cách rõ nghĩa.

Bắt đầu từng điểm nhé!

Active Record

Điểm đáng chú ý nhất chính là tính năng connect với nhiều cơ sở dữ liệu-database trong cùng một ứng dụng Rails. Điều này đã được giới thiệu trước đó.

Eileen M. Uchitelle đã kế thừa từ codebase của Github để đưa vào tính năng switch multi database trong Rails 6. Nó cung cấp cho chúng ta một giải pháp khá tiện lợi để chuyển đổi connection đến các database repo và query.

Phần source code gốc các bạn có thể follow tại Đây

Nó khá đơn giản và dễ đọc, mình sẽ đưa ra một vài ví dụ để các bạn cụ thể hơn.

Như trên ta thấy model AnimalsModel được config để connect trực tiếp đến database với các quyền writing, reading khác nhau.

Ở file database.yml, ta tiến hành config đơn giản như sau:

Sau đó, Gannon McGibbon đã thêm vào những bộ mã mới hơn để hổ trợ hash và url config trong database hash của ActiveRecord::Base.connected_to để cải cách thêm cho chức năng này. Bên dưới mà mã code thể hiện tính năng này:

Function pick-tương tự như function pluck nhưng lại cho single record

Cái này bản thân mình thấy cũng khá hay. Thay vì bình thường anh em sẽ dùng select hay gì đấy để get ra những attribute mình cần ở một record. Thì Rails 6 đã bổ sung thêm một function khá hay hổ trợ việc này đó là pick.

Nhìn qua cái vd thì hiểu luôn rồi đúng không?

Bản thân hàm pick là một câu select lấy ra các field mà bạn muốn.

ActiveRecord::Base.create_or_find_by/! bổ trợ tính năng query select or insert

Nhìn cái tên function mình nghĩ các bạn cũng hiểu luôn chức năng rồi: Nó thực hiện create hoặc find_by cùng lúc, điều kiện để xảy ra find_by chính là rescue của create. Các bạn có thể đọc qua source code bên dưới để nắm thêm:

Make the implicit order column configurable

Thông thường khi xử lý với list records, chúng ta hay dùng những function để get các giá trị ở các vị khác nhau. Rails 6 hổ trợ chúng ta một tính năng để ngầm order các record đó theo một cơ sở nhất định: có thể là các attribute của model đó.

Như trên, attribute created_at được dùng để làm cơ sở order cho list User.

Action Mailbox

Rails 6 cung cấp một bộ ứng dụng cho phép developer tích hợp các tính năng về email một cách tiện lợi và dễ dàng hơn gọi là Action Mailbox. Tất cả những tích năng hay ho này sẽ được cung cấp đầy đủ trong ActionMailbox::Base. Các bạn có thể extends nó thông qua một class khác là ApplicationMailbox.

Các bạn có thể xem thêm tài liệu tại Đây

Pass along arguments to underlying GET method in

#follow_redirect!

Thông thường với các vers dưới 6 của Rails, chúng ta cảm thấy khá cồng kềnh khi muốn redirect ở server và kèm theo các params. Nhưng với follow_redirect của Rails 6, bạn có thể dễ dàng pass những parameters cho method GET bằng việc truyền các params đấy vào follow_redirect.

Action View

Add allocations to template rendering instrumentation

Ở Rails 6, developer có thể dễ dàng biết được thời gian của một tác vụ nào đó từ khi bắt đầu đến kết thúc. Nó report rất chính xác con số(giây). Điều này hộ trợ nhiều đến quá trình phát triển các function và tối ưu hoá hiệu năng của tác vụ cũng như ứng dụng. Chúng ta xem qua một đoạn Rails log bên dưới:

Active Job

Allows configurable attribute name for #has_secure_password

#has_secure_password là một phương pháp định danh cho các attribute cần được mã hoá trong ứng dụng, phổ biến nhất là password. Nó bổ trợ các tính năng mã hoá một cách rất đơn giản. Việc bạn cần làm chỉ là định danh cho attribute cần thiết vào model tương ứng.

Action Cable

Điểm ấn tượng cuối cùng mà mình muốn chia sẽ với các bạn chính là Action cable trong Rails 6. Phải nói đây là thay đổi ấn tượng nhất đối với mình, vi trước đây ở những version cũ hơn, mình cảm thấy khá khó khăn khi đụng tới thằng ni. Ví dụ như phát triển chức năng Chat realtime

Nhưng ở Rails 6 thì mọi chuyện dễ hơn nhiều. Action cable được tích hợp trực tiếp, điều đó có nghĩa là bạn có thể dùng nó chỉ với việc tạo ra các chanel phù hợp với mục đích của mình.

Trên là một vài điểm ấn tượng mình muốn giới thiệu tới các bạn. Dĩ nhiên Rails 6 còn khá nhiều cái hay nữa mà các bạn có thể nghiên cứu thêm. Ví dụ: Action Mailer, Action Support, Zeitwerk, Active Storage...

Cảm ơn các bạn đã tham khảo qua bài viết của mình! Bye bye

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo