我正在尝试扩展 RedCarpet 降价解析器以使用我在应用程序中创建的媒体库中的图像。
我使用 Cloudinary 作为图像存储/CDN,并且有一个媒体表,用于将图像的公共 id 存储在 Cloudinary 中。这都很好。
我在 /lib 下创建了一个名为 reddress.rb 的文件,其中包含以下代码。我已经使用它一段时间来毫无问题地呈现 Markdown 格式的文本。但是,现在我正在尝试使用 cloudinary 方法使用通过其 ID 引用媒体记录的短代码来扩展降价。
问题是代码在 cloudinary 帮助程序中找不到 cl_image_tag 方法,即使需要 .rb 文件也是如此。
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。
有什么建议么?