web-dev-qa-db-ja.com

Railsビューヘルパーをgemに抽出するにはどうすればよいですか?

定期的に使用するRailsビューヘルパーのセットがあり、それらをgemにパッケージ化して、Gemfileに行を追加し、ビューからヘルパーにアクセスできるようにしたいと考えています。 。

BundlerとJewelerを使用する前にgemを作成しましたが、Railsビューヘルパーをgemに整理し、それらをRailsに含める方法がすべて明確ではありません。

Rails 3でこれを行う方法についてのポインタ、または最新のチュートリアルへのリンクをいただければ幸いです。

ありがとう

明確にするために:問題は「宝石を作成する方法」ではありません。その「ビューヘルパーをgemにパッケージ化して、Railsで使用できるようにする方法」

編集2:以下のポスターにも同意します。Railsエンジンは、この種の(できれば単純な)要件に対してはやり過ぎです。

55
noli

私の意見では、完全な Engine はこのタスクにはやり過ぎです。代わりに、初期化時にヘルパーをActionView :: Baseに含める Railtie を作成することもできます。

# 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)
90
Michelle Tilley

Rails3バージョンのみのヘルパーを含めたい場合も使用できます

# lib/my_gem.rb
require 'my_gem/railtie' if defined?(Rails::Railtie)
5
timsly

あなたがおそらく探しているのは engine です。エンジンは、Railsアプリケーションピースを含むgemです(実際、Railsアプリケーション自体がエンジンです。)

2
Mario