1. 마크다운 언어와 Flavor
마크다운은 간결한 문법으로 HTML 변환에 용이하며, CommonMark 기반의 GitHub Flavored Markdown(GFM)이 널리 사용됩니다. Ruby에서는 Commonmarker 젬을 통해 GFM을 HTML로 효율적으로 변환할 수 있습니다.
2. Rails 마크다운 에디터 구축 핵심
Rails에서 마크다운 에디터를 구축하기 위해 Post 모델로 텍스트를 저장하고, Commonmarker를 사용하여 마크다운을 HTML로 렌더링합니다. 이때 Rails의 HTML sanitization을 피하기 위해 html_safe를 적용하는 것이 중요합니다.
3. 실시간 미리보기 및 UI 개선
Turbo Streams와 StimulusJS를 활용하여 마크다운 작성 중 실시간으로 HTML 미리보기를 제공합니다. posts_controller에 Turbo stream 액션을 정의하고 Stimulus 컨트롤러가 에디터 내용을 전송하여 미리보기를 업데이트합니다. TailwindCSS Typography 플러그인의 prose 클래스를 적용해 렌더링된 HTML의 스타일을 개선하고, Stimulus로 에디터와 미리보기 패널 간 전환 기능을 구현하여 사용자 경험을 향상시킵니다.
4. 이미지 업로드 기능 추가
ActiveStorage Direct Uploads를 이용해 이미지 붙여넣기 업로드 기능을 구현합니다. Stimulus 컨트롤러는 붙여넣기 이벤트를 감지하여 DirectUpload로 파일을 서버에 업로드하고, 완료된 blob 정보를 마크다운 이미지 링크로 변환하여 에디터의 현재 커서 위치에 삽입합니다.