liminfo

Ruby Reference

Ruby 프로그래밍 레퍼런스

29개 결과

Ruby Reference 소개

이 Ruby 레퍼런스는 Ruby 프로그래밍 언어의 핵심 구문과 관용 표현을 검색할 수 있는 치트시트입니다. 기본문법, 메서드, 블록, 클래스, 모듈, 컬렉션의 여섯 가지 카테고리로 구성되어 있으며, 모든 항목에 바로 복사해서 쓸 수 있는 코드 예제를 제공합니다. Rails 컨트롤러, Rake 태스크, CLI 스크립트 등 어떤 작업을 하든 자주 사용하는 패턴을 즉시 찾아볼 수 있습니다.

Ruby는 표현력이 뛰어난 언어로 유명합니다. 블록과 이터레이터가 장황한 반복문을 대체하고, 심볼이 해시 키를 가볍게 만들며, 믹스인으로 깊은 상속 없이도 동작을 공유할 수 있습니다. 이 레퍼런스는 Proc과 lambda의 차이, ?와 ! 메서드 네이밍 규칙, include/extend/prepend 세 가지 포함 방식 등 Ruby만의 패턴을 체계적으로 정리하여 공식 문서를 오가지 않아도 관용적인 Ruby 코드를 작성할 수 있도록 돕습니다.

모든 예제는 Ruby 3.x 호환으로 작성되었으며 커뮤니티 스타일 가이드를 따릅니다. 개발자가 실제로 코드를 구성하는 흐름에 맞춰 변수와 제어 구문에서 시작하여 메서드와 클로저, 클래스와 모듈, 마지막으로 map, select, reduce 등을 제공하는 풍부한 Enumerable API 순으로 정리되어 있습니다.

주요 기능

  • 지역 변수, 인스턴스(@), 클래스(@@), 전역($), 상수 등 모든 변수 스코프 포괄
  • 기본값, 가변 인자(*args), 이중 스플랫(**kwargs), 키워드 매개변수를 포함한 메서드 구문
  • yield와 block_given? 패턴을 통한 Block, Proc, Lambda 비교 설명
  • attr_accessor, 상속, Struct, self 기반 클래스 메서드를 포함한 클래스 정의
  • 믹스인(include/extend/prepend)과 네임스페이스 양쪽 용도의 모듈 사용법
  • map, select, reject, reduce, flat_map, group_by, zip, sort_by 등 Enumerable 컬렉션 연산
  • merge, keys, values, 조건부 필터링을 포함한 Hash 조작 메서드
  • Ruby 커뮤니티 스타일 가이드를 따르는 실무 코드 스니펫

자주 묻는 질문

이 레퍼런스는 어떤 Ruby 버전을 기준으로 하나요?

모든 예제는 Ruby 3.x와 호환되며 대부분 Ruby 2.7 이상에서도 동작합니다. 3.0에서 도입된 번호 블록 매개변수(_1, _2) 같은 구문은 사용하지 않아 폭넓은 호환성을 유지합니다.

Proc과 Lambda는 어떻게 다른가요?

둘 다 호출 가능한 객체이지만 두 가지 차이가 있습니다. lambda는 인자 수를 엄격하게 검사하여 잘못된 수의 인자를 전달하면 ArgumentError를 발생시키지만, Proc은 부족한 인자에 nil을 할당합니다. 또한 lambda 안의 return은 lambda만 종료하고, Proc 안의 return은 감싸고 있는 메서드 전체를 종료합니다.

심볼(Symbol)과 문자열(String)은 언제 구분해서 쓰나요?

심볼은 불변이며 메모리에 한 번만 저장되므로 해시 키, 메서드 이름, 런타임에 변하지 않는 식별자에 적합합니다. 문자열은 gsub!이나 concat 같은 변경이 필요하거나 사용자 입력 데이터를 다룰 때 사용합니다.

include, extend, prepend는 어떤 차이가 있나요?

include는 모듈 메서드를 인스턴스 메서드로 추가하고, extend는 클래스(싱글턴) 메서드로 추가합니다. prepend는 메서드 탐색 체인에서 클래스 앞에 모듈을 삽입하여 원본 구현을 super로 호출하면서 메서드를 오버라이드할 수 있게 합니다.

메서드 이름 끝의 ?와 !는 무슨 의미인가요?

?는 해당 메서드가 불리언을 반환함을 나타냅니다(예: empty?, include?). !는 메서드가 파괴적이거나 nil 대신 예외를 발생시킨다는 경고입니다. 예를 들어 sort는 새 배열을 반환하지만 sort!는 원본 배열을 직접 변경합니다.

yield는 메서드 내에서 어떻게 동작하나요?

yield는 메서드에 전달된 블록으로 제어를 넘깁니다. 메서드가 블록에 인자를 전달하고 블록의 반환값을 받을 수 있습니다. LocalJumpError를 방지하려면 yield를 호출하기 전에 block_given?으로 블록이 전달되었는지 확인하는 것이 좋습니다.

Enumerable 모듈이란 무엇이고 왜 중요한가요?

Enumerable은 map, select, reject, reduce, sort_by, group_by 등의 컬렉션 메서드를 제공하는 믹스인입니다. each 메서드를 정의하고 Enumerable을 include하는 클래스라면 수십 가지 반복 및 변환 메서드를 무료로 얻을 수 있습니다.

Ruby on Rails 개발에도 이 레퍼런스를 사용할 수 있나요?

네, Rails는 Ruby 위에 구축되어 있으므로 블록, 클래스, 모듈, 컬렉션 등 여기서 다루는 모든 핵심 언어 구문이 그대로 적용됩니다. 이 레퍼런스는 Rails 전용 API가 아닌 언어 자체에 초점을 맞추고 있어 Rails 문서와 함께 활용하기 좋습니다.