Как превратить модуль инициализатора Rails 3 в гем

Просто пытаюсь изучить некоторые основы создания драгоценного камня. Прямо сейчас я создал инициализатор, который выглядит как...

# config/initializers/fun_logger.rb
module FunLogger
  def fun_before_filter
    logger.info("\n\n\nGOT IT!\n\n\n")
  end
end

ActionController::Base.send(:include, FunLogger)

Это позволяет мне добавить следующее в мой ApplicationController, и он распечатает GOT IT! в журнале

before_filter :fun_before_filter 

Итак, несколько вещей, которые я пытаюсь выяснить.

Итак, чтобы создать из этого драгоценный камень...

  1. Я считаю, что должен настроить этот фильтр перед_фильтром каким-то другим способом, но не уверен, как это сделать.
  2. Я считаю, что этот инициализатор следует переместить в каталог lib и каким-то образом автоматически загрузить с помощью приложения rails.

Верны ли эти убеждения, и если да, то как мне поступить в этом случае?


person Altonymous    schedule 04.10.2012    source источник


Ответы (1)


Вы хотите проверить Railties. Это заставит ваш драгоценный камень запускать инициализатор или любые другие специфичные для Rails вещи, которые вы, возможно, захотите выполнить.

Что касается создания предварительного фильтра ... это, как правило, не лучшее решение, и по образцу трудно точно сказать, чего вы пытаетесь достичь. Более привычный для драгоценных камней способ добавить поведение в цикл запрос/ответ — добавить Стойка промежуточного ПО, которое оставляет пользовательские контроллеры в покое.

person willglynn    schedule 04.10.2012