Ruby on Rails

Система поддержки, работающая по соглашениям Rails

Модели ActiveRecord, генераторы, монтирование движка и знакомые паттерны Ruby, которые ваша команда уже знает. Escalated — это Rails-движок, поставляемый как gem.

Терминал
$ bundle add escalated

Почему Escalated

Почему Escalated для Rails

Модели ActiveRecord

Тикеты, ответы, теги и активности — модели ActiveRecord. Используйте скоупы, ассоциации и валидации как любую модель в приложении.

Генераторы Rails

Создавайте миграции, устанавливайте конфигурационные файлы и генерируйте представления знакомыми командами `rails generate`. Без ручной настройки.

Архитектура движка

Монтируется как Rails-движок в `config/routes.rb`. Изолирует маршруты, контроллеры и представления Escalated, разделяя стек аутентификации.

Начало работы

Как это работает

1

Установите gem

bundle add escalated
2

Запустите генератор

rails generate escalated:install && rails db:migrate
3

Подключите движок

Добавьте `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 для добавления полной системы поддержки в ваше приложение.

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-приложения.