Ruby on Rails에서 Flex를 활용한 아름다운 UI 구축

11. Seth Horsley - Building Beautiful UIs with Ruby: A Rails-Native Approach - wroc_love.rb 2025

작성자
jeff
발행일
2025년 04월 17일

핵심 요약

  • 1 MERN 스택에서 Ruby on Rails로 전환하며 효율적인 UI 구축 방안을 모색했습니다.
  • 2 ERB, View Components 등의 대안을 검토 후, Ruby 기반의 객체 지향 HTML 뷰 라이브러리인 Flex를 최적의 솔루션으로 채택했습니다.
  • 3 Flex는 Ruby UI 라이브러리와 함께 재사용 가능하고 구성 가능한 컴포넌트 기반 UI 개발을 가능하게 하며, 성능 및 테스트 용이성 측면에서 이점을 제공합니다.

도입

발표자 Seth Horesley는 MERN 스택에서 Ruby on Rails로의 전환 과정에서 직면한 UI 구축의 과제를 해결하기 위한 여정을 소개합니다. 기존의 React 중심 프론트엔드 아키텍처를 Rails 환경에 효과적으로 통합하면서도 복잡한 인터페이스와 데이터 대시보드를 지원할 수 있는 솔루션의 필요성을 강조합니다. 이 발표는 이러한 요구사항을 충족하기 위해 다양한 프론트엔드 옵션을 탐색하고, 궁극적으로 Flex라는 Ruby 기반 라이브러리를 선택하게 된 배경과 그 이점을 설명합니다.

발표에서는 먼저 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와 같은 도구를 활용할 수 있으며, 향후 더 빠른 테스트를 위한 개선 방안도 모색 중임을 언급합니다.

결론

결론적으로, Flex는 Ruby on Rails 환경에서 아름답고 효율적인 UI를 구축하기 위한 강력한 대안으로 제시됩니다. 이는 Ruby의 강점을 활용하여 프론트엔드 개발의 복잡성을 줄이고, 컴포넌트 기반의 재사용 가능한 아키텍처를 가능하게 합니다. 특히, 단일 파일에서 뷰와 로직을 함께 관리하고, 높은 구성 가능성 및 테스트 용이성을 제공함으로써 개발 생산성을 향상시킬 수 있습니다. Flex와 Ruby UI는 Rails 개발자들이 더욱 견고하고 유지보수하기 쉬운 프론트엔드를 구축하는 데 기여할 것으로 기대됩니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!