2011-10-19 87 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’)