REPL은 Read-Eval-Print-Loop(읽기–평가–출력–반복)의 약자입니다.
즉, 루비 코드를 직접 입력하고 그 결과를 즉시 확인할 수 있게 해주는 프로그램입니다.
대표적인 REPL로는 irb가 있으며, 또 다른 인기 도구로는 pry가 있습니다.
이런 도구들이 유용한 이유는 간단합니다. 루비 코드를 빠르게 테스트해 볼 수 있기 때문입니다.
예를 들어, 문자열 배열을 정수 배열로 변환하려고 하는데 정확한 방법이 기억나지 않는다고 가정해 봅시다.
이럴 때 검색해서 방법을 찾아보고(물론 전혀 문제없습니다!), REPL에서 원하는 대로 작동할 때까지 실험해 본 뒤, 완성된 코드를 프로젝트에 통합하면 됩니다.
가장 큰 장점은 무엇일까요?
코드 조각을 독립적으로 테스트할 수 있기 때문에, 오류가 발생해도 고려해야 할 요소가 적고 원인을 훨씬 쉽게 파악할 수 있습니다.
결국 한 번에 한 가지에만 집중할 수 있게 되는 것이죠!
그럼 지금부터 루비에서 사용할 수 있는 다양한 REPL을 살펴보겠습니다.
Interactive Ruby Shell (IRB)
IRB는 모든 루비 개발자가 익히 알고 있는 내장 REPL입니다.
화려한 기능은 많지 않지만, 해야 할 일은 확실하게 해냅니다. 코드를 입력하면 결과를 돌려주는 것이죠.
사용 방법은 간단합니다. 터미널 창에서 irb를 입력하면 됩니다.
그러면 다음과 같은 프롬프트가 나타납니다:
irb(main):001:0>
여기에 루비 코드를 작성하고 엔터 키를 누르면 바로 실행됩니다. 종료하려면 exit를 입력하세요.
IRB 설정 팁
홈 폴더에 .irbrc 파일을 생성하면 다양한 기능을 활성화할 수 있습니다.
명령어 기록 저장하기:
IRB.conf[:SAVE_HISTORY] = 500
자동 들여쓰기 켜기:
IRB.conf[:AUTO_INDENT] = true
프롬프트 커스터마이징하기:
IRB.conf[:PROMPT][:CUSTOM] = {
PROMPT_I: "irb(#{Dir.pwd}) ",
PROMPT_S: "irb(#{Dir.pwd})* ",
PROMPT_C: "irb(#{Dir.pwd})? ",
PROMPT_N: "irb(#{Dir.pwd})* ",
RETURN: "%s\n"
}
IRB.conf[:PROMPT_MODE] = :CUSTOM
Pry 젬(Gem)을 사용해야 하는 이유
Pry는 언제든 설치할 수 있는 루비 젬 형태의 REPL로, irb와 비슷하지만 훨씬 더 많은 기능을 제공합니다.
주요 기능은 다음과 같습니다:
- 구문 강조(Syntax Highlighting)
- 자동 완성(irb에도 일부 있지만 매우 기본적인 수준)
- 인트로스펙션 명령(메서드, 변수, 상수 등 목록 조회)
- 이전에 입력한 코드 편집 후 재실행
- 디버깅 기능
이러한 기능들 덕분에 대부분의 경우 Pry가 더 나은 선택이 됩니다. 아직 사용해 보지 않았다면 꼭 한번 시도해 보세요.
Rails 프로젝트를 사용 중이라면 Gemfile에 pry-rails를 추가하는 것만으로 rails console에서 Pry를 사용할 수 있습니다. 이 경우 show-models와 show-routes 같은 편리한 명령어도 함께 사용할 수 있습니다.
Pry에는 다양한 설정 옵션이 있습니다. 홈 폴더의 .pryrc 파일에 작성하면 전역 설정이 되고, 프로젝트 폴더에 두면 해당 프로젝트에만 적용되는 로컬 설정이 됩니다.
ruby -e 옵션으로 한 줄 실행하기
REPL을 실행하지 않고 단 한 줄의 루비 코드만 빠르게 실행하고 싶다면 -e 플래그를 사용하세요.
예시:
ruby -e "puts 123 * 2"
IRB를 열 필요 없이 간단한 동작을 즉시 확인할 때 아주 유용한 방법입니다.
온라인 REPL 활용하기
만약 당장 루비를 설치할 수 없는 환경이라면 어떻게 해야 할까요?
또는 로컬 머신이 아닌 다른 환경에서 코드를 테스트하거나, 시연을 위해 코드를 공유하고 피드백을 받고 싶을 수도 있습니다.
바로 이럴 때 온라인 REPL이 빛을 발합니다. Replit의 Ruby 환경처럼 브라우저만 있으면 바로 코드를 실행해 볼 수 있는 서비스가 여러 개 있습니다.
마무리
지금까지 루비의 REPL에 대해 알아보았습니다! REPL을 활용하면 파일을 생성하지 않고도 코드를 빠르게 테스트할 수 있습니다.
이제 직접 실습해 볼 시간입니다 🙂