1. 엔터프라이즈급 핵심 기능
IronAdmin은 단순한 데이터 편집 도구를 넘어 실제 운영 환경에서 필수적인 보안 및 관리 기능을 내장하고 있습니다.
- 감사 로그(Audit Trail): 모든 생성(Create), 수정(Update), 삭제(Delete) 작업이 사용자 정보, 타임스탬프, IP 주소 및 변경 전후의 차이점(diff)과 함께 기록됩니다. /admin/audit 경로에서 전체 이력을 확인할 수 있습니다.
- 멀티테넌시 지원: 다중 조직을 지원하는 앱의 경우 IronAdmin.configure를 통해 쿼리 범위를 자동으로 설정할 수 있습니다. 이를 통해 데이터 유출을 방지하고 매번 수동으로 범위를 지정해야 하는 번거로움을 제거합니다.
- 소프트 삭제(Soft Delete): 모델의 deleted_at 컬럼을 자동으로 감지하여 with_deleted, only_deleted 스코프와 복구(restore) 액션을 별도 설정 없이 추가합니다.
- 데이터 내보내기: 모든 리소스의 데이터를 CSV 또는 JSON 형식으로 즉시 내보낼 수 있는 기능을 기본으로 제공합니다.
2. 풍부한 필드 타입과 확장성
IronAdmin은 15가지 이상의 전문화된 필드 타입을 제공하여 데이터의 성격에 맞는 최적의 UI를 렌더링합니다.
- 미디어 및 텍스트: ActiveStorage를 활용한 파일 업로드(미리보기 지원), ActionText Trix 에디터 통합, Markdown 에디터 등을 지원합니다.
- 특수 데이터 타입: 태그 입력, 클릭 가능한 URL 및 이메일, 컬러 피커, 통화 형식(Currency), 마스킹 처리된 비밀번호 필드 등을 포함합니다.
- 자동 감지 기능: Boolean 값은 체크/X 아이콘으로, 날짜는 읽기 쉬운 형식으로 표시되며, 긴 텍스트는 인덱스 뷰에서 자동으로 생략 처리되고 툴팁이 제공됩니다. 다대일(Polymorphic Belongs To) 관계 역시 자동으로 감지되어 폼에서 선택 도구를 생성합니다.
- 커스텀 필드 및 도구: FieldTypeRegistry API를 통해 고유한 필드 타입을 등록할 수 있으며, IronAdmin::Tool 클래스를 상속받아 사이드바에 통합된 독립적인 관리 페이지(예: 분석 리포트)를 쉽게 추가할 수 있습니다. 이를 통해 단순한 CRUD를 넘어선 복잡한 대시보드나 리포팅 툴을 관리 시스템 내에 자연스럽게 녹여낼 수 있습니다.
3. 유연한 커스터마이징 및 아키텍처
개발자는 Tailwind CSS와 ViewComponent를 통해 관리자 패널의 모든 요소를 세밀하게 제어할 수 있습니다.
- Tailwind CSS 테마: 테마 설정 객체를 통해 버튼 색상, 사이드바 배경, 링크 스타일 등 40개 이상의 UI 속성을 브랜드 가이드에 맞춰 수정할 수 있습니다. CSS 파일을 직접 건드리지 않고도 Ruby 코드로 스타일을 정의할 수 있다는 점이 큰 장점입니다.
- 리소스 자동 검색: app/iron_admin/resources/ 디렉토리에 파일을 배치하면 Rails 부팅 시 자동으로 등록됩니다. 별도의 매니페스트 파일 관리가 필요 없으며 설정보다 관례(CoC)를 따르는 Rails의 철학을 잘 보여줍니다.
- 모델 추론 및 동적 라우팅: UserResource는 자동으로 User 모델과 매핑되며, 데이터베이스 컬럼을 읽어 필드 정의를 생성합니다. 단일 ResourcesController가 모든 리소스의 CRUD를 처리하는 효율적인 구조를 갖추고 있어 코드 중복을 최소화합니다.
- Rails 엔진 아키텍처: 별도의 서비스나 데이터베이스 없이 Rails 애플리케이션 내부에서 실행되므로 배포와 통합이 매우 간편하며, 기존의 인증 시스템이나 권한 관리 로직과도 매끄럽게 연동됩니다. 전체 UI가 ViewComponent로 구성되어 있어 필요 시 특정 컴포넌트만 오버라이드하여 완전히 새로운 렌더링 로직을 적용할 수도 있습니다.