3

我在一个工作的 Rails 应用程序中安装了 active_admin gem。这样做之后,应用程序明显变慢了。获取新页面大约需要 4-5 秒。某些功能已损坏。

这是否可能是由于活跃的管理员依赖设计和因为我有自己的身份验证而产生的冲突?我已经有一个用户模型,其中包含“current_user”之类的方法和登录功能。

换句话说,除非使用设计进行身份验证,否则您不应该使用活动管理员吗?我在文档中没有看到任何关于此的内容。

我在 Rails 3.1,Postgresql 数据库,如果这很重要的话。

4

2 回答 2

5

Rails 3.1 的减速是一个已知问题,主要是由于 Active Admin 与新资产管道交互的方式。问题是 - 据我所知 - 仅在以开发模式运行时出现(因此当您部署到生产时它应该消失)。

开发中还存在可能会影响性能的内存泄漏问题。但我个人的经验是,这不是主要的性能杀手。

为了克服开发中缓慢的环境问题,一个快速的解决方法是安装rails-dev-tweaks gem。当传入请求是资产请求(图像、css、js 等)时,这将防止 Rails 重新生成资产。

至于您的第二个问题:Active Admin 仅适用于设计。但是完全可以在前端使用不同的身份验证机制,并且只依赖 Active Admin 中的设计。您当然应该确保设计和您自己的身份验证不冲突。您可以更改设计和活动管理员以使用不同的方法来检索当前用户。默认情况下,Active Admin 使用current_admin_user-not current_user。您可以在 中更改 Active Admin 的身份验证设置config/initializers/active_admin.rb。有关更多信息,请阅读身份验证文档

于 2011-10-20T08:41:58.327 回答
0

如果您的管理模型具有belongs_tohas_many关系,ActiveAdmin 的默认行为实际上会将您的数据库加载到 RAM 中。建议您只添加真正需要的过滤器。

为每个过滤器集合指定确切的字段也将大大减少查询执行时间和内存占用。默认情况下,ActiveAdmin 正在寻找 :id 和 :name 属性。我应用这个查询的一个查询从几秒减少到了 0.7 毫秒。是的!!

例如

filter :account, collection: Account.unscoped.select(‘id, name’)
于 2013-09-14T03:54:05.613 回答