Administración activa ralentizando la aplicación de Rails

Instalé la gem active_admin en una aplicación de Rails de trabajo. Después de hacer esto, la aplicación se desaceleró notablemente. Se tarda alrededor de 4-5 segundos para obtener una nueva página. Alguna funcionalidad está rota.

¿Es posible que esto se deba a que el administrador activo depende del dispositivo y surgen conflictos porque tengo mi propia autenticación? Ya tenía un modelo de usuario con métodos como ‘current_user’ y características de inicio de sesión.

En otras palabras, ¿se supone que no debe usar el administrador activo a menos que use el dispositivo para la autenticación? No veo nada de esto en la documentación.

Estoy en Rails 3.1, la base de datos Postgresql, si eso importa.

La desaceleración en Rails 3.1 es un problema conocido que se debe principalmente a la forma en que Active Admin interactúa con el nuevo Asset Pipeline. El problema es que, por lo que sé, solo está presente cuando se ejecuta en modo de desarrollo (por lo tanto, cuando se implementa en producción, debería desaparecer).

También hay un problema de pérdida de memoria en el desarrollo que podría tener un impacto en el rendimiento. Pero mi experiencia personal es que este no es el principal asesino del rendimiento.

Para superar el problema del entorno lento en el desarrollo, una solución rápida es instalar la gem rails-dev-tweaks . Esto evitará que Rails regenere los activos cuando la solicitud entrante sea una solicitud de activo (imágenes, css, js, etc.).

En cuanto a su segunda pregunta: Active Admin solo funciona con dispositivos. Pero es completamente posible usar un mecanismo de autenticación diferente en su interfaz y solo confiar en Devise en Active Admin. Debe asegurarse de que Devise y su propia autenticación no entren en conflicto. Puede cambiar el dispositivo y Active Admin para usar un método diferente para recuperar el usuario actual. Por defecto, Active Admin usa current_admin_user , no current_user . Puede cambiar la configuración de autenticación para Active Admin en config/initializers/active_admin.rb . Para más información, lea la documentación de autenticación .

Si sus modelos de administrador tienen relaciones de belongs_to y relación con belongs_to y el comportamiento predeterminado de ActiveAdmin prácticamente cargará su base de datos en la RAM. Se recomienda que agregue solo los filtros que realmente necesita.

Especificar los campos exactos para cada colección de filtros también reducirá en gran medida el tiempo de ejecución de la consulta y la huella de memoria. Por defecto, ActiveAdmin está buscando los atributos: id y: name. Una consulta a la que apliqué se redujo de varios segundos a .7ms. ¡¡SÍ!!

p.ej

 filter :account, collection: Account.unscoped.select('id, name')