2011-10-19 35 views
3

我在工作导轨应用程序中安装了active_admin gem。这样做后,应用程序显着减慢。大约需要4-5秒才能获得新页面。某些功能已损坏。活动管理员减慢导轨应用程序

这可能是由于主动管理依赖设计和冲突,因为我有我自己的身份验证?我已经有了一个用户模型,其中包含'current_user'之类的方法并登录了一些功能。

换句话说,你不应该使用活动管理员,除非使用设计认证?在文档中我没有看到任何关于此的内容。

我在Rails 3.1中,Postgresql数据库,如果有的话。

回答

5

Rails 3.1中的减速是a known issue,这主要是由于Active Admin与新资产管道交互的方式。问题是 - 据我所知 - 只有在开发模式下运行时才会出现(所以当您部署到生产环境时,它应该消失)。

开发中还有一个memory leak issue可能会对性能产生影响。但我个人的经验是,这不是主要的表现杀手。

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

至于你的第二个问题:Active Admin只适用于设计。但是在你的前端中完全有可能使用不同的认证机制,只能依赖Active Admin中的Devise。你应该确保Devise和你自己的认证不冲突。您可以更改设计和Active Admin以使用其他方法来检索当前用户。默认情况下,Active Admin使用current_admin_user - 不是current_user。您可以在config/initializers/active_admin.rb中更改Active Admin的身份验证设置。欲了解更多信息,请阅读the authentication documentation

+0

非常丰富...感谢您的帮助! – robotcookies

0

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

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

例如

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