Opal Stimulus 데모: 루비로 StimulusJS 컨트롤러 개발하기

opal stimulus

작성자
발행일
2025년 09월 12일

핵심 요약

  • 1 Opal Stimulus는 Ruby 코드를 JavaScript로 컴파일하여 StimulusJS 컨트롤러를 작성할 수 있게 해주는 Ruby 젬입니다.
  • 2 기존 StimulusJS 환경과 공존하며, 설치부터 컨트롤러 생성, 기본 기능 구현 및 데이터 페칭까지의 개발 과정을 시연합니다.
  • 3 Ruby의 객체 지향 패러다임과 강력한 디버깅 도구(binding)를 활용하여 프런트엔드 로직을 효율적으로 개발하는 방법을 제시합니다.

도입

이 영상은 Ruby 코드를 JavaScript로 변환하는 Opal 컴파일러를 활용하여 StimulusJS 컨트롤러를 개발할 수 있도록 돕는 Opal Stimulus 젬의 데모를 제공합니다. 발표자는 Rails 애플리케이션 내에서 Opal Stimulus를 설치하고, 기본적인 컨트롤러 생성부터 복잡한 데이터 페칭 및 디스플레이 기능 구현까지의 전 과정을 시연하며, Ruby 개발자가 익숙한 환경에서 프런트엔드 로직을 작성할 수 있는 방법을 소개합니다. Opal Stimulus는 기존 StimulusJS 컨트롤러와 함께 사용할 수 있어 점진적인 도입이 가능하다는 장점이 있습니다.

Opal Stimulus는 Ruby 개발자에게 친숙한 방식으로 StimulusJS 컨트롤러를 작성할 수 있는 환경을 제공합니다. 주요 내용은 다음과 같습니다.

1. 설치 및 초기 설정

  • bundle add opal-stimulus 명령어로 젬을 추가합니다.
  • bin rails opal:stimulus:install 명령어를 실행하여 필요한 파일(예: app/assets/builds/keep, app/opal/controllers/keep, app/opal/application.rb)을 생성하고 Opal 설정을 초기화합니다.
  • application.rb 파일은 Opal 설정의 진입점으로, Stimulus 컨트롤러 클래스와 컨트롤러 디렉토리를 로드합니다.
  • Opal Stimulus는 ES6 모듈과 호환되며, application.js에 별도의 복잡한 설정 없이 간단한 코드만으로 실행됩니다.

2. 컨트롤러 생성 및 기본 기능

  • rails generate opal:stimulus hello_world 명령어로 새로운 컨트롤러를 생성합니다.
  • 생성된 Ruby 컨트롤러 파일은 자동으로 컴파일되어 opal.js에 반영됩니다.
  • connect 메서드 내에서 self.class_name을 사용하여 컨트롤러 이름을 HTML 요소에 표시하는 간단한 예제를 통해 동작을 확인합니다.
  • Ruby 코드 내에서 windowdocument 객체를 직접 사용하여 브라우저 API에 접근할 수 있습니다.

3. 카운터 예제 구현

  • rails generate opal:stimulus counter로 카운터 컨트롤러를 생성합니다.
  • initialize 메서드에서 x 변수를 0으로 초기화합니다.
  • targets 정의 (display_counter_value_target)를 통해 HTML 요소에 접근합니다.
  • connect 메서드에서 초기값을 표시하고, increase_counter 메서드에서 x 값을 증가시킨 후 display_counter_value_target.text_content를 업데이트합니다.
  • HTML에서는 data-controller="counter", data-counter-target="displayCounterValue", data-action="counter#increaseCounter"와 같이 기존 StimulusJS와 동일한 방식으로 바인딩합니다.

4. 데이터 페칭 및 디스플레이

  • display_dummy_data_target이라는 새로운 타겟을 추가합니다.
  • retrieve_dummy_data 메서드에서 window.fetch를 사용하여 외부 API에서 더미 데이터를 가져옵니다.
  • 가져온 데이터의 title 속성을 display_dummy_data_target.inner_html을 통해 HTML 요소에 삽입합니다.

5. 디버깅 기능

  • Opal Stimulus는 브라우저 개발자 도구에서 실제 Ruby 코드를 확인할 수 있게 하며, binding 키워드를 사용하여 Ruby 디버깅 경험을 제공합니다. 이는 개발 과정에서 매우 유용합니다.

결론

Opal Stimulus는 Ruby 개발자들이 StimulusJS의 강력한 기능을 Ruby 언어로 직접 활용할 수 있도록 지원하는 효과적인 도구입니다. 이 젬은 기존 JavaScript 기반의 StimulusJS 컨트롤러와 함께 사용할 수 있어, 점진적인 마이그레이션이나 하이브리드 개발 환경 구축에 용이합니다. Ruby의 객체 지향 패러다임과 강력한 디버깅 기능을 프런트엔드 로직 개발에 적용함으로써, 개발 생산성을 향상하고 코드의 일관성을 유지할 수 있는 이점을 제공합니다. Opal Stimulus는 Ruby 생태계에서 프런트엔드 개발 경험을 확장하는 중요한 발걸음이 될 것입니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

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