이번 주는 루비 커뮤니티에 유난히 반가운 발표들이 이어졌어요.
먼저, Russ Olsen이 Eloquent Ruby 의 2판을 공개하며 Ruby 3.4 시대에 맞춘 새로운 장을 열었고,
Matz는 다음 버전 명칭을 Ruby 4.0.0으로 결정하며 또 한 번의 전환점을 예고했어요.
루비 기반 스타트업 CactusAI는 $7M 시드 투자를 유치했고,
Stan Lo는 올해의 Ruby Prize 2025 수상자로 선정되었죠.
커뮤니티의 성장과 활력이 느껴지는 한 주였어요.
또한 Josef Strzibny가 Kamal 2.8의 로컬 Docker Registry 활용법을 소개했고,
마지막으로 개인적으로 흥미로웠던 Ruby의 Date.parse 동작 관련 이야기도 함께 공유해요.
🎧 10분 요약 오디오로 들어보시겠어요? → YouTube로 듣기
새로운 소식
Eloquent Ruby, 2nd Edition 출간
Russ Olsen이 고전 명서 Eloquent Ruby 의 2판을 발표했어요. 이번 개정판은 Ruby 3.4 기준으로 전면 업데이트되었으며, 새로운 장에서는 패턴 매칭과 동시성(Concurrency) 을 다룬다고 해요.
루비 문법을 넘어 “루비스럽게 생각하는 법”을 배우고 싶은 개발자에게 추천할 만한 책이라고 해요.
Eloquent Ruby, Second Edition 살펴보기
Ruby 4.0.0 Coming Soon
Yukihiro “Matz” Matsumoto이 다음 루비 릴리스를 Ruby 4.0.0으로 명명한다고 공식 발표했어요.
Ruby GitHub 리포지토리의 커밋을 통해 확인된 이번 변경은 Ruby 3 시리즈 이후 처음으로 메이저 버전이 올라가는 순간으로, 커뮤니티에서는 “Ruby 4”가 어떤 방향으로 발전할지에 대한 기대감이 커지고 있어요.
CactusAI, $7M 시드 투자 유치
Irina Nazarova가 루비 기반 스타트업 CactusAI의 $7M(약 100억원) 시드 투자 유치 소식을 전했어요.
이번 라운드는 Wellington Management가 주도했으며, Y Combinator, Rebel Fund, Pelion Venture Partners 등이 참여했다고 해요.
CactusAI는 홈 서비스 산업을 위한 AI 고객 응대 플랫폼으로, 전화를 받고, 일정을 예약하고, 리드에 후속 조치를 하는 일을 AI가 24시간 자동으로 처리해요. 팀은 2주 뒤 열리는 SF Ruby Conference에서 제품 데모를 선보일 예정이예요.
Stan Lo, Ruby Prize 2025 수상
Okura Masafumi가 **Stan Lo**의 Ruby Prize 2025 수상 소식을 전했어요.
Okura는 “그의 열정과 헌신을 알고 있으며, 나에게도 큰 영향을 준 훌륭한 사람”이라며 축하를 전했어요.
공식 수상 페이지에서는 Stan Lo를 이렇게 소개하고 있어요:
“Stan을 처음 만났을 때, 그는 ‘루비에 기여하고 싶다’는 강한 열정을 지닌 젊은 개발자였습니다.
그 후 그는 꾸준히 실력을 키워왔고, 이제는 루비 자체의 발전에 의미 있는 기여를 하는 인물로 성장했습니다.
그의 이러한 열정은 충분히 높이 평가받을 만합니다.”
Stan Lo는 오픈소스 기여와 루비 커뮤니티 활동으로 잘 알려진 개발자로, 올해 RubyWorld Conference 현장에서 상을 받았어요.
How to use a local Docker registry in Kamal
Josef Strzibny이 Kamal 2.8부터 지원되는 로컬 Docker Registry 기능을 소개했어요.
이 기능을 사용하면 DockerHub 없이도 이미지 배포가 가능하며, 비용 절감과 속도 향상, 보안 강화 효과를 얻을 수 있다고 해요.
# config/deploy.yml
registry:
server: "localhost:5555"
로컬 레지스트리는 Kamal이 외부 로그인 대신 로컬 환경에 Docker Registry 이미지를 실행하고, net-ssh로 포트를 포워딩하여 서버에서 이미지 풀링을 처리하는 방식으로 동작해요.
Josef는 이 접근법이 37signals이 자사 인프라를 직접 호스팅하며 Harbor를 채택한 사례와도 맞닿아 있다고 설명하고 있어요.
Date.parse("25년11월11일")은 동작할까요?
최근 Date.parse와 관련해서 입력값 처리가 의외였던 사례가 있어서 공유해요.
날짜를 입력 받는 필드가 있고 유저가 값을 text로 입력할 수 있는 환경에서 발생한 문제인데, 이전 코드에서는 Date.parse를 사용하고 이 함수의 결과 예외처리로 invalid date를 판단하고 있었어요.
"2025년11월11일" 혹은 "2025年11月11日"을 입력하면 의도대로 invalid date가 발생하지만, "25년11월11일" 혹은 "25年11月11日"는 에러가 발생하지 않고 잘못된 값을 리턴하는 문제예요.
irb(main):001> Date.parse("2025-11-11")
=> #<Date: 2025-11-11 ((2460991j,0s,0n),+0s,2299161j)>
irb(main):002> Date.parse("2025년11월11일")
(irb):2:in `Date.parse': invalid date (Date::Error)
irb(main):003> Date.parse("25년11월11일")
=> #<Date: 2025-11-25 ((2461005j,0s,0n),+0s,2299161j)>
irb(main):004> Date.parse("25年11月11日")
=> #<Date: 2025-11-25 ((2461005j,0s,0n),+0s,2299161j)>
이는 Ruby의 기본 날짜 파서가 비라틴 문자(한글·한자) 를 처리하지 못하기 때문이에요.
그래서 한글, 한자 등 다양한 로케일의 날짜 문자열을 지원하려면, 입력을 로케일별 규칙에 따라 표준 형식으로 정규화한 뒤 Date.strptime를 이용해 포맷을 명시적으로 지정하거나, 언어 감지와 다단계 파싱(fallback)을 결합한 국제화 대응 파서로 개선하는 것이 좋을 것 같다는 생각이에요.
자세한 개선 과정은 따로 블로그로 상세하게 올려볼 계획이에요.