Я пытаюсь заставить Markdown хорошо играть с .erb. Я хотел бы использовать high_voltage для рендеринга страниц уценки (или обычных файлов .html.erb с частями уценки), которые анализируются с Redcarpet, и я пытаюсь заставить его работать вместе.
На данный момент у меня есть инициализатор с именем markdown_template_handler.rb
, который содержит следующий код:
class MarkdownTemplateHandler
def erb
@erb ||= ActionView::Template.registered_template_handler(:erb)
end
def call(template)
compiled_source = erb.call(template)
markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML)
"#{markdown.render(compiled_source.source).inspect}.html_safe;"
end
end
ActionView::Template.register_template_handler(:md, MarkdownTemplateHandler.new)
Однако в строке 7 происходит сбой, compiled_source = erb.call(template)
с кодом ошибки «неправильное количество аргументов (задано 1, ожидается 2)» *
Я посмотрел документацию ERB Ruby , но из того, что я понял, метод вызова является производным от нового метода, для которого требуется только 1 аргумент - текст. Тем не менее, когда я попытался использовать его только в сеансе консоли быстрого рельсы, это также потребовало двух аргументов.
Когда я удаляю требование разбирать erb из приведенного выше кода, все работает как положено, поэтому я не думаю, что это имеет какое-либо отношение к неработающему Redcarpet.
Я использую Rails v6.0.0.rc1 и Ruby v2.5.3p105
Любая помощь приветствуется.
Редактировать
Дальнейшие исследования привели меня к поиску обработчика шаблона ERB ActionView Rails 6.0. Метод вызова этого обработчика действительно требует двух аргументов, шаблона и источника. Тем не менее, в Rails 5.2.3 для вызова метода обработчика шаблона ERB Action View требуется только один аргумент - шаблон.
Может ли кто-нибудь указать мне, как выяснить, что источник в этом контексте? Для него нет документации, которую я могу найти.