RedCarpet マークダウン パーサーを拡張して、アプリケーションで作成したメディア ライブラリの画像を使用しようとしています。
Cloudinary をイメージ ストア/CDN として使用しており、イメージのパブリック ID を Cloudinary に格納するメディア テーブルがあります。それはすべて良いことです。
以下のコードを含む reddress.rb というファイルを /lib の下に作成しました。これをしばらく使用して、マークダウン形式のテキストを問題なくレンダリングしています。ただし、現在、cloudinary メソッドを使用して、ID を介してメディア レコードを参照するショートコードでマークダウンを拡張しようとしています。
問題は、.rb ファイルが必要な場合でも、コードが cloudinary ヘルパーで cl_image_tag メソッドを見つけられないことです。
require 'redcarpet'
require 'cloudinary'
require "cloudinary/helper"
class RedDress
def initialize
end
def format_as_html(txt)
markdown = Redcarpet::Markdown.new(ExtendedMarkdownHTML, :autolink => true, :space_after_headers => true)
markdown.render(txt)
end
end
class ExtendedMarkdownHTML < Redcarpet::Render::HTML
def preprocess(full_document)
full_document.gsub!(/\[media (\d+)\]/) { |m|
media = Media.find($1)
cl_image_tag(media.image_id, :crop => :fill, :width => 80, :height => 80) unless media.nil?
}
full_document
end
end
ライブラリが呼び出され、cl_image_tag が配置されていなくても動作し、サーバーを再起動しました (変更が行われるたびに再起動する必要があります)。
Ruby 2.0.0 で Rails 4 を使用しています。
助言がありますか?