56

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

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

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

ありがとう

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

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

4

3 に答える 3

94

私の意見では、完全なエンジンはこのタスクにはやり過ぎです。代わりに、初期化時にヘルパーを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
      ActiveSupport.on_load(:action_view) { include MyGem::ViewHelpers }
    end
  end
end

# lib/my_gem.rb
require 'my_gem/railtie' if defined?(Rails)
于 2011-04-26T19:52:32.663 に答える
5

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

# lib/my_gem.rb
require 'my_gem/railtie' if defined?(Rails::Railtie)
于 2012-06-27T16:00:21.120 に答える
3

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

于 2011-04-26T19:41:22.667 に答える