Rails 3.0의 주요 변화와 Merb 통합
-
하위 호환성 및 새로운 기능: Wycats(Yehuda Katz)는 Rails 3.0이 Rails 2의 상위 호환 버전으로, 기존 API를 유지하면서도 액션 메일러(Action Mailer) 및 액티브 레코드(Active Record) API를 전면 재작성했다고 설명했습니다.
-
컴포넌트 분리: 액션 컨트롤러(Action Controller)를 포함한 핵심 컴포넌트들이 재작성되어, 이제 Rails의 각 부분을 프레임워크 외부에서 독립적으로 사용할 수 있게 되었습니다. 예를 들어, 액티브 서포트(Active Support)는 Ruby 표준 라이브러리처럼 필요한 부분만 가져와 사용할 수 있습니다.
-
Merb 통합 목표 달성: 1년 반 전 Merb와 Rails의 통합 당시 세웠던 목표, 즉 Rails 컴포넌트들을 분리 가능하고 독립적으로 사용할 수 있게 만드는 것을 기대 이상으로 달성했다고 평가했습니다. 이는 데이터 매퍼(DataMapper)나 시퀄(Sequel)과 같은 대체 ORM의 통합을 용이하게 합니다.
Ruby 1.9 지원 경험
-
공식 지원 및 호환성: Rails 3는 Ruby 1.9를 공식 지원하며, Wycats는 Python 3와 달리 Ruby 1.8과 1.9 모두에서 호환되는 코드를 작성할 수 있다는 점을 긍정적으로 평가했습니다.
-
도전 과제: Ruby 1.9에서
instance_methods가 문자열 대신 심볼을 반환하는 등 일부 ‘작은’ 변경 사항이 하위 호환성을 깨뜨려 개발에 어려움을 주었다고 지적하며, 향후 Ruby 버전에서는 이러한 변경에 더욱 신중할 것을 요청했습니다. -
인코딩 지원: 가장 어려웠지만 동시에 가장 훌륭했던 점으로 인코딩(encoding) 지원을 꼽았습니다. 이는 개발자들이 인코딩에 대해 명시적으로 생각하게 만들었지만, 데이터베이스와 입력 간의 인코딩 불일치로 인한 버그를 제거하는 데 크게 기여했습니다.
-
지속적인 테스트: Rails 코어 팀은 Ruby 트렁크(trunk) 버전에 대해 정기적으로 테스트를 수행하여 Ruby 1.9와의 조기 호환성을 확보했습니다. Aaron Patterson은 모든 의존 라이브러리가 Ruby 1.9에 맞춰 업데이트되는 것이 중요하다고 강조했습니다.
Aaron Patterson의 Ruby/Rails 커미터 경험 및 커뮤니티 비교
-
커미터가 된 과정: Aaron은 수많은 이메일, 버그 리포트, 그리고 패치(특히 테스트 포함)를 제출하여 Ruby와 Rails의 커미터가 되었다고 설명했습니다.
-
Rails 3의 장단점: Wycats와 마찬가지로 액티브 서포트, 액션 메일러와 같은 컴포넌트의 분리 및 모듈화 개선을 장점으로 꼽았습니다. 단점으로는 액티브 레코드가 다른 컴포넌트만큼의 리소스가 투입되지 않아, 라이브러리로서 완전히 분리되기까지 추가 작업이 필요하다고 언급했습니다. 액티브 릴레이션(Active Relation) 도입으로 추상화가 진행되었지만, 전면 재작업은 아직 미완성 상태이며 Rails 3.1에서 개선을 기대한다고 밝혔습니다.
-
Ruby vs. Rails 개발 문화: 가장 큰 차이점으로 언어 장벽을 지적했습니다. Rails 팀은 대부분 영어 사용자이기에 소통이 원활하지만, Ruby는 영어와 일본어 두 개의 메일링 리스트가 있어 정보 단절과 의사결정의 투명성 부족 문제가 발생한다고 강조했습니다. 중요한 결정이 주로 일본어 메일링 리스트에서 이루어지며, 이로 인해 영어권 개발자들이 소외되는 현상이 Ruby의 미래에 큰 장애가 될 수 있다고 경고했습니다. 버전 관리 시스템으로 Rails는 Git을, Ruby는 Subversion을 사용하며, Aaron은 Git이 더 효율적이라고 개인적인 선호를 밝혔습니다.