Система поддержки, работающая по соглашениям Rails
Модели ActiveRecord, генераторы, монтирование движка и знакомые паттерны Ruby, которые ваша команда уже знает. Escalated — это Rails-движок, поставляемый как gem.
$ bundle add escalatedПочему Escalated
Почему Escalated для Rails
Модели ActiveRecord
Тикеты, ответы, теги и активности — модели ActiveRecord. Используйте скоупы, ассоциации и валидации как любую модель в приложении.
Генераторы Rails
Создавайте миграции, устанавливайте конфигурационные файлы и генерируйте представления знакомыми командами `rails generate`. Без ручной настройки.
Архитектура движка
Монтируется как Rails-движок в `config/routes.rb`. Изолирует маршруты, контроллеры и представления Escalated, разделяя стек аутентификации.
Начало работы
Как это работает
Установите gem
bundle add escalatedЗапустите генератор
rails generate escalated:install && rails db:migrateПодключите движок
Добавьте `mount Escalated::Engine => '/support'` в маршруты, и вы в деле.
Возможности
Создано для экосистемы Rails
Ассоциации ActiveRecord
Тикеты принадлежат пользователям, имеют множество ответов и связаны полиморфными ассоциациями. Запрашивайте через Arel или скоупы.
Интеграция с ActiveJob
Уведомления по почте и отправка webhook работают на ActiveJob. Используйте Sidekiq, Resque или любой бэкенд, который уже использует ваше приложение.
Поддержка Pundit и CanCanCan
Авторизация работает со стандартными библиотеками авторизации Ruby. Управляйте доступом к тикетам, ответам и функциям администрирования.
Коллбэки ActiveSupport
Каждое действие с тикетом запускает коллбэки. Подключайтесь к after_create, after_update и кастомным событиям жизненного цикла для создания рабочих процессов.
Middleware Rack
Применяйте существующие Rack middleware к маршрутам Escalated. Аутентификация, ограничение скорости и скоупинг тенантов работают естественно.
Фабрики FactoryBot
Поставляется с фабриками FactoryBot для тикетов, ответов и пользователей. Пишите тесты RSpec или Minitest со знакомыми паттернами.
Посмотрите в действии
Несколько строк Ruby для добавления полной системы поддержки в ваше приложение.
# config/routes.rb Rails.application.routes.draw do mount Escalated::Engine => '/support' end # app/models/user.rb class User < ApplicationRecord include Escalated::HasTickets end # Anywhere in your application ticket = user.tickets.create!( subject: 'Need help with billing', priority: :high ) ticket.replies.create!( body: "We've updated your invoice.", user: agent )
Готовы добавить тикеты поддержки в приложение Rails?
Escalated — открытый код, самостоятельный хостинг, спроектирован чтобы ощущаться как нативная часть вашего Rails-приложения.