How do I extract Rails view helpers into a gem?

删除回忆录丶 提交于 2019-11-27 10:31:41
Michelle Tilley

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
      ActionView::Base.send :include, 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)

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.)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!