我正在阅读 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
这不是最好的方法吗?感谢您的任何建议。
最佳答案
不确定这是否是 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
与您的应用程序的名称。您可以向渲染器或 Markdown 实例添加各种选项,如 readme 中所述。 .我创建的渲染器(MultiRenderer
)内置了 smartypants,所以你可以把引号和诸如此类的要使用 Markdown,只需调用
YourApp::Markdown.render(text)
,你会得到 html 回来。您可能需要在其上运行 html_safe。
关于ruby-on-rails-3.2 - Redcarpet Markdown gem : instantiating the Markdown object only once & reusing it between parses,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18240339/