발표에서는 먼저 ERB, 커스텀 컴포넌트 시스템, View Components 등 기존의 Rails 프론트엔드 솔루션들의 한계를 지적합니다. ERB는 모듈성이 부족하고 템플릿 로직이 프레젠테이션과 강하게 결합되어 작은 컴포넌트 재사용 및 개별 테스트가 어렵다는 단점이 있습니다. 커스텀 컴포넌트 시스템은 많은 재구현과 의사결정이 필요하며, View Components는 논리 분리(RB 파일과 HTML 파일)로 인해 복잡성이 증가하고 개발팀조차 사용을 지양하는 경향이 있다는 점이 문제로 제기됩니다.
이러한 대안들의 단점을 극복하기 위해 발표팀은 ‘Flex’를 발견하게 됩니다. Flex는 객체 지향 HTML 뷰를 구축하기 위한 Ruby 라이브러리로, ‘하나의 파일이 모든 것을 지배한다’는 철학 아래 뷰와 로직을 함께 처리합니다. 이는 Ruby 네이티브 문법을 사용하며 타입 안전성을 확보할 수 있고, 테스트가 훨씬 용이하다는 장점을 가집니다. 특히, Flex는 컴포넌트의 재사용성과 구성 가능성(Composability)을 극대화합니다. ‘Ruby UI’는 Flex를 위한 Shad CN 컴포넌트 라이브러리로 소개되며, 이를 통해 버튼, 드롭다운, 테이블 등 다양한 UI 컴포넌트를 쉽게 생성하고 커스터마이징할 수 있음을 시연합니다. 이 컴포넌트들은 터미널 명령어를 통해 프로젝트에 로컬로 설치되어 유지보수 및 확장이 용이합니다.
성능 측면에서 Flex는 ERB와 비교하여 논쟁이 있었으나, 작은 컴포넌트가 많을 경우 ERB보다 훨씬 빠르다는 벤치마크 결과를 제시하며 그 효율성을 강조합니다. 또한, Flex는 Rails의 Turbo와 같은 새로운 시스템과의 통합이 용이하며, renderable
개념을 구현하여 Turbo 프레임워크와도 원활하게 작동함을 설명합니다. Q&A 세션에서는 프론트엔드 개발자들이 Ruby로 작성된 UI를 수정하는 것에 대한 우려에 대해 Flex가 명확한 에러 메시지와 향후 도입될 유효성 검사기를 통해 오히려 더 쉽게 작업할 수 있음을 언급합니다. CSS 및 JavaScript 통합과 관련하여서는 Stimulus와 Tailwind CSS를 사용하며, Active Support에 대한 의존성을 최소화하여 Rails 외 Sinatra 앱에서도 사용 가능함을 밝힙니다. 테스트 용이성에 대해서는 렌더링된 HTML 문자열을 비교하거나 Capybara와 같은 도구를 활용할 수 있으며, 향후 더 빠른 테스트를 위한 개선 방안도 모색 중임을 언급합니다.