The question here asks how to extract Rails view helper functions into a gem, and the accept answer is pretty good.
I am wondering - how to do the same for Sinatra? I'm making a gem that has a bunch of helper functions defined in a module, and I'd like to make these functions available to Sinatra views. But whatever I try, I cannot seem to access the functions, I just get a undefined local variable or method error.
So far, my gem structure looks like this (other stuff like gemspec omitted):
cool_gem/
  lib/
    cool_gem/
      helper_functions.rb
      sinatra.rb 
  cool_gem.rb
In cool_gem.rb, I have:
if defined?(Sinatra) and Sinatra.respond_to? :register
  require 'cool_gem/sinatra'
end
In helper_functions.rb, I have:
module CoolGem
  module HelperFunctions
    def heading_tag(text)
      "<h1>#{text}</h1>"
    end
    # + many more functions
  end
end
In sinatra.rb, I have:
require 'cool_gem/helper_functions'
module CoolGem
  module Sinatra
    module MyHelpers
      include CoolGem::HelperFunctions
    end
    def self.registered(app)
      app.helpers MyHelpers
    end
  end
end
This doesn't work. Where am I going wrong?
(And in case you're wondering, yes, I need the helper functions in a separate file. I plan to make the gem compatible with Rails as well, so I want to keep the functions isolated/de-coupled if possible).