Как извлечь Rails помощников вида в драгоценный камень? - PullRequest
54 голосов
/ 26 апреля 2011

У меня есть набор помощников вида rails, которые я регулярно использую, и я хотел бы упаковать их в драгоценный камень, чтобы я мог просто поместить строку в свой Gemfile и иметь помощников, доступных из моих представлений.

Я создал драгоценные камни до использования Bundler и Jeweler, однако мне не все ясно, как организовать помощники вида Rails в драгоценном камне и включить их в рельсы.

Буду признателен за любые ссылки или ссылки на новейшие учебные пособия о том, как это сделать для Rails 3

Спасибо

Просто чтобы уточнить: вопрос не в том, «как создать драгоценный камень». Это "как упаковать помощники вида в гем, чтобы я мог использовать их в Rails"

Редактировать 2: Я также согласен с постером ниже. Двигатель рельсов слишком сильно перегружен для такого (надеюсь простого) требования

Ответы [ 3 ]

90 голосов
/ 26 апреля 2011

На мой взгляд, полный двигатель излишним для этой задачи. Вместо этого вы можете просто создать Railtie , который включает ваши помощники в ActionView :: Base при инициализации.

# 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)
5 голосов
/ 27 июня 2012

Также, если вы хотите включить помощник только для версии Rails3, вы можете использовать

# lib/my_gem.rb
require 'my_gem/railtie' if defined?(Rails::Railtie)
2 голосов
/ 26 апреля 2011

Вероятно, вы ищете двигатель .Движок - это драгоценный камень, содержащий элементы приложения rails (фактически, приложение rails само по себе является двигателем).

...