Hanami와 Pagy 연동 과정
-
환경 설정: Hanami 2.3 기반의 새 애플리케이션을 생성하고, PostgreSQL 데이터베이스에
people테이블을 위한 마이그레이션을 정의했습니다. -
ROM 관계 정의:
Pagynation::Relations::People클래스를 통해people테이블에 대한 ROM 관계를 설정하여 데이터베이스 스키마를 추론하도록 했습니다. - 액션 구현:
Pagynation::Actions::People::List액션에Pagy::Method를 포함하여 페이지네이션 로직을 구현했습니다.pagy(people.order(:name), request:, client_max_limit: 40)호출 시request객체를 명시적으로 전달해야 했습니다. 이는 Hanami가 요청 객체를 인스턴스 변수가 아닌 인자로 전달하는 함수형 방식을 따르기 때문입니다.- 페이지네이션된 레코드와 Pagy 객체를 뷰로 전달했습니다.
- 뷰 구현:
Pagynation::Views::People::List뷰에서 액션으로부터 전달받은people과paginator(Pagy 객체)를expose했습니다.decorate: false옵션을 사용하여 데이터를 단순 해시 형태로 유지했습니다.
- 템플릿 작성: ERB 템플릿에서
people데이터를 테이블 형태로 렌더링하고,paginator.info_tag와paginator.series_nav헬퍼를 사용하여 페이지네이션 정보와 링크를 표시했습니다.
개선된 사용자 경험
-
전반적인 연동 과정이 Pagy 웹사이트의 튜토리얼과 유사하게 직관적으로 진행되었습니다.
-
request객체 전달 외에는 특별한 글루 코드 없이도 대부분의 기능이 즉시 작동했습니다. -
URL 파라미터를 통한 페이지 제한 설정 및 페이지 이동 링크가 모두 정상적으로 동작했습니다.
-
이는 Pagy의 내부 재설계와 Hanami의 성숙한 퍼시스턴스 레이어 덕분으로 평가됩니다.