Pagy v43: 루비용 비종속적 페이지네이션 젬의 전면적인 재설계

Pagy 💚 The Leaping Gem! 💚 Pagy

작성자
Ruby Weekly
발행일
2025년 10월 03일

핵심 요약

  • 1 Pagy v43은 레거시 코드의 완전한 재설계와 함께 Keynav 페이지네이션 및 대화형 개발 도구를 포함한 대폭적인 기능 개선을 제공합니다.
  • 2 설정 요구사항을 99%까지 줄이고 API를 단순화하여 모든 환경 및 컬렉션 유형에서 더욱 효율적이고 유연한 페이지네이션을 지원합니다.
  • 3 서버 측 및 클라이언트 측 렌더링을 모두 지원하며, 사용되는 메서드만 자동으로 로드하여 거의 제로에 가까운 설정으로 100% 테스트 커버리지를 자랑합니다.

도입

Pagy는 루비 환경을 위한 비종속적(agnostic) 페이지네이션 젬으로, 최신 버전인 v43.0.0.rc*은 단순한 메이저 업데이트를 넘어선 전면적인 재설계를 통해 사용자 경험과 개발자 편의성을 혁신적으로 개선했습니다. 이 버전은 기존 코드베이스의 모든 수준에서 재구축되었으며, 사용법과 API를 포함한 전반적인 변화를 담고 있습니다. 버전 번호 43은 '삶, 우주, 그리고 모든 것의 궁극적인 질문에 대한 답'인 42를 넘어선다는 유머러스한 의미를 내포하며, Pagy의 새로운 도약을 상징합니다.

Pagy v43은 여러 핵심 개선 사항을 통해 페이지네이션 솔루션으로서의 입지를 강화했습니다. 주요 특징은 다음과 같습니다.

주요 개선 사항

  • 새로운 페이지네이션 기법: Pagy 전용 Keynav 페이지네이션을 도입하여 가장 빠른 키셋 기반 페이지네이션을 프런트엔드 헬퍼와 함께 제공합니다.
  • 자동화 및 설정 간소화: 설정 요구사항을 99%까지 줄여 개발 초기 단계를 대폭 간소화했습니다.
  • 단순화된 API: pagy 메서드와 @pagy 인스턴스만으로 모든 컬렉션을 페이지네이션하고 다양한 내비게이션 태그 및 헬퍼를 사용할 수 있도록 API가 단순화되었습니다. 메서드는 사용될 때만 자동으로 로드되어 메모리 소비를 최소화합니다.
  • 새로운 대화형 개발 도구: PagyWand를 통해 앱 테마와 Pagy CSS를 통합하고, Pagy AI를 문서 및 앱 내에서 활용할 수 있습니다.
  • 새로운 문서화: 간결하고 직관적이며 이해하기 쉬운 형태로 문서를 전면 개편했습니다.

Pagy v3 대비 향상된 점

  • 광범위한 호환성: 모든 환경 및 컬렉션 유형과 호환됩니다.
  • 다양한 페이지네이션 기법 지원: OFFSET, COUNTLESS, KEYSET, KEYNAV, CALENDAR 등 다양한 페이지네이션 기법을 지원합니다.
  • 렌더링 유연성: 서버 측 렌더링 또는 인기 있는 CSS 프레임워크 및 API를 위한 더 빠른 클라이언트 측 렌더링을 지원합니다.
  • 최소 설정 및 효율성: 실제로 사용되는 메서드만 자동으로 로드하여 거의 제로에 가까운 설정으로 운영됩니다.
  • 높은 품질 보장: Ruby, HTML, JavaScript E2E(End-to-End)에 대한 100% 테스트 커버리지를 자랑합니다.

활용 예시```ruby

Pagy 포함 (일반적으로 application_controller.rb)include Pagy::Method

오프셋 기반 페이지네이션@pagy, @records = pagy(:offset, Product.all)

키셋 기반 페이지네이션 (가장 빠른 기법)@pagy, @records = pagy(:keyset, Product.order(my_order).all)

JSON:API 지원@pagy, @records = pagy(:offset, Product.all, jsonapi: true)render json: { links: @pagy.urls_hash, data: @records }# 모델 확장 및 검색 엔진 연동 (예: application_record.rb)extend Pagy::Searchsearch = Product.pagy_search(params[:q])@pagy, @response = pagy(:elasticsearch_rails, search)

캘린더 페이지네이션@calendar, @pagy, @records = pagy(:calendar, collection, year: {}, month: {}, offset: {})```### 렌더링 옵션

  • 서버 측 렌더링: series_nav, series_nav(:bootstrap), series_nav(:bulma) 등을 통해 다양한 스타일의 내비게이션 바를 렌더링합니다.
  • 클라이언트 측 렌더링: Pagy.sync_javascript를 통해 JavaScript를 동기화하고, series_nav_js, input_nav_js 등으로 빠르고 반응형인 내비게이션을 구현합니다.

결론

Pagy v43은 루비 개발자를 위한 페이지네이션 솔루션으로서 단순한 기능 업데이트를 넘어선 근본적인 변화를 통해 생산성과 유연성을 극대화했습니다. 새로운 페이지네이션 기법, 간소화된 API, 강력한 개발 도구, 그리고 효율적인 렌더링 옵션은 Pagy를 현대 웹 애플리케이션 개발에 필수적인 젬으로 자리매김하게 합니다. 이 버전은 설정의 복잡성을 최소화하면서도 광범위한 호환성과 뛰어난 성능을 제공하여, 개발자들이 페이지네이션 구현에 소요되는 시간을 절약하고 핵심 비즈니스 로직에 집중할 수 있도록 지원합니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!