Markdown が .erb でうまく動作するようにしようとしています。Redcarpet で解析されるマークダウン ページ (またはマークダウン パーシャルを含む通常の .html.erb ファイル) をレンダリングするために high_voltage を使用したいと思いますが、すべてを連携させるのに苦労しています。
現時点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のドキュメントを見ましたが、私が理解したところでは、call メソッドは new メソッドの派生物であり、1 つの引数 (テキスト) のみを必要とします。ただし、簡単な Rails コンソール セッションで使用しようとすると、2 つの引数も必要でした。
上記のコードから erb を解析する要件を削除すると、すべてが期待どおりに機能するため、Redcarpet が機能しないこととは関係ないと思います。
Rails v6.0.0.rc1 と Ruby v2.5.3p105 を使用しています
どんな助けでも大歓迎です。
編集
さらに調査した結果、Rails 6.0 ERB ActionView テンプレート ハンドラーを見つけることができました。このハンドラの call メソッドには、テンプレートとソースの 2 つの引数が必要です。とはいえ、Rails 5.2.3 では、ERB アクション ビューのテンプレート ハンドラー呼び出しメソッドに必要な引数はテンプレート 1 つだけです。
誰かが、この文脈でどのソースが何であるかを理解する方向に私を指摘してもらえますか? 私が見つけることができるドキュメントはありません。