How do I extract Rails view helpers into a gem?
What you are probably looking for is an engine. An engine is a gem that contains rails application pieces (in fact, a rails application is itself an engine.)
In my opinion, a full Engine is overkill for this task. You could instead just create a Railtie which includes your helpers into ActionView::Base when it initializes.
# lib/my_gem/view_helpers.rb
module MyGem
module ViewHelpers
def pre(text)
content_tag :pre, text
end
def another_helper
# super secret stuff
end
end
end
# lib/my_gem/railtie.rb
require 'my_gem/view_helpers'
module MyGem
class Railtie < Rails::Railtie
initializer "my_gem.view_helpers" do
ActiveSupport.on_load(:action_view) { include MyGem::ViewHelpers }
end
end
end
# lib/my_gem.rb
require 'my_gem/railtie' if defined?(Rails)
Also if you want include helper only for Rails3 version you can use
# lib/my_gem.rb
require 'my_gem/railtie' if defined?(Rails::Railtie)