Ruby gem을 만들었으니 이제 hash dumps를 눈을 가늘게 볼 필요가 없습니다

발행: (2026년 5월 8일 PM 11:58 GMT+9)
5 분 소요
원문: Dev.to

Source: Dev.to

Cover image for I built a Ruby gem so I don't have to squint at hash dumps anymore

무엇을 하나요?

해시를 깔끔하고 정렬된 표로 변환합니다.

require 'typed_print'

data = [
  { name: "Alice", score: 100, active: true },
  { name: "Bob",   score: 42,  active: false }
]

TypedPrint.print(data)

출력

 Name   Score Active 
------+------- -------
Alice    100 true   
Bob       42 false  

그게 전부입니다. 마법도, 복잡한 파싱도 없습니다.

ppawesome_print를 쓰지 않나요?

  • pp도 괜찮지만 여전히 스캔하기 어렵습니다.
  • awesome_print는 훌륭하지만 때때로 색상, JSON 지원, 혹은 추가 의존성이 필요하지 않을 때가 있습니다.

제가 원한 것은 다음과 같은 도구였습니다:

  • 필수 의존성이 전혀 없음
  • 표만 출력
  • 어디서든 동작 (Rails, Rake 작업, 일반 Ruby 스크립트, 심지어 최소한의 Docker 컨테이너에서도)

어떤 기능을 제공하나요?

열 정렬

TypedPrint.print(data, align: { score: :right })

필요한 컬럼만 표시

TypedPrint.print(data, only: [:name, :score])

사용자 정의 헤더

TypedPrint.print(data, headers: { name: "User", score: "Points" })

마크다운 출력 (문서에 좋음)

TypedPrint.print(data, format: :markdown)

GitHub README 등에 복사해 넣을 수 있는 올바른 마크다운 표를 생성합니다.

색상! (v0.3.0)

TypedPrint.print(data, color: true)

또는 전체 제어:

TypedPrint.print(
  data,
  colors: { name: :cyan, score: :green, active: :yellow }
)

Pastel은 선택 사항입니다. 설치되어 있지 않으면 색상이 무시되고 오류가 발생하지 않습니다.

다양한 데이터 타입 예시

mixed = [
  { name: "Product A", price: 29.99, in_stock: true,  notes: nil },
  { name: "Product B", price: 49.99, in_stock: false, notes: "Limited" }
]

TypedPrint.print(mixed)

출력

   Name      Price In_stock Notes        
----------+-------+---------+-------------
Product A   29.99 true                  
Product B   49.99 false    Limited edition

nil, 불리언, 숫자, 문자열을 자동으로 처리합니다.

성능은 어떨까요?

가볍습니다. 의존성이 없으니 숨겨진 부피가 없습니다. 10,000행을 테스트했을 때도 CLI 도구와 디버깅에 충분히 빠릅니다. 아주 큰 데이터셋을 터미널에 출력하는 것은 일반적으로 권장되지 않습니다.

대상은 누구인가요?

  • 콘솔에서 디버깅하는 Rails 개발자
  • 깔끔한 출력을 원하는 CLI 도구 제작자
  • 해시를 로그에 남기고 가독성을 원하는 모든 사람

pp에 지친 사람들을 위한 도구입니다.

링크

  • RubyGems:
  • GitHub:
  • 문서: 저장소의 README를 참고하세요.

앞으로의 계획은?

단순하게 유지합니다. 부풀어 오른 프레임워크가 되기 위한 로드맵은 없습니다. “무의존, 표만” 철학에 맞는 아이디어가 있다면 이슈를 열어 주세요. 사용자 요청을 받아 마크다운 지원을 v0.2.0에서 몇 시간 안에 추가했습니다.

사용해 보기

gem install typed_print

그게 전부입니다. 이제 끝났습니다.

유용하게 쓰셨다면 알려 주세요. 버그를 발견하셨다면 역시 알려 주세요.

읽어 주셔서 감사합니다 🙏

0 조회
Back to Blog

관련 글

더 보기 »