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 ...
Đế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
- omniauth-facebook
- omniauth-google-oauth2
- omniauth-weibo-oauth2
- omniauth-twitter
- omniauth-github
- omniauth-linkedin-oauth2
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:
- Grape Swagger: tự động tạo tài liệu trên Grape API.
- Grape Swagger UI: hiển thị các tài liệu được tạo ra khi sử dụng Grape Swagger.
- apiary: design, prototype, document, test API.
- apiblueprint
- letter_opener: preview mail trên trình duyệt.
File uploading
- Carrierwave: cung cấp giải pháp upload files cho Rails, Sinatra, và các framework Ruby web khác.
- carrierwave_backgrounder: giảm tải việc xử lý và lưu trữ ảnh, sử dụng Delay job, Resque, Sidekiq, Qu, Queue Classic or Girl Friday.
- Carrierwave Crop: crop ảnh được upload sử dụng Jcrop plugin với chế độ xem trước.
- CarrierWave ImageOptimizer
- 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:
- Sidetiq: Recurring jobs cho Sidekiq.
- Sidekiq-cron: Scheduler/Cron cho Sidekiq jobs.
- Sidekiq-scheduler
- Sucker Punch: thư viện xử lý bất đồng bộ của Ruby.
View Helper
- Formtastic
- Simple form
- Nested form
- meta-tags: Search Engine Optimization (SEO) plugin cho Rails application.
- active_link_to: thêm css class active vào links.
- Cocoon: Dynamic nested forms sử dụng jQuery.
Environment Variables
- Config
- Figaro
- Dotenv
- opsworks-dotenv
Admin Panel
- ActiveAdmin
- RailsAdmin
- Typus
- Administrate
- Trestle
Logging
- Impressionist
- Ahoy
- Lograge
Debug
- byebug: đơn giản để sử dụng, giàu tính năng với debugger.
- pry-byebug
- pry-rails
- awesome_print
- web-console
- spring
- rails-footnotes
Coding Style
- RuboCop
- Rails Best Practice
- Metric Fu
- Pronto
Testing
- Rspec Rails
- Capybara
- capybara-webkit
- selenium-webdriver
- poltergeist
- page-object
- factory_bot
- factory_bot_rails
- factory_factory_girl
- Database Cleaner
- shoulda-matchers
- ResponseCodeMatchers
- SimpleCov
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
- Capistrano
- Slowpoke
- Rack Attack
- Responders
- production_rails
- Mina
Error Logging
- Rollbar
- Airbrake
- Errbit
Database
- [rails_db](https://github.com/igorkasyaphuf hnchuk/rails_db)
Asset Pipeline
- Alaska
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.