RailsのモデルでMarkdownを使用する
RailsでWiki的なものを作るために、簡易マークアップ言語にMarkdownを使ってみたので、そのメモ。
Ruby用のMarkdownライブラリはいろいろある模様。今回はredcarpetというのを使った。特にライブラリを比較した上で選択したわけではない。
# Gemfile gem 'redcarpet'
Redcarpet::Markdownオブジェクトは何度も使いまわせるようなので、初期化時に作成してモデルクラスに保持させた。
# app/models/entry.rb class Entry < ActiveRecord::Base class << self attr_accessor :markdown end @markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML) end
設定を外部ファイルに出したい場合は初期化用のスクリプトを追加してそこに書く。
# config/initializers/entry.rb Entry.markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML, :autolink => true, :space_after_headers => true)
Markdown形式からHTMLに変換するにはMarkdown形式のデータの文字列をrenderメソッドに渡す。
# app/models/entry.rb def Entry < ActiveRecord::Base def to_html markdown.render(self.content) end end