JoungSik/Rails API mode 에서 ActiveAdmin 을 사용해 Admin 페이지 만들기

Created Tue, 09 Nov 2021 03:38:12 +0900 Modified Sat, 31 Dec 2022 01:31:35 +0900
781 Words

Rails API mode 에서 ActiveAdmin 을 사용해 Admin 페이지 만들기

레일즈는 원래 풀스택 프레임워크 입니다. 하지만 옵션에 따라서는 API 형태로만 프레임워크를 사용 할 수도 있습니다.

저는 특별한 일이 없다면 레일즈는 항상 API 모드로만 사용하는데 별도의 관리자 페이지를 위해서 일부러 풀스택 프레임워크를 사용하는 방향은 좋다고 생각하지 않아 항상 이런 관리자 페이지를 만들 수 있는 라이브러리에 대해서 고민을 하고 있습니다.

이번에 2개의 라이브러리 중에서 고민하다가 하나로 결정을 내리게 되어 그 사용법에 대해서 적고자 합니다.

사용할 라이브러리는 다음과 같습니다. activeadmin/activeadmin

설치

installation

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 클래스가 있다면? 저는 이미 사용하고 있는 클래스가 있어서 적용했습니다.

1

설치가 확인 되었으니 기본설정을 합니다.

대체로 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 # 무슨 설정인지는 모르겠지만 상단에서 누르면 에러가 나서 없앴습니다.

이제 다시 서버를 리스타트 해줍니다.

다만 이렇게 해주었더니 문제가 발생했습니다.

2

당장 해결할 방법은 찾지 못했는데 아무래도 꼼수를 조금 찾아봐야 해결 할 수 있을 것 같네요.


아니면 관리자 페이지도 분리하거나 아니면 풀스택으로 관리자 페이지만 구현하고 나머지는 API 형태로 만드는것도 방법일듯 합니다.

다음에는 풀스택 프레임워크로 레일즈를 사용할때 적용해보도록 하겠습니다.

참고

How to set up Rails API app to use ActiveAdmin?

루비 온 레일즈를 위한 관리 프레임워크, ActiveAdmin