В настоящее время я работаю над проектом rails с Mongoid ORM. Я использую Rails admin gem для обработки данных на стороне сервера. Версия Rails - 4.1.7, Ruby - 2.1.5. Проблема заключается в том, что загрузка загружается, когда панель администратора загружается в первый раз.Rails admin panel loading slow
Я проверил журналы рельсов. Кажется, он запрашивает каждого пользователя из таблицы «пользователь» и, безусловно, время, затраченное на загрузку панели, пропорционально количеству записей в таблице пользователя.
Пожалуйста, помогите мне в ускорении загрузки панели. Если какая-либо другая информация требуется, пожалуйста, спросите. Благодарю.
Ниже приведен снимок журнала рельсов.
MOPED: 127.0.0.1:27017 QUERY database=yeloapp_development collection=users selector={"$query"=>{"_id"=>BSON::ObjectId('5656bd857261693fb10a0000')}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 batch_size=nil fields
=nil runtime: 10.0400ms
MOPED: 127.0.0.1:27017 QUERY database=yeloapp_development collection=users selector={"$query"=>{"_id"=>BSON::ObjectId('56ae41fe72616930bf030000')}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 batch_size=nil fields
=nil runtime: 0.4920ms
MOPED: 127.0.0.1:27017 QUERY database=yeloapp_development collection=users selector={"$query"=>{"_id"=>BSON::ObjectId('567d01277261695b8a000000')}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 batch_size=nil fields
=nil runtime: 5.1850ms
MOPED: 127.0.0.1:27017 QUERY database=yeloapp_development collection=users selector={"$query"=>{"_id"=>BSON::ObjectId('568cad1a7261691ff2030000')}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 batch_size=nil fields
=nil runtime: 0.5010ms
MOPED: 127.0.0.1:27017 QUERY database=yeloapp_development collection=users selector={"$query"=>{"_id"=>BSON::ObjectId('561144df726169602d000000')}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 batch_size=nil fields
=nil runtime: 2.4130ms
MOPED: 127.0.0.1:27017 QUERY database=yeloapp_development collection=users selector={"$query"=>{"_id"=>BSON::ObjectId('56ae487e72616930bf460000')}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 batch_size=nil fields
=nil runtime: 0.4500ms
MOPED: 127.0.0.1:27017 QUERY database=yeloapp_development collection=users selector={"$query"=>{"_id"=>BSON::ObjectId('567d01277261695b8a000000')}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 batch_size=nil fields
=nil runtime: 5.1940ms
MOPED: 127.0.0.1:27017 QUERY database=yeloapp_development collection=users selector={"$query"=>{"_id"=>BSON::ObjectId('56aa51f972616944d1300000')}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 batch_size=nil fields
=nil runtime: 6.2580ms
Ability.rb
class Ability
include CanCan::Ability
def initialize(user)
# Define abilities for the passed in user here. For example:
#
# user ||= User.new # guest user (not logged in)
# if user.admin?
# can :manage, :all
# else
# can :read, :all
# end
#
# The first argument to `can` is the action you are giving the user
# permission to do.
# If you pass :manage it will apply to every action. Other common actions
# here are :read, :create, :update and :destroy.
#
# The second argument is the resource the user can perform the action on.
# If you pass :all it will apply to every resource. Otherwise pass a Ruby
# class of the resource.
#
# The third argument is an optional hash of conditions to further filter the
# objects.
# For example, here the user can only update published articles.
#
# can :update, Article, :published => true
#
# See the wiki for details:
# https://github.com/CanCanCommunity/cancancan/wiki/Defining-Abilities
if user && user.admin_type == 1
can :access, :rails_admin # only allow admin users to access Rails Admin
can :dashboard
can :manage, :all
end
if user && user.is_admin?
can :access, :rails_admin # only allow admin users to access Rails Admin
can :dashboard
can :read, :all
can :manage, :statistic
end
end
end
rails_admin.rb
RailsAdmin.config do |config|
### Popular gems integration
## == Devise ==
config.authenticate_with do
warden.authenticate! scope: :user
end
config.current_user_method(&:current_user)
## == Cancan ==
#config.authorize_with :cancan
## == PaperTrail ==
# config.audit_with :paper_trail, 'User', 'PaperTrail::Version' # PaperTrail >= 3.0.0
### More at https://github.com/sferik/rails_admin/wiki/Base-configuration
config.actions do
dashboard # mandatory
index # mandatory
new
export
bulk_delete
show
edit
delete
show_in_app
## With an audit adapter, you can add:
# history_index
# history_show
end
end
Edit: Я решил проблему (см ответ). Но все же я хотел бы знать причину, по которой она загружалась так медленно. Помощь приветствуется.