Awesome Rails gems - A collection of awesome Ruby Gems for Rails development

Đến với ngôn ngữ Ruby và làm việc với framework Ruby on Rails thì chắc chắn bạn không còn xa lạ gì với khái niệm RUBYGEMS (gọi ngắn gọn là GEMS), GEMS có thể được sử dụng để mở rộng hoặc sửa đổi chức năng trong các ứng dụng được viết bằng ngôn ngữ Ruby (Ruby applications). Thông thường chúng được sử dụng để phân phối chức năng có thể tái sử dụng được chia sẻ với các Rubyists khác để sử dụng trong các ứng dụng và thư viện của chúng. Một số GEMS cung cấp các command tiện ích để giúp tự động hóa các tác vụ (tasks) và tăng tốc công việc trong quá trình xây dựng ứng dụng.

Trong bài viết này, mình sẽ liệt kê tập hợp các Ruby gems awesome được sử dụng trong quá trình xây dựng ứng dụng Rails (Rails application)

User

Authentication

  • Devise: cung cấp giải pháp xác thực người dùng linh hoạt cho Rails application dựa trên Warden.
  • Knock: xác thực JWT (Json Web Token) cho Rails API.
  • Clearance: xác thực với username và password.
  • Devise token auth: xác thực dựa trên token cho Rails JSON API.
  • Sorcery: xác thực cho Rails application, hỗ trợ: ActiveRecord, DataMapper, Mongoid and MongoMapper.

Authorization

  • Pundit: cung cấp tập hợp các helpers, hướng dẫn bạn sử dụng các Ruby classes thông thường và các design patterns để xây dựng một hệ thống ủy quyền đơn giản, mạnh mẽ và có khả năng mở rộng.
  • Cancancan: thư viện mạnh mẽ hỗ trợ việc ủy quyền cho Ruby on Rails, hạn chế những tài nguyên (resources) mà người dùng được phép truy cập.
  • Rolify: thư viện quản lý role với phạm vi resources tương ứng.

Omniauth

ActiveRecord

  • Enumerize
  • counter_culture: Turbo-charged counter caches cho Rails application.
  • custom_counter_cache: cách tiếp cận đơn giản để tạo counter cache tùy chỉnh trong Rails, có thể sử dụng trong nhiều models.
  • Sequenced: là một gem đơn giản để sinh tuần tự ID cho ActiveRecord models.
  • FriendlyId: cho phép tạo url đẹp và thân thiện với người dùng.
  • AASM: State machine cho Ruby classes (plain Ruby, Rails Active Record, Mongoid).
  • PaperTrail: cho phép theo dõi sự thay đổi của dữ liệu trong models.
  • Paranoia: ActiveRecord plugin cho phép ẩn và khôi phục lại bản ghi mà không thực sự xóa chúng.
  • Validates: cung cấp tập hợp các validators tùy chỉnh hữu ích cho Rails application, bao gồm:
  • EmailValidator
  • UrlValidator
  • SlugValidator
  • MoneyValidator
  • IpValidator
  • AssociationLengthValidator
  • AbsolutePathValidator
  • UriComponentValidator
  • ColorValidator
  • EanValidator (EAN-8 & EAN-13)
  • Globalize: Rails I18n thư viện chuẩn cho ActiveRecord model/data translation.
  • deep_cloneable
  • social_share: kiểm tra số lần url được chia sẻ trên mạng xã hội.
  • puclic_activity: cách đơn giản để tracking các hoạt động trên models.
  • Goldiloader: ActiveRecord eager loading tự động để giảm số lượng truy vấn cơ sở dữ liệu cho ứng dụng.
  • Tagging:
  • ActsAsTaggableOn: cho phép gắn thẻ tùy chỉnh trong Rails application.
  • closure_tree: dễ dàng và hiệu quả để tạo nên ActiveRecord models hỗ trợ phân cấp.
  • ActionStore: lưu trữ những loại actions khác nhau (như: like, flow, star, block, ...) trên một bảng thông qua ActiveRecord Polymorphic Association.

Plugins

  • Spreadsheet: thư viện được thiết kế để đọc và viết tài liệu spreadsheet.
  • Chartkick: tạo biểu đồ cho ứng dụng.
  • Kaminari: phân trang.
  • CKEditor: text editor được thiết kế để đơn giản hóa việc tạo nội dung trên web.
  • HTML::Pipeline: Github HTML xử lý các bộ lọc (filters) và tiện ích (utilities).
  • Slack Notifier: gửi thông báo tới Slack webhooks.
  • Rails ERD: tạo Entity-Relationship Diagrams cho Rails applications.
  • Parity
  • Airblussh

API

  • Grape: Micro-framework để tạo REST-ful APIs trong Ruby
  • ActiveModel::Serializers
  • Jbuilder: cung cấp DSL đơn giản để khai báo các cấu trúc JSON.
  • rest-client: HTML và REST-ful đơn giản cho Ruby.
  • has_scope: mapping controller params đến các scope được đặt tên trong resource.
  • Documentation:

Email

File uploading

  • Carrierwave: cung cấp giải pháp upload files cho Rails, Sinatra, và các framework Ruby web khác.
  • Remotipart: Rails JQuery file uploads thông qua "remote: true" Rails form.
  • MiniMagick: ruby wrapper cho ImageMagick hay GraphicsMagick command line.
  • fog: Ruby cloud service library.
  • refile: file upload library cho Rails application, đơn giản và mạnh mẽ.
  • Paperclip: file attachment management cho ActiveRecord.
  • Dragonfly
  • Shrine: file attachment toolkit cho Ruby application.

Searching

  • Ransack: hỗ trợ tìm kiếm đơn giản và nâng cao cho Rails application.
  • Elasticsearch-rails: Elasticsearch tích hợp cho ActiveModel/Record và Rails.
  • Chewy: high-level Elasticsearch Ruby framework.
  • pg_search: hỗ trợ full-text search của PostgreSQL.
  • Sunspot: Ruby library tương tác mạnh mẽ với Solr search engine.
  • Searchkick: tìm kiếm thông minh một cách dễ dàng với Rails và Elasticsearch.

Scheduled/Recurrence Jobs

  • Whenever: Ruby gems cung cấp cú pháp rõ ràng để viết và triển khai cron job.
  • Resque: Redis-backed Ruby library để tạo bacground jobs, đặt chúng vào nhiều hàng đợi, và xử lý chúng sau đó.
  • Rufus-Scheduler: Ruby gems để lập lịch jobs.
  • Delayed Job
  • Sidekiq: xử lý tác vụ ngầm một cách đơn giản và hiệu quả cho Ruby:
  • Sucker Punch: thư viện xử lý bất đồng bộ của Ruby.

View Helper

Environment Variables

Admin Panel

Logging

Debug

  • byebug: đơn giản để sử dụng, giàu tính năng với debugger.

Coding Style

Testing

Security

  • Brakeman: một công cụ phân tích tĩnh kiểm tra các lỗ hổng bảo mật cho các Rails application.
  • bundle-audit: kiểm tra sự an toàn các phiên bản của gems, và gems source.
  • Secure Headers

Production

Error Logging

Database

Asset Pipeline

Trên đây mình đã liệt kê ra một số GEMS điển hình, và tùy mỗi ứng dụng khác nhau mà sử dụng chúng cho phù hợp để có một Rails application awesome.

Tài liệu tham khảo

1, Guides Ruby gems

2, Awesome Rails gems