ruby-on-rails-3.2 - Redcarpet Markdown gem : instantiating the Markdown object only once & reusing it between parses

标签 ruby-on-rails-3.2 markdown redcarpet

我正在阅读 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/

相关文章:

ruby-on-rails - 在 Rails 3 中的区域设置更改后重定向到新域中的同一页面

markdown - 如何在 Octopress 上的 markdown 中转义 {{ ?

ascii - "’ "and " ' "有什么区别

ruby-on-rails - 如何使用 Redcarpet for Rails 在 Markdown 中嵌入 YouTube 视频?

ruby-on-rails - Rails 开发日志文件中缺少有关参数和渲染部分的信息

javascript - 表单未显示在页面源中

markdown - 语言描述后的花括号在 Markdown 中有什么作用?

ruby-on-rails - 在 Markdown 中使用 ERB 和 Redcarpet

ruby-on-rails - 如何找到 Parent_id 可选的 ActiveRecord 条目的最终祖先?

image - 如何将带标题的图像放入 pandoc 的项目符号列表中