I am attempting to extend the RedCarpet markdown parser to use images from a media library that I have created in my application.
I am using Cloudinary as the image store/CDN, and have a Media table that stores the public id of the image in Cloudinary. That's all good.
I have created a file under /lib called reddress.rb which contains the code below. I have been using this for some time to render markdown formatted text with no problems. However, now I am trying to use the cloudinary methods to extend the markdown with a shortcode that references the media record via its Id.
The problem is that the code cannot find the cl_image_tag method in the cloudinary helper, even with the .rb files being required.
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
The lib is being called, and without the cl_image_tag in place it works, and I have restarted the server (have to every time a change is made.)
I'm using Rails 4 with Ruby 2.0.0.
Any suggestions?