我正在阅读Redcarpet的documentation,并发现了这句话:
The Markdown object is encouraged to be instantiated once with the required settings, and reused between parses.
在Rails
应用中执行此操作的最佳方法是什么?
我在Redcarpet上观看了Ryan Bates的railscast,他在application_helper.rb
中有一个帮助方法,其中每个方法调用实例化一个新的Redcarpet
对象,如下所示:
def markdown(text)
options = [:hard_wrap, :filter_html, :autolink, :no_intraemphasis, :fenced_code, :gh_blockcode]
Redcarpet.new(text, *options).to_html.html_safe
end
这不是最好的方法吗?谢谢你的任何建议。
答案 0 :(得分:1)
不确定这是否是 rails 做事的方式,但看起来不错,并且不违反POLA等,所以希望它能满足您的需求。
在markdown.rb
文件夹中创建config/initializers/
文件,并使用以下代码段的某些变体形式:
class MultiRenderer < Redcarpet::Render::HTML
include Redcarpet::Render::SmartyPants
end
module Paradox
Markdown = Redcarpet::Markdown.new(MultiRenderer)
end
将Paradox
替换为您的应用程序名称。您可以向渲染器或降价实例添加各种选项,如readme中所述。我创建的渲染器(MultiRenderer
)内置了smartypants,因此您可以使用引号括起来等等
要使用Markdown,只需拨打YourApp::Markdown.render(text)
,即可获得html。您可能需要在其上运行html_safe。