Ruby on RailsでMarkdownを使用する方法
2022-02-03 17:30:10
Markdownの構文とコードのシンタックスハイライトはそれぞれRedcarpetとpygments.rb Gemsを使用して実装されています。
https://github.com/vmg/redcarpet
https://github.com/tmm1/pygments.rb
https://github.com/richleland/pygments-css
http://pygments.org/docs/lexers/
Gemfileに以下の2行を追加してください。
gem 'redcarpet'
gem 'pygments.rb'
pygments.rbはPythonに依存しているので、マシンにPython 2.xがインストールされていることを確認する必要があります。
そして、redcarpetとpygments.rbに対応するコードを/app/controllers/comments_controller.rbに追加してください。
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
helper_method [:markdown]
# Highlight code with Pygments
class HTMLwithPygments < Redcarpet::Render::HTML
def block_code(code, language)
language = "text" if language.blank?
sha = Digest::SHA1.hexdigest(code)
Rails.cache.fetch ["code", language, sha].join("-") do
Pygments.highlight(code, :lexer => language)
end
end
end
protected
# Markdown with Redcarpet
def markdown(text)
renderer = HTMLwithPygments.new({
:filter_html => true,
:hard_wrap => true,
:link_attributes => {:rel => 'external nofollow'}
})
options = {
:autolink => true,
:no_intra_emphasis => true,
:fenced_code_blocks => true,
:lax_html_blocks => true,
:strikethrough => true,
:superscript => true,
:tables => true
}
Redcarpet::Markdown.new(renderer, options).render(text).html_safe
end
end
最後に、markdownメソッドをViewで直接呼び出すことで、ブログの本文を処理することができます。
<%= markdown @post.content %>
構文ルールはGithubのMarkdownに似ており、コードはより効率的になっています。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Rubyイテレータの知識まとめ
-
ruby on railsのモデルアソシエーションについて解説
-
Rubyを使ったラムダ計算の詳しいシミュレーション方法
-
UbuntuでRuby on RailsフレームワークとRubyMine IDEを設定する
-
Rubyのデザインパターン。プログラミングにおけるシングルトンパターンの活用
-
Ruby+Watirの自動テスト環境とWindowsでのデータ読み込みについて
-
Rubyの4つの比較関数(equal?, eql?, ==, ===)について解説します。
-
Ruby on Railsのjquery_ujsコンポーネントが遅くなる問題が解決された
-
Ruby on RailsにおけるCucumberの活用を解説します。
-
Rubyプログラミングにおけるアサインメント関連操作