액티브 서포트(Active Support)는 레일스를 구현하기 위해 루비를 Rails Way’로 확장한 유틸리티 라이브러리 모음입니다. README를 보면 루비를 더 달콤하게 만들어주는 설탕 세트라는 표현을 하고 있습니다. 적절한 비유네요. Rails의 다른 컴포넌트(예를 들어 액션팩)들은 액티브 서포트 에 의존하지만, 액티브 서포트 자체는 독립적인 라이브러리입니다. 책의 부록에서 설명한 유니코드 지원 라이브러리도 액티브 서포트의 일부입니다.
예를 들면, 이런 것입니다. inject를 이용해 Enumerable의 합을 구하는 코드가 있다고 해봅시다. 대략 이런 모습일 것 입니다.
그런데, 액티브 서포트에 포함된 Enumerable#sum을 이용하면 아래처럼 간결하게 표현할 수 있습니다.
의미를 훨씬 잘 드러내는 코드가 되었습니다.
제가 여기서 소개하고자 하는 부분은 액티브 서포트의 소스 코드입니다. 루비의 킬러 애플리케이션이라는 레일스의 명성에 걸맞게 그 코드도 읽어 볼만 하기 때문입니다. 레일스의 코드를 쉽게 읽고 이해할 수 있다면, 루비를 마스터했다고 해도 과언이 아닙니다.
위에서 활용한 Enumerable#sum의 소스 코드도 별로 어렵지 않습니다. 하지만 루비의 블럭을 활용한 좋은 예제입니다.
레일스 중에서 액티브 서포트가 루비의 다양한 면을 보여줄 수도 있고, 독립적인 면이 크기 때문에, 잠깐 잠깐 읽고 분석해보기 좋습니다.
저도 기회가 되는대로 이 블로그를 통해 액티브 서포트의 코드를 몇 가지 소개해보겠습니다.
- 강문식