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

무엇을 하나요?
해시를 깔끔하고 정렬된 표로 변환합니다.
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
그게 전부입니다. 마법도, 복잡한 파싱도 없습니다.
왜 pp나 awesome_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
그게 전부입니다. 이제 끝났습니다.
유용하게 쓰셨다면 알려 주세요. 버그를 발견하셨다면 역시 알려 주세요.
읽어 주셔서 감사합니다 🙏