如何将 markdown 作为预处理器添加到资产管道中?
How to add markdown as a preprocessor to the asset pipeline?
我在 app/assets/md/*.html.md
中有降价文件,我想用 rake assets:precompile
.
进行预编译
如何设置资产管道,以便它使用降价解析器生成预期的 HTML 文件?
此外,如何将这些预编译资产直接包含在我的视图中,例如:
<div>
<%= yield asset("my_markdown_fragment.html") %>
</div>
我已经找到了解决方案。这是我所做的:
将rdiscount
添加到Gemfile
(rdiscount
是Ruby的Markdown处理器):
gem 'rdiscount'
使用以下内容创建文件 lib/markdown_preprocessor.rb
:
require 'rdiscount'
class MarkdownPreprocessor < Sprockets::Processor
def evaluate(context, locals)
RDiscount.new(begin;data;end).to_html
end
end
将 MarkdownPreprocessor
添加到 config/initializers/sprockets.rb
文件中的资产管道(如果不存在则创建此文件),如下所示:
require 'markdown_preprocessor'
Rails.application.assets.register_engine('.md', MarkdownPreprocessor)
将以下行添加到 config/initializers/assets.rb
文件:
Rails.application.config.assets.paths << Rails.root.join('app', 'assets', 'md')
现在配置完成。以下是一些其他指南和提示:
将您的 Markdown 文件放入 app/assets/md/
文件夹。
您的文件扩展名以 .md
结尾,但我建议 .html.md
(因为结果是 HTML 文件)。
您可以在添加 .erb
扩展名时将 <%= ruby %>
插入到您的 Markdown 文件中。例如,尝试使用以下内容创建此文件 app/assets/md/hello.html.md.erb
:
# Hello <%= "_World_ " * 42 %>
您可以在您的视图和控制器中访问生成的 HTML 内容:
Rails.application.assets[asset_path].to_s.html_safe
我在 app/assets/md/*.html.md
中有降价文件,我想用 rake assets:precompile
.
如何设置资产管道,以便它使用降价解析器生成预期的 HTML 文件?
此外,如何将这些预编译资产直接包含在我的视图中,例如:
<div>
<%= yield asset("my_markdown_fragment.html") %>
</div>
我已经找到了解决方案。这是我所做的:
将
rdiscount
添加到Gemfile
(rdiscount
是Ruby的Markdown处理器):gem 'rdiscount'
使用以下内容创建文件
lib/markdown_preprocessor.rb
:require 'rdiscount' class MarkdownPreprocessor < Sprockets::Processor def evaluate(context, locals) RDiscount.new(begin;data;end).to_html end end
将
MarkdownPreprocessor
添加到config/initializers/sprockets.rb
文件中的资产管道(如果不存在则创建此文件),如下所示:require 'markdown_preprocessor' Rails.application.assets.register_engine('.md', MarkdownPreprocessor)
将以下行添加到
config/initializers/assets.rb
文件:Rails.application.config.assets.paths << Rails.root.join('app', 'assets', 'md')
现在配置完成。以下是一些其他指南和提示:
将您的 Markdown 文件放入
app/assets/md/
文件夹。您的文件扩展名以
.md
结尾,但我建议.html.md
(因为结果是 HTML 文件)。您可以在添加
.erb
扩展名时将<%= ruby %>
插入到您的 Markdown 文件中。例如,尝试使用以下内容创建此文件app/assets/md/hello.html.md.erb
:# Hello <%= "_World_ " * 42 %>
您可以在您的视图和控制器中访问生成的 HTML 内容:
Rails.application.assets[asset_path].to_s.html_safe