Rails API mode 에서 ActiveAdmin 을 사용해 Admin 페이지 만들기
레일즈는 원래 풀스택 프레임워크 입니다. 하지만 옵션에 따라서는 API 형태로만 프레임워크를 사용 할 수도 있습니다.
저는 특별한 일이 없다면 레일즈는 항상 API 모드로만 사용하는데 별도의 관리자 페이지를 위해서 일부러 풀스택 프레임워크를 사용하는 방향은 좋다고 생각하지 않아 항상 이런 관리자 페이지를 만들 수 있는 라이브러리에 대해서 고민을 하고 있습니다.
이번에 2개의 라이브러리 중에서 고민하다가 하나로 결정을 내리게 되어 그 사용법에 대해서 적고자 합니다.
사용할 라이브러리는 다음과 같습니다. activeadmin/activeadmin
설치
gem 'activeadmin'
하지만 설치 전 분명 API 모드라서 에러가 생길 것이기 때문에 에러가 없도록 코드를 먼저 수정해줍니다.
config/application.rb
require "sprockets/railtie" # 주석처리 해제
# 아래 코드는 Application class 안에 작성합니다.
config.middleware.use ActionDispatch::Flash
config.middleware.use Rack::MethodOverride
config.middleware.use ActionDispatch::Cookies
config.middleware.use ActionDispatch::Session::CookieStore
app/controllers/application_controller.rb
상속 받는 Controller 를 API 에서 Base 로 바꾸고 필요에 따라 API 를 상속 받아 씁니다.
class ApplicationController < ActionController::Base
app/assets/config/manifest.js
파일을 추가합니다. 따로 내용은 추가하지 않아도 됩니다.
Gemfile
activeadmin 에서는 sass 를 쓰나봅니다.
gem 'sass-rails'
이제 드디어 설치합니다.
rails g active_admin:install --skip-users
옵션에 따라 명령어가 조금 달라집니다.
devise 를 사용하지 않는 경우, 이미 존재하는 user 클래스가 있다면? 저는 이미 사용하고 있는 클래스가 있어서 적용했습니다.
설치가 확인 되었으니 기본설정을 합니다.
대체로 admin 유저로 설정이 되어 있으니 user 로 바꿔 줍니다.
config/initializers/active_admin.rb
config.authentication_method = :authenticate_user! # 보안 증명 메서드
config.current_user_method = :current_user # 접속 유저 확인 메서드
config.logout_link_path = :destroy_user_session_path # 로그아웃 링크도 admin 으로 되어 있어 수정
config.comments = false # 무슨 설정인지는 모르겠지만 상단에서 누르면 에러가 나서 없앴습니다.
이제 다시 서버를 리스타트 해줍니다.
다만 이렇게 해주었더니 문제가 발생했습니다.
당장 해결할 방법은 찾지 못했는데 아무래도 꼼수를 조금 찾아봐야 해결 할 수 있을 것 같네요.
아니면 관리자 페이지도 분리하거나 아니면 풀스택으로 관리자 페이지만 구현하고 나머지는 API 형태로 만드는것도 방법일듯 합니다.
다음에는 풀스택 프레임워크로 레일즈를 사용할때 적용해보도록 하겠습니다.