제 64호

Ruby on Rails 64번째 소식

이번 뉴스레터에는 Rails World 2025에서 발표된 Ruby 성능 혁신 소식부터, Campfire의 오픈소스 전환, Pagecord의 새로운 에디터, Ruby의 Boolean 클래스 논쟁, 그리고 Rails스럽게 AI 기능을 붙일 수 있는 Active Agent까지 다양한 이야기를 담았어요. 변화하는 개발 환경 속에서 Rails와 Ruby가 어떻게 진화하고 있는지 함께 살펴보시면 좋을 것 같아요.

아침저녁으로 제법 쌀쌀해진 걸 보니, 어느새 가을이 성큼 다가왔네요. 바쁜 일정 속에서도 감기 조심하시고 건강 잘 챙기시길 바라요.

이번 뉴스레터에는 Rails World 2025에서 발표된 Ruby 성능 혁신 소식부터, Campfire의 오픈소스 전환, Pagecord의 새로운 에디터, Ruby의 Boolean 클래스 논쟁, 그리고 Rails스럽게 AI 기능을 붙일 수 있는 Active Agent까지 다양한 이야기를 담았어요. 변화하는 개발 환경 속에서 Rails와 Ruby가 어떻게 진화하고 있는지 함께 살펴보시면 좋을 것 같아요.


🎧 10분 요약 오디오로 들어보시겠어요? → YouTube로 듣기

새로운 소식

Rails World 2025 폐막 키노트: Aaron Patterson의 Ruby 미래 전략

요약 보기

Shopify의 Aaron Patterson이 Rails World 2025 폐막 무대에서 Ruby 성능 혁신을 주제로 발표했어요. 핵심은 더 빠르고 효율적인 Rails를 위한 병렬성·JIT·객체 최적화였어요.

주요 포인트

  • Ractor: 멀티 코어 활용을 극대화하는 병렬성 모델. Ruby 3.5에서 mutable 객체 공유 제한 강화, JSON 파싱 등 CPU 작업에 특히 효과적.

  • ZJIT: 새롭게 등장한 메서드 기반 JIT 컴파일러. YJIT보다 더 많은 코드를 최적화할 수 있으며 향후 성능 개선 기대.

  • JIT 친화적 코드 작성: 불필요한 다형성 줄이기 → 단형 호출 지점 활용 시 성능 대폭 향상.

  • Ruby 3.5 업그레이드 권장: 객체 할당이 Ruby 3.4 대비 최대 70% 빨라짐.

Patterson은 “Ractor, ZJIT, 객체 할당 최적화를 적극 활용하면 Rails 앱이 한층 더 날쌔진다”고 강조했어요.

Solocooker: Campfire 포크 프로젝트

Solocooker on GitHub

개발자 chriopter37signals의 오픈소스 Campfire를 포크해 할 일 관리 기능재활용 버튼을 추가한 프로젝트 Solocooker공개했어요.

주요 특징

  • Disposable Notes: 작업 중 자유롭게 메모를 만들고, 불필요해진 메모는 빠르게 삭제 가능

  • To-do Capabilities: 단순한 노트에서 바로 할 일 관리 기능으로 확장

  • Recycle Button: 작업 마무리 단계에서 불필요한 항목을 일괄 정리

chriopter는 “문제의 핵심을 찾는 과정에서 사라져도 되는 임시 메모”를 위한 도구가 필요해 이 기능들을 직접 추가했다고 설명했어요.

Campfire: 이제 100% 무료 & 오픈소스 공개

Jason Fried(37signals 공동 창업자)가 Campfire를 완전히 무료이자 오픈소스로 전환했다고 발표했어요. 사이트도 업데이트되어 GitHub 저장소 링크와 함께 누구나 참여할 수 있도록 열어 두었어요.

핵심 포인트

  • Campfire: 37signals이 만든 그룹 채팅·협업 도구

  • 이제 무료 + 오픈소스 → 누구나 개선, 확장, 기여 가능

  • Jason Fried는 Sahil Lavingia(@shl), Daniel Vassallo(@dvassallo) 의 제안이 전환에 큰 동력이 되었다고 언급

앞으로 커뮤니티의 PR과 아이디어가 Campfire의 새로운 진화를 만들어갈 전망이에요.

Pagecord, 새로운 Lexxy 에디터 도입 예정

Lylo(@lylo)Pagecord에 새로운 Lexxy 에디터를 통합했다고 밝혔어요. 기존의 Trix 에디터에서 업그레이드된 버전으로, 아직은 수천 개의 기존 블로그 포스트에 대한 테스트가 필요해 배포 전 단계지만, 큰 진전으로 평가돼요.

핵심 포인트

  • Lexxy 에디터: Trix 대비 더 강력하고 유연한 편집 경험 제공

  • 테스트 단계: 기존 블로그 콘텐츠와의 호환성 검증 진행 중

  • 곧 공개 예정: 안정화되면 Pagecord 사용자들에게 새로운 글쓰기 환경 제공

Lylo는 “곧 라이브 환경에서 Lexxy를 사용할 수 있을 것”이라며 기대감을 전했어요.

Here is my deck for my talk at #friendlyrb about Boolean class in Ruby.
https://t.co/8j96YvPbNI
https://x.com/okuramasafumi/status/1966159367436374469

Boolean 클래스는 왜 Ruby에 없을까? — Friendly.rb 발표 요약

발표자료

Masafumi Okura(@okuramasafumi)Friendly.rb에서 발표한 Ruby의 Boolean 클래스 관련 슬라이드 자료를 공유했어요.

Ruby의 Boolean 관련 사실

  • Ruby에는 Boolean 클래스가 없음

  • 대신 true는 TrueClass, false는 FalseClass라는 단일 인스턴스를 가진 클래스에 속해요. (new 불가)

  • 두 클래스는 공통 부모 클래스가 없으며, !!expr 패턴을 통해 불리언 변환을 표현해요.

  • Ruby에서는 false와 nil만 거짓(falsy), 나머지 객체(0, "", {} 포함)는 모두 참(truthy).

  • 다른 언어와 비교하면:

    • Java: true/false는 객체가 아닌 즉시 값(immediate value)

    • Python/JS: to_bool 또는 유사 메서드를 통해 변환 가능

    • Haskell/Java: if에서 오직 Boolean만 허용

왜 Boolean 클래스가 없는가?

Ruby 코어 팀은 Boolean 슈퍼클래스 추가 제안을 거절했어요. 이유는:

  • 이미 많은 gem과 라이브러리에서 Boolean 클래스를 도입했기 때문에 충돌 발생 가능성

  • Ruby에서는 true와 false가 유일한 대표 값이며, 다른 값도 truthy/falsy로 활용 가능

  • is_a?(Boolean) 같은 제한적인 사용 사례 외에 실질적인 필요성이 부족

  • 클래스 이름 충돌 가능성 → 실제로 Ractor도 원래는 Guild였으나, 게임 개발자가 이미 사용 중이라 변경됨

true와 false는 얼마나 다른가?

  • true.methods.size # => 66

  • Object.new.methods.size # => 63

  • 차이는 3개뿐 → :&, :|, :^ (논리 연산자)

  • false.methods == true.methods # => true

  • 결론: 두 객체는 기능적으로 거의 동일하며, 단지 참/거짓의 대표자로만 존재

교훈

  • 언어 설계는 합리성과 일관성이 핵심

  • “있으면 편리할 것”이 항상 옳은 이유는 아님

  • Ruby는 다른 언어와 달리 진리값을 다루는 독자적 방식을 택함

  • Matz의 공식 입장:

    Boolean 클래스는 타입 검증에 사용될 수 있는데, 나는 그런 습관을 장려하고 싶지 않다.

Active Agent로 “Rails스럽게” AI 붙이기

원문 읽기

핵심 한 줄: Evil Martians가 소개한 Active Agent는 컨트롤러·메일러처럼 Rails 관례를 따르는 AI 추상화(에이전트) 를 제안해요. 액션·콜백·Action View 기반 프롬프트 템플릿으로 “AI 호출”을 애플리케이션 흐름에 자연스럽게 녹여요.

왜 주목하나요

  • Rails 네이티브 추상화: ApplicationAgent를 상속해 after_generation 같은 콜백, generate_now/generate_later 같은 동기/비동기 실행을 그대로 써요. 프롬프트는 뷰 템플릿(ERB/partial)로 관리해요.

  • 실전 예제 1—번역: 컨트롤러에서 TranslateAgent를 호출해 댓글을 번역. 콜백으로 모델 업데이트까지 처리했지만, 관심사 분리(모델 메서드로 위임)가 더 낫다는 논의가 이어져요.

  • 테스트 전략: LLM HTTP를 스텁하지 않고, 가짜 프로바이더(FakeLLM) 를 만들어 응답 내용·호출 횟수·프롬프트 파라미터를 검증하는 방식 제안해요.

  • 실전 예제 2—제안서 리뷰어: ReviewAgent가 신규성·적합성·품질을 점수화. 외부 컨퍼런스 토크 인덱스를 툴(tool) 메서드로 조회해 신규성을 보강해요. JSON 스키마 출력을 쓰지만, 스키마·툴 정의를 RBS/YARD 등으로 자동화보일러플레이트 최소화를 제안해요.

앞으로 필요한 것들

  • 사용량/크레딧 트래킹: 에이전트 콜백으로 토큰·시간·모델 기록, 크레딧 차감/차단 훅 필요해요.

  • 동적 자격증명·프롬프트: 테넌트별 키/모델 라우팅, PromptEngine 연동으로 DB 기반 프롬프트 운영.

  • 가드레일·파이프라인: 입력/출력을 검증하는 미들웨어형 파이프라인과 안전장치.

  • 에이전틱 워크플로/메모리: has_agent 같은 문법으로 에이전트 간 위임, 사람 개입/일시중단, 대화 메모리.

  • 컨텍스트 엔지니어링: 벡터화·청킹·추출 등 RAG 단계 추상화(vectorizer/extractor/chunker).


🗓️ Ruby Meetup 일정

총 12개 이벤트

지난 일정

💡 전 세계 Ruby 커뮤니티의 다양한 Meetup에 참여해보세요

💼 Ruby on Rails 채용 공고

전체 보기 →

📋 최신 채용

최신 3개