Быстрое переключение между пользователями с помощью AnyLogin gem
August 11, 2019 [ Rails ]
Я думаю, всем знакомо, когда в системе есть несколько пользователей (например, с разными ролями) и нужно сделать, что-то одним, а потом другим пользователем. И тут, начинается постоянный логин/логаут туда сюда, либо, еще несколько вкладок инкогнито режима с несколькими пользователями. Вобщем, такая себе быстрая разработка.
На помощь приходит https://github.com/igorkasyanchuk/any_login.
После установки в нижнем левом углу пояляеться иконка, с помощью которой можно легко и быстро переключать пользователей:
Установка
Я думаю здесь все и так ясно, в кратце:
-
Добавляем в gemfile
gem 'any_login' -
В главный лайаут (например,
app/views/layouts/application.html.erbесли у вас rails и erb) добавляем:... </html> <%= = any_login_here if defined?(AnyLogin) %> - Вобщем все. Затем в левом нижнем углу появиться иконка, позваляющая вибирать пользователей как на картинке выше.
Если у вас Rails + Devise больше ничего делать не нужно. По умолчанию этот gem включен только в development mode.
Полезное
- Для того, чтоб вот вырубить для прода, вот так, прям на 100% делаем так:
# Initializer: config/initializers/any_login.rb
AnyLogin.setup do |config|
config.enabled = false
end- Кастомизация
rails g any_login initializerМожно настроить более детально, например: лимит количества юзеров в дропдауне, адрес для редиректа после удачного входа и тд.
Все настройки тоже есть здесь в разделе Options.
Еще пользователей в дропдауне можно сортировать сразу по группам, как-то так:
# Initializer: config/initializers/any_login.rb
AnyLogin.setup do |config|
config.collection_method = :grouped_collection_by_role
end
# User class: app/models/user.rb
class User < ActiveRecord::Base
def self.grouped_collection_by_role
{
'admin' => User.admins.limits(10),
'moderator' => User.moderators.limit(10),
'user' => User.users.limit(10)
}
end
endОшибки
Если вдруг у вас ошибка при запуске сервера типа такой:
'method_missing': undefined method 'assets'Значит, скорей всего, необходимо добавить для правильной работы в config/application.rb
require "sprockets/railtie"