Ruby로 작업을 하다 보면 복잡한 데이터나 로그를 확인해야 하는 경우가 많습니다. 이때 데이터를 보기 좋게 출력하는 것은 디버깅과 유지보수를 훨씬 더 수월하게 만들어줍니다. 이번 포스팅에서는 Ruby의 기본 기능인 pp와 JSON.pretty_generate를 활용해 로그를 보기 좋게 출력하는 방법을 소개하겠습니다.
1. pp (Pretty Print) 모듈
pp는 Ruby의 표준 라이브러리로, 복잡한 객체나 데이터를 사람이 읽기 쉽게 출력하는 데 유용합니다. JSON 변환 없이 Ruby 객체를 그대로 보기 좋게 출력할 수 있어 간단하고 강력합니다.
사용법
require 'pp'
# 예제 데이터
users = [
User.new(
id: 1,
name: "Alice",
email: "alice@example.com",
created_at: Time.new(2025, 1, 16, 10, 0, 0),
updated_at: Time.new(2025, 1, 20, 14, 0, 0)
),
User.new(
id: 2,
name: "Bob",
email: "bob@example.com",
created_at: Time.new(2025, 1, 17, 11, 0, 0),
updated_at: Time.new(2025, 1, 21, 15, 0, 0)
)
]
# Pretty Print로 출력
pp users
출력 예시
[#<User:0x00007fd9a4de6e00
id: 1,
name: "Alice",
email: "alice@example.com",
created_at: 2025-01-16 10:00:00 +0900,
updated_at: 2025-01-20 14:00:00 +0900>,
#<User:0x00007fd9a5703d58
id: 2,
name: "Bob",
email: "bob@example.com",
created_at: 2025-01-17 11:00:00 +0900,
updated_at: 2025-01-21 15:00:00 +0900>]
2. JSON.pretty_generate
Ruby의 JSON.pretty_generate는 JSON 데이터를 보기 좋게 포맷팅하는 데 유용합니다. 특히 API 응답 데이터를 다룰 때나 JSON 포맷을 디버깅할 때 효과적입니다.
사용법
require 'json'
# 예제 데이터
users = [
{
id: 1,
name: "Alice",
email: "alice@example.com",
created_at: "2025-01-16 10:00:00",
updated_at: "2025-01-20 14:00:00"
},
{
id: 2,
name: "Bob",
email: "bob@example.com",
created_at: "2025-01-17 11:00:00",
updated_at: "2025-01-21 15:00:00"
}
]
# JSON.pretty_generate로 출력
puts JSON.pretty_generate(users)
출력 예시
[
{
"id": 1,
"name": "Alice",
"email": "alice@example.com",
"created_at": "2025-01-16 10:00:00",
"updated_at": "2025-01-20 14:00:00"
},
{
"id": 2,
"name": "Bob",
"email": "bob@example.com",
"created_at": "2025-01-17 11:00:00",
"updated_at": "2025-01-21 15:00:00"
}
]
3. pp와 JSON.pretty_generate의 차이점
기능 pp JSON.pretty_generate
데이터 형식 | Ruby 객체 그대로 출력 | JSON 형식으로 변환하여 출력 |
주요 사용 사례 | 디버깅, Ruby 객체 보기 | API 응답 데이터, JSON 디버깅 |
표준 라이브러리 포함 여부 | 포함 | 포함 |
결론
Ruby에서 데이터를 보기 좋게 출력하려면 상황에 따라 pp와 JSON.pretty_generate를 적절히 사용하세요. Ruby 객체 자체를 디버깅하려면 pp, JSON 데이터를 포맷팅하려면 JSON.pretty_generate가 적합합니다. 이 두 가지 도구를 잘 활용하면 로그 분석과 디버깅의 효율이 크게 향상될 것입니다.