Tổng hợp những Gem thường sử dụng trong các dự án Ruby On Rails
Bài đăng này đã không được cập nhật trong 3 năm
1. Devise
- Đầu tiên không thể không kể đến gem devise sử dụng trong hầu như mọi dự án . Devise là một gem rất linh hoạt được sử trong quá trình xác thực người dùng.Nó hỗ trợ hầu hết tất cả mọi việc bạn cần trong việc quản lí và xác thực người dùng trong hệ thống của bạn.Nó cho phép bạn có thể tạo nhiều Model trong cùng một lúc; Nó dược xây dựng dựa trên các module nên bạn có thể chỉ sử dụng những gì bạn thực sự cần.Gem devise có 10 module chính sau: https://viblo.asia/nguyenhoa/posts/mPjxMegxv4YL
2. Can Can Can
- Nếu bạn xây dựng một ứng dụng với nhiều loại user và điều bạn lo lắng nhất chính là phân quyền cho các user của bạn.
- Một giải pháp hiệu quả cho bạn đó là sử dụng gem Cancancan để phân quyền cho các user.
- Cancancan là một thư viện phân quyền cho ruby on rails, nó hạn chế các tài nguyên mà một user được phép truy cập.
- Tất cả các quyền hạn được quy định ở một nơi duy nhất (là class Ability) và riêng biệt với controllers, views và database queries.
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.admin?
can :manage, :all
else
can :read, :all
end
end
end
https://viblo.asia/TuyenNguyen/posts/YAQrMJdrv40E
3.DELAYED_JOB
- Delayed::Job là một Ruby background job framework đã được phát triển bởi các nhân viên tại Shopify, một trang web thương mại điện tử phổ biến. Delayed::Job hoạt động bằng cách duy trì một bảng 'công việc' trong cơ sở dữ liệu để theo dõi một nhiệm vụ và vị trí của nó trong vòng đời của công việc (theo lịch trình, trạng thái, hoàn thành, đã thất bại,...). Delayed::Job tích hợp dễ dàng với Rails và ActiveRecord nếu bạn đang sử dụng một cơ sở dữ liệu quan hệ.
# without delayed_job
Notifier.signup(@user).deliver
# with delayed_job
Notifier.delay.signup(@user)
# with delayed_job running at a specific time
Notifier.delay(run_at: 5.minutes.from_now).signup(@user)
https://viblo.asia/vietmt/posts/MVpvKPjZGKd
4.PAPERCLIP hoặc CarrierWave
2 Gem đều dùng để upload ảnh hay file cho dự án của bạn , cách sử dụng của cả 2 đều không quá phức tạp nhưng mình khuyên dùng carrierwave .Vì mình chưa dùng paperclip bao giờ )))))
https://viblo.asia/kyhuuhai/posts/pxvKokJMKLd
5.SIMPLE_FORM
Simple Form là một gem linh hoạt trong việc hộ trợ tạo form. Mục tiêu cơ bản của Simple Form là giúp bạn tìm thấy những thiết kế đơn giản và hữu ích nhất cho form.
<%= simple_form_for @user do |f| %>
<%= f.input :username, input_html: { class: 'special' } %>
<%= f.input :password, input_html: { maxlength: 20 } %>
<%= f.input :remember_me, input_html: { value: '1' } %>
<%= f.button :submit %>
<% end %>
https://viblo.asia/march_vu/posts/mrDGMORDkzL
6.Kaminari
- Đối với việc phân trang trong một project Rails thì chúng ta thường hay sử dụng gem will_paginate, nhưng gem Kaminari cũng là 1 gem rất phổ biến. Bài viết này sẽ cho thấy sự linh hoạt trong việc phân trang của gem Kaminari. https://viblo.asia/hang.viblo.asia/posts/73KbvZoARmWB
7.RSPEC-RAILS
- Nếu bạn đang viết test cho website của bạn, hãy thử dùng gem này . Rất nổi tiếng .
require "spec_helper"
describe User do
it "orders by last name" do
lindeman = User.create!(first_name: "Andy", last_name: "Lindeman")
chelimsky = User.create!(first_name: "David", last_name: "Chelimsky")
expect(User.ordered_by_last_name).to eq([chelimsky, lindeman])
end
end
https://viblo.asia/nguyen.manh.ky/posts/ojaqG0B0REKw
8.FACTORY_GIRL_RAILS
- Factory Girl cho phép bạn tạp object cần thiết khi test. kết hợp với faker bạn có thể tạo random một object có random dữ liệu khi test thay vì chỉ có một giá trị default.
FactoryGirl.define do
factory :contact do
full_name { Faker::Name.name }
email { Faker::Internet.email }
phone_number { Faker::PhoneNumber.phone_number }
address { Faker::Address.street_address }
end
end
https://viblo.asia/khanhndptit/posts/PDOGqMrQGjx
9.Pry-Rails
-
Bạn muốn debug ??? https://github.com/pry/pry
binding.pry
Quá dễ dàng phải không
- Số 9 thường là số kết thúc cho mọi chuyện nên mình cũng xin kết thúc tại đây . Cảm ơn các bạn đã lướt qua .
Nguồn : https://viblo.asia/ https://infinum.co/the-capsized-eight/a-gem-for-every-occasion-11-great-ruby-libraries-we-use-on-every-project
All rights reserved