Как записать пользовательский фильтр HAML?

Я записал простой пользовательский фильтр в HAML, но я не могу заставить свое приложение для направляющих находить его.

Фильтр похож на это:

# lib/haml/filters/gfmarkdown.rb
module Haml::Filters::Gfmarkdown
  include Haml::Filters::Base

  # copied from Haml::Filters::Markdown
  lazy_require 'rdiscount', 'peg_markdown', 'maruku', 'bluecloth'

  def render(text)
    # copied from Haml::Filters::Markdown
    engine = case @required
             when 'rdiscount'
               ::RDiscount
             when 'peg_markdown'
               ::PEGMarkdown
             when 'maruku'
               ::Maruku
             when 'bluecloth'
               ::BlueCloth
             end
    engine.new(gfm text).to_html  # gfm method defined elsewhere
  end
end

В моих представлениях я пытаюсь использовать этот фильтр как так:

:gfmarkdown
  #{comment.body}

Но я получаю это сообщение об ошибке: Filter "gfmarkdown" is not defined.

Какие-либо идеи, как я могу заставить свое приложение для направляющих брать мой фильтр?

Версии: направляющие 2.3.4, Haml 2.2.15.

6
задан Andy Stewart 17 December 2009 в 13:26
поделиться

1 ответ

Я нашел решение: добавить инициализатор, который требует фильтра.

# config/initializers/gfmarkdown.rb
require 'haml/filters/gfmarkdown'

Я думал, что модули в lib / требуются автоматически, если иерархия модулей соответствует пути к файлу. Ну ладно;)

3
ответ дан 17 December 2019 в 18:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: