Активный администратор замедляет применение рельсов

StackOverflow https://stackoverflow.com/questions/7826885

  •  27-10-2019
  •  | 
  •  

Вопрос

Я установил драгоценный камень Active_admin в приложении рабочих рельсов. После этого приложение заметно замедлилось. Чтобы получить новую страницу, требуется около 4-5 секунд. Некоторая функциональность сломана.

Возможно ли это из -за активного администратора, опираясь на разработку и конфликты, возникающие потому, что у меня есть собственная аутентификация? У меня уже была пользовательская модель с такими методами, как «current_user» и функции входа.

Другими словами, не должны ли вы использовать Active Admin, если не используете разработку для аутентификации? Я ничего не вижу в этом в документации.

Я в Rails 3.1, база данных PostgreSQL, если это важно.

Это было полезно?

Решение

Замедление в рельсах 3.1 известная проблема Это в основном связано с тем, как активный администратор взаимодействует с новым конвейером активов. Проблема заключается в том, что, насколько я знаю, присутствует только при запуске в режиме разработки (поэтому, когда вы развертываете производство, это должно исчезнуть).

Есть также Проблема утечки памяти В разработке это может оказать влияние на производительность. Но мой личный опыт в том, что это не основной убийца производительности.

Чтобы преодолеть проблему медленной среды в разработке, одно быстрое решение - установить Rails-Dev-Tweaks жемчужина Это предотвратит восстановление активов Rails, когда входящий запрос является запросом активов (Images, CSS, JS и т. Д.).

Что касается вашего второго вопроса: Active Admin работает только с разработкой. Но вполне возможно использовать другой механизм аутентификации на вашем фронте и полагаться только на разработку активного администратора. Вы должны причинить, что разработка и ваша собственная аутентификация не конфликтуют. Вы можете изменить разработку и активного администратора, чтобы использовать другой метод для извлечения текущего пользователя. По умолчанию активный администратор использует current_admin_user - нет current_user. Анкет Вы можете изменить настройки аутентификации для активного администратора в config/initializers/active_admin.rb. Анкет Для получения дополнительной информации прочитайте Документация аутентификации.

Другие советы

Если у ваших моделей администратора есть belongs_to а также has_many Отношения и поведение ActiveEadmin по умолчанию практически загружают вашу базу данных в ОЗУ. Рекомендуется добавить только необходимые фильтры.

Указание точных полей для каждой коллекции фильтров также значительно сократит время выполнения запросов и следование памяти. По умолчанию ActiveEadmin ищет: ID и: атрибуты имени. Один запрос я применил это, чтобы уменьшить с нескольких секунд до 0,7 мс. ДА!!

например

filter :account, collection: Account.unscoped.select(‘id, name’)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top