1. Rails 8.1 Markdown 기능의 핵심
Rails 8.1에 도입된 Markdown 기능은 Markdown 텍스트를 HTML로 자동 변환하는 것이 아닙니다. 대신, 애플리케이션이 text/markdown MIME 타입으로 응답할 수 있도록 format.md와 render markdown: 헬퍼를 제공합니다. 이는 특히 대규모 언어 모델(LLM)에 Markdown 형식의 텍스트를 컨텍스트로 제공하거나, Markdown 기반 API 응답 시 유용합니다.
2. commonmarker Gem을 활용한 HTML 렌더링
Rails 8.1의 기본 기능이 Markdown을 HTML로 변환하지 않으므로, 웹 브라우저에서 Markdown 콘텐츠를 시각적으로 표시하려면 외부 라이브러리가 필수적입니다. commonmarker Gem은 이 역할을 수행하는 효과적인 도구입니다.
-
설치:
Gemfile에gem 'commonmarker'를 추가 후bundle install. -
사용법: 뷰 파일에서
CommonMarker.to_html(@post.body).html_safe와 같이 Markdown 텍스트를 HTML로 변환합니다. -
commonmarker는 GitHub Flavored Markdown(GFM)을 포함한 다양한 옵션을 지원하여 유연한 렌더링을 가능하게 합니다.
3. Rails 8.1 Markdown 렌더러 설정
컨트롤러에서 format.md 응답을 처리하고 render markdown:을 사용하려면 모델에 to_markdown 메서드를 정의해야 합니다.
-
컨트롤러:
PostsController의show액션에respond_to블록을 추가하여format.md { render markdown: @post }를 처리합니다. -
모델:
render markdown: @post호출 시@post객체의to_markdown메서드를 찾으므로,Post모델에 Markdown 텍스트를 반환하는to_markdown메서드를 구현해야 합니다. 예를 들어,def to_markdown; body; end와 같이body속성을 위임하거나 직접 반환할 수 있습니다. -
이 설정을 통해
/posts/3.md와 같은 URL 요청 시, 서버는Content-Type: text/markdown헤더와 함께 모델의to_markdown메서드가 반환하는 원시 Markdown 텍스트를 응답으로 제공합니다.