Hanami 2.3은 핵심적으로 Rack 3 지원과 리소스 기반 라우팅을 통해 프레임워크의 기반을 강화했습니다.
Rack 3 지원 강화
-
Hanami는 이제 Rack 2와 3를 모두 지원하여 개발 환경의 유연성을 높였습니다.
-
Rack 3로의 업그레이드를 권장하며, Hanami는 주요 변경 사항을 자동으로 처리합니다.
-
사용자는 Rack 요청/응답 세부 사항을 다루는 경우에만 애플리케이션 코드 업데이트가 필요할 수 있습니다.
간소화된 라우팅 및 요청 처리
-
리소스 라우팅 재도입: 기존의 여러 줄의 RESTful 라우팅 설정을
resources :books한 줄로 대체하여 코드를 대폭 간소화했습니다. 이는 사용자 정의, 중첩, 스코프 및 일반 라우트와의 결합이 가능합니다. -
라우터 성능 향상: 대규모 라우트 환경에서 라우터 런타임 성능이 크게 개선되었습니다.
-
자동 요청 본문 파싱: Multipart 폼과 JSON 요청 본문이 기본적으로 파싱됩니다.
-
라우트 스코프 및 이름: 라우트 스코프에 사용자 정의 이름 접두사를 부여하고, 스코프 접두사보다 우선하는 접두사로 라우트 이름을 지정할 수 있습니다.
-
보안 및 네트워크: `Request
subdomains를 통해 서브도메인 접근이 가능하며 TLD 길이를 설정할 수 있습니다. CSP에 'nonce'를 추가하면 스크립트 및 스타일시트 태그에 자동으로 nonce가 추가됩니다. CSRF 토큰은 요청 파라미터 외에 X-CSRF-Token` 헤더에서도 로드됩니다.
개발자 경험(DX) 개선 사항
-
hanami new: 새 앱 생성 시 Git 저장소를 자동으로 초기화하며,--skip-view및--gem-source옵션을 제공합니다. -
새 앱 구성: 유용한
bin/setup스크립트와 개선된 README,bundle exec없이bin/hanami를 호출할 수 있는 binstub이 포함됩니다. -
데이터베이스 관리:
hanami db rollback명령으로 데이터베이스 마이그레이션을 쉽게 롤백할 수 있습니다. -
콘솔 커스터마이징:
config.console.include MyModule을 통해hanami console에 사용자 정의 모듈을 포함할 수 있으며,config.console.engine = :pry로 Pry를 기본 콘솔 엔진으로 설정할 수 있습니다. -
콘솔 부팅: 부팅되지 않은 앱/슬라이스 키 접근 시 경고가 표시되며,
hanami console --boot으로 앱을 미리 부팅할 수 있습니다. -
자동 작업 로딩: 기본 Rakefile이
lib/tasks/에서 사용자 정의 작업을 자동으로 로드합니다. -
뷰 로직: 뷰 컨텍스트 클래스가 기본으로 생성되어 사용자 정의 뷰 로직을 쉽게 배치할 수 있습니다.
-
슬라이스별 생성: 슬라이스 디렉토리 내에서
hanami generate command를 실행하면 해당 슬라이스를 자동으로 대상으로 합니다.