我在工作的rails应用程序中安装了active_admin gem。这样做之后,应用程序显然放慢了速度。获取新页面大约需要4-5秒。一些功能被打破了。
这可能是因为主动管理员依赖于设计和冲突,因为我有自己的身份验证吗?我已经有了一个User模型,其中包含'current_user'和登录功能等方法。
换句话说,除非使用设计进行身份验证,否则不应该使用活动管理员?我在文档中没有看到任何相关内容。
我正在使用Rails 3.1,Postgresql数据库,如果这很重要。
答案 0 :(得分:5)
Rails 3.1中的速度减慢a known issue,主要是由于Active Admin与新资产管道的交互方式。问题是 - 据我所知 - 仅在开发模式下运行时出现(因此当您部署到生产环境时它应该消失)。
开发中还有memory leak issue可能会对性能产生影响。但我个人的经验是,这不是主要的性能杀手。
要克服开发中的缓慢环境问题,一个快速解决方法是安装rails-dev-tweaks gem。当传入请求是资产请求(images,css,js等)时,这将阻止Rails重新生成资产。
至于你的第二个问题: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。
答案 1 :(得分:0)
如果您的管理模型具有belongs_to
和has_many
关系,并且ActiveAdmin的默认行为几乎会将您的数据库加载到RAM中。建议您只添加真正需要的过滤器。
为每个过滤器集合指定确切的字段也将大大减少查询执行时间和内存占用。默认情况下,ActiveAdmin正在寻找:id和:name属性。我应用的一个查询从几秒减少到.7ms。 YES !!
e.g。
filter :account, collection: Account.unscoped.select(‘id, name’)