아침저녁으로 제법 쌀쌀해진 걸 보니, 어느새 가을이 성큼 다가왔네요. 바쁜 일정 속에서도 감기 조심하시고 건강 잘 챙기시길 바라요.
이번 뉴스레터에는 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 포크 프로젝트
개발자 chriopter가 37signals의 오픈소스 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).