Một số cập nhật mới trong rails 6

Tram Ho

Gần đầy rails vừa cập nhật lên phiên bản thứ 6 với một số thay đổi lớn như thay đổi Javascript complier mặc định là Webpacker thay vì assest pipeline (Sprockets) và cập nhật thêm một số method giúp cho lập trình viên làm việc nhanh hơn.

Webpacker là gì?

Việc đầu tiên khi nhắc đến Rails 6 thì webpacker là được chú ý nhiều nhất, vậy webpacker là gì? mà lại được set làm mặc định thay cho sprockets.
Webpacker là gem đóng gói webpackthe popular JavaScript tool used for managing and bundling JavaScript code , nói ngắn gọn thì Webpack là công cụ giúp gói gọn toàn bộ file js, css(bao gồm cả scss,sass,..).

Webpacker giúp chúng ta sử dụng được webpack một cách dễ dàng mà không phải nhức não config nó ( nhưng khá khó để config sâu hơn, nếu người đã biết webpack)
Khi bạn tạo mới ứng dụng rails rails new bạn sẽ nhìn thấy output dưới console như thế này

Và bạn sẽ thấy cài rất nhiều package thông qua yarn
Bạn kiểm tra Gemfile bạn sẽ thấy webpacker đã được cài đặt mặc định.

Thay đổi nơi chưa javascript code

Ở các phiên bản rails 6 code javascript sẽ được chứa ở app/assets/javascripts, nhưng từ rails 6 javascript code và code front end sẽ được quản lý tại app/avascripts

Có 2 thư mục chính đó là channelspacks. Thư mục channels được tạo bởi Action Cable và thư mục pack là thư mục quan trọng nó sẽ chứa tất cả code javascript, image , css, scss…
Ở đây mình sẽ chưa đi sâu vào, ở các bài viết sau minh sẽ tìm hiểu chi tiết hơn.

Thêm shortcut method #pick

Giả sử bạn muốn tìm tên của user có email là: [email protected] thì bạn sẽ viết như sau

Ở rails 6 bạn chỉ cần viết lại như sau:

Method này được định nghĩa như sau:

Cho phép cấu hình thuộc tính has_secure_password

has_secure_password được dùng để mã hóa và xác thực mật khẩu sử dụng gem Bcrypt khi model có cột password_digest

Trước rails 6 has_secure_password sẽ không chấp nhận trường nào ngoài password_digest. Nếu muốn sử dụng Bcrypt cho các trường khác ta phải tự định nghĩa lại các phương thức encrypt dựa theo bcrypt và hàm authenticate và lưu trữ chúng.

Từ rails 6 has_secure_password đã có thể custom tham số và mặt định vẫn là trường password và trường tự định nghĩa phải đặt tên theo dạng column_name_digest trên model. Và has_secure_password cũng được thêm method authenticate_column_name để xác thực column đó.
Ta sẽ xem qua ví dụ sau

Phủ định của enum

Khi bạn khai báo enum một trường của model Rails sẽ thêm chúng ta một số default scope để filter dữ liệu theo giá trị đó.
Ví dụ

Rails 6 cung cấp ta phủ định của các giá trị này bằng cách thêm tiền tố not_scope

Tổng kết

Trên đây mình đã tổng hợp một số cập nhật về rails 6 hi vọng sẽ giúp ích cho các bạn.
Happy Codding~!

Tham khảo

https://blog.bigbinary.com/
https://weblog.rubyonrails.org/releases/

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo